Einführung in Python (1)



Ähnliche Dokumente
Java Kurs für Anfänger Einheit 5 Methoden

Programmierung in Python

Programmierkurs Java

Erwin Grüner

Beispiel 19. December 4, 2009

Kontrollstrukturen - Universität Köln

Sin-Funktion vgl. Cos-Funktion

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Grundlagen von Python

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

VBA-Programmierung: Zusammenfassung

Excel Funktionen durch eigene Funktionen erweitern.

Frankfurt am Main. Dortmund. Stuttgart. Düsseldorf

Prozedurale Datenbank- Anwendungsprogrammierung

Algorithmen und Programmieren II Einführung in Python

Einführung in die Programmierung

Programmieren Tutorium

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

Java Einführung Operatoren Kapitel 2 und 3

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

E-PRIME TUTORIUM Die Programmiersprache BASIC

Grundbegriffe der Informatik

Algorithmen mit Python

Java-Programmierung mit NetBeans

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Algorithmik und Programmieren

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Dr. Monika Meiler. Inhalt

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Software Engineering Interaktionsdiagramme

Python Programmieren. Variablen, Ausdrücke und Anweisungen

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Einführung in die Programmierung

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

5. Tutorium zu Programmieren

Einführung in die Programmiersprache Python

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Multimedia im Netz Wintersemester 2011/12

Übungen Programmieren 1 Felix Rohrer. Übungen

Tutorium Rechnerorganisation

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Objektorientierte Programmierung

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

I.1 Die Parrot Assemblersprache

Prozesse. Stefan Janssen. Alexander Sczyrba

Lua Grundlagen Einführung in die Lua Programmiersprache

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Objektorientierte Programmierung. Kapitel 12: Interfaces

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Programmieren in Haskell Einführung

Überblick. Lineares Suchen

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Schritt 1. Schritt 1. Schritt 3. - Analysieren des Problems und Spezifizierung einer Lösung.

SEP 114. Design by Contract

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Java Einführung Programmcode

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Scala kann auch faul sein

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Entwurf von Algorithmen - Kontrollstrukturen

Computeranwendung und Programmierung (CuP)

Gesicherte Prozeduren

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Programmierkurs Python I

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 1 Begegnung mit Python

1. Probeklausur zu Programmierung 1 (WS 07/08)

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Prinzipien der Softwareentwicklung S. Strahringer

C/C++ Programmierung

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Übersicht Programmablaufsteuerung

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

Kontrollstrukturen, Strukturierte Programmierung

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Funktionale Programmierung mit Haskell

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Objektorientierte Programmierung OOP

Programmierung in C. Grundlagen. Stefan Kallerhoff

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Python SVN-Revision 12

Einführung in die Programmierung

Transkript:

Kapitel 7: Einführung in Python (1) Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Die Programmiersprache Python Einfache Anweisungen Zuweisungen Eingabe Auswahl-Anweisung if-anweisung Wiederholungen for-schleife while-schleife Literatur M. Weigend. Objektorientierte Programmierung mit Python. MITP. 2006. J. Elkner and A. B. Downey. How to Think Like a Computer Scientist. Learning with Python 2nd Edition. http://www.ibiblio.org/obp/thinkcspy/ 1

Python höhere Programmiersprache eigentlich "VHLL" (very high-level language), http://en.wikipedia.org/wiki/very_high-level_programming_language interpretiert interaktive Benutzung möglich keine Compilierung notwendig umfasst mehrere Programmierparadigmen objektorientiert rein imperative/prozedurale Programmierung möglich Aspekte funktionale Programmierung einfach zu lernen Verzicht auf nicht unbedingt notwenige Sprachelemente plattformunabhängig Windows, Linux, Mac, Unix, Smart phones open source, nichtkommerziell benannt nach "Monty Python" und auch so ausgesprochen http://people.mandriva.com/~prigaux/language-study/ 2

Programmierung in Python Aspekte imperativer und prozeduraler Programmierung imperative Programmierung Programm ist Folge von Befehlen sukzessive Änderung des Speicherinhalts (Variablenwert) Typische Strukturen: Schleifen, bedingte Anweisungen Ein imperatives Programm sagt präzise: was (welche Anweisung), wann (Reihenfolge der Anweisungen) womit (Speicherplatz/Variable) zu geschehen hat. prozedurale Programmierung Mittel zur Strukturierung in (imperativen) Programmiersprachen Prozedur = Unterprogramm Aufruf mit Argumenten im Programm Ziel: Übersichtlichkeit; Wiederverwendbarkeit Python: Anweisungen print "Hallo" Variablen, Zuweisungen i = 5 if else for in : while Python: Aufruf von Funktionen abs(-5) Definition von Funktionen def fktname( ): Python im interaktiven Modus Python Interpreter in Konsole Windows: Start Programme Python 2.5 Python (command line) Python-Shell von IDLE IDLE: einfache Entwicklungsumgebung IDE = Integrated Development Environment z.b. Syntax Highlighting ERIC IDE http://www.riverbankcomputing.co.uk /pyqt/download.php viele Features für professionelle Softwareentwicklung die in dieser Vorlesung aber nicht benötigt werden 3

Zuweisungen Zuweisung Variable = Ausdruck Typ der Variable muss nicht deklariert werden! wie z.b. Java, C, C++, (etwa: int a = 1) Variable wird zur Laufzeit mit Typ des zugewiesenen Werts assoziiert dynamische Typisierung erweiterte Zuweisung Variable += Ausdruck Kurzform für: Variable = Variable + Ausdruck ebenso: -=, *=, /=, %= Variablen müssen vor ihrer Verwendung erzeugt worden sein sonst Fehlermeldung >>> a = 1 >>> a += 3 >>> print a 4 >>> type(a) <type 'int'> >>> a = "hello" >>> print a hello >>> type(a) <type 'str'> >>> x, y = 3.0, -2.0 >>> x, y = y, x >>> print x, y -2.0 3.0 >>> a = b Traceback (most recent call last): File "<pyshell#63>", line 1, in <module> a = b NameError: name 'b' is not defined Zuweisungen für mehrere Variablen Zuweisung desselben Werts an mehrere Variablen Variable1 = Variable2 = = Ausdruck Zuweisung unterschiedlicher Werte an mehrere Variablen Variable1, Variable2, = Ausdruck1, Ausdruck2, nützlich z.b. zum Austausch der Inhalte zweier Variablen in anderen Programmiersprachen wird dazu Hilfsvariable benötigt >>> a = b = c = -1.0 >>> a -1.0 >>> b -1.0 >>> c -1.0 >>> x, y = 3.0, -2.0 >>> x, y = y, x >>> print x, y -2.0 3.0 4

Variablenamen: Bezeichner (Identifier) Namen von Variablen, Funktionen, Klassen, bestehen aus Buchstaben, Ziffern, Underscore (_) Ziffer darf nicht am Anfang stehen wie in den den meisten anderen Programmiersprachen auch identifier ::= (letter "_") (letter digit "_")* EBNF letter ::= lowercase uppercase lowercase ::= "a"..."z" uppercase ::= "A"..."Z" digit ::= "0"..."9" Bsp: ungültige Variablennamen >>> 99Luftballons = "Hast du etwas Zeit für mich" SyntaxError: invalid syntax >>> more = 1000000 SyntaxError: invalid syntax >>> class = "Einfuehrung in die Informatik" SyntaxError: invalid syntax Schlüsselwörter Wörter mit spezieller Bedeutung sind reserviert können nicht als Bezeichner (Identifier) verwendet werden gibt es in allen Programmiersprachen in Python relativ wenige and del from not while as elif global or with assert else if pass yield break except import print class exec in raise continue finally is return def for lambda try 5

Namenswahl für Variablen Einige Tipps lesbare aber nicht zu lange Namen z.b. sum, value Hilfsvariablen, die man nur über kurze Strecken braucht, eher kurz: z.b. i, j, x Variablen, die man im ganzen Programm braucht, eher länger: z.b. inputtext mit Kleinbuchstaben beginnen, Worttrennung durch Großbuchstaben oder "_" z.b. inputtext, input_text Englisch oder Deutsch? Aufruf von Funktionen Funktion übernimmt i.a. Argumente (Parameter) als Eingabewerte manche Funktionen haben keine Eingabeparameter verarbeitet diese nach einem Algorithmus und liefert i.a. einen Wert zurück manche Funktionen liefern keinen Wert zurück Beispiele für Standardfunktionen von Python >>> ord("a") 65 >>> abs(-5) 5 >>> max([5,3,8,4]) 8 >>> len("abc") 3 6

Aufruf von Funktionen Format des Ausrufs: funktion(arg1, arg2, ) Funktionen akzeptieren i.d.r. nur eine bestimmte Anzahl von Argumenten Die übergebenen Argumente müssen von einem bestimmten Typ sein Beispiel: Standardfunktion len() Länge von Strings, Listen, Tupeln, Dictionaries Fehlerhafte Aufrufe len(1) 1 ist eine Zahl und besitzt keine Länge len("eins", "zwei") Die Funkion len() akzeptiert nur ein Argument Korrekte Aufrufe len("wort") 4 len([1,2,3,4]) 4 len("sha" + 4 * "la") 11 (Auswertung des Ausdrucks ergibt String) len( (1, 2, (3,4) ) ) 3 (Tupel mit 3 Elementen) Manche Funktionen akzeptieren eine variable Anzahl von Parametern z.b. min(1,2,3,4,5) 1 Methodenaufrufe Python: objektorientierte Sprache Methode = Funktion, die an Objekt gekoppelt ist Aufruf einer Methode: objektname.methodenname() ggfs Aufruf mit Parametern z.b. Methoden für Listen: reverse(), sort(), extend(), append(), remove(), In Python ist alles ein Objekt z.b. auch Integer allerdings sind Methoden hier versteckt und müssen i.d.r. nie direkt aufgerufen werden in C, C++, Java sind Integer u.a. primitive Datentypen, also keine Objekte >>> liste = [4,2,3,1] >>> liste.reverse() >>> liste [1, 3, 2, 4] >>> liste.sort() >>> liste [1, 2, 3, 4] >>> liste.extend([5,6]) >>> liste [1, 2, 3, 4, 5, 6] >>> liste.remove(3) >>> liste [1, 2, 4, 5, 6] >>> i = 2 >>> type(i) <type 'int'> >>> i. neg () -2 7

Eingabe Eingabe in der Python-Shell raw_input() Rückgabewert ist immer vom Typ String input() Typ des Rückgabewerts entsprechend Eingabewert >>> i = input("geben Sie eine Zahl ein: ") Geben Sie eine Zahl ein: 10 >>> print type(i), i + 1 <type 'int'> 11 >>> i = raw_input("geben Sie eine Zahl ein: ") Geben Sie eine Zahl ein: 10 >>> print type(i), i + 1 <type 'str'> Traceback (most recent call last): File "<pyshell#34>", line 1, in -toplevelprint type(i), i + 1 TypeError: cannot concatenate 'str' and 'int' objects >>> Interaktive Eingabe - Beispiele >>> name = raw_input("geben Sie Ihren Namen ein: ") Geben Sie Ihren Namen ein: Jung >>> print name Jung >>> type(name) <type 'str'> >>> zahl = raw_input("geben Sie einen Wert ein: ") Geben Sie einen Wert ein: 10 >>> print zahl 10 >>> type(zahl) <type 'str'> >>> zahl = input("geben Sie einen Wert ein: ") Geben Sie einen Wert ein: 10 >>> type(zahl) <type 'int'> >>> a = input() [1,2,3] >>> type(a) <type 'list'> >>> input("geben Sie einen Wert ein: ") Geben Sie einen Wert ein: 7 * 3 21 8

Kommentare in Python Programmzeilen, die mit '#' beginnen sind Kommentare # compute the percentage of the hour that has elapsed percentage = (minute * 100) / 60 Kommentare können auch in der Mitte von Programmzeilen beginnen percentage = (minute * 100) / 60 # caution: integer division Kommentare in Programmen dienen der Dokumentation des Codes Kommentare werden vom Python-Interpreter nicht ausgewertet Kommentare Sinnvoll kommentieren! alles kommentieren, was Erklärung bedarf statt unklares Programm mit Kommentar, besser klares Programm ohne Kommentar nicht kommentieren, was ohnehin schon im Programm steht; folgendes ist z.b. unsinnig zaehler += 1 # Zaehler inkrementieren Sprache in Kommentaren und Namen Deutsch + einfacher Englisch + meist kürzer + passt besser zu den englischen Schlüsselwörtern (if, while,...) + Programm kann international verteilt werden (z.b. über das Web) Jedenfalls: Deutsch und Englisch nicht mischen!! 9

If-Anweisung vgl. Programmablaufplan (Kap. 5) if ( <Bedingung> ): <Anweisungen> if ( <Bedingung> ): <Anweisungen> else: <Anweisungen> ja A1 B A2 nein Aufbau: if Schlüsselwort Bedingung kann zu True oder False evaluiert werden auch komplexe Bedingungen, z.b. verknüpft mit and if ( a > 5 ) and ( a < 10 ): Doppelpunkt Anweisungen, die ausgeführt werden, falls Bedingung gilt eingerückt! optionaler else-teil If-Anweisung - Beispiele if x > 0: print "x ist positiv" if x % 2 == 0: print x, "ist gerade" else: print x, "ist ungerade" 10

Verschachtelte if-anweisungen if x == y: print x, "and", y, "are equal" else: if x < y: print x, "is less than", y else: print x, "is greater than", y Entscheidungsbaum für Tiereraten if raw_input("can it fly? ") == 'y': print "bird" else: if raw_input("does it bark? ") == 'y': print "dog" else: print "cat" If-Anweisung, mehrfache Alternative elif Abk. für 'else if' beliebig viele elif-zweige möglich aber höchstens ein else else darf nur am Ende stehen if x == y: print x, "and", y, "are equal" elif x < y: print x, "is less than", y else: print x, "is greater than", y W1 B W2 sonst A1 A2 A3 if choice == 'A': functiona() elif choice == 'B': functionb() elif choice == 'C': functionc() else: print "Invalid choice." 11

for-schleife Muster: for <variable> in <sequenz>: <anweisungen> Beispiel: for i in ['a','b','c']: print i Aufbau von Schleifen for Schlüsselwort, Name der Anweisung Indexvariable i Name der Variable kann frei gewählt werden in Schlüsselwort, fester Teil der Anweisung Eine Sequenz bzw. Ausdruck der eine Sequenz liefert zur Erinnerung (Kap. 6 Datenstrukturen): Sequenz = Liste, String, oder Tupel Doppelpunkt ':' Rumpf der Schleife eingerückt for-schleife for <variable> in <sequenz>: <anweisungen> for i in ['a','b','c']: print i 1. Schleifendurchlauf: i = 'a' Ausgabe: a 2. Schleifendurchlauf: i = 'b' Ausgabe: b 3. Schleifendurchlauf: i = 'c' Ausgabe: c 12

for-schleife for <variable> in <sequenz>: <anweisungen> for i in [4,6,9]: print i 1. Schleifendurchlauf: i = 4 Ausgabe: 4 2. Schleifendurchlauf: i = 6 Ausgabe: 6 3. Schleifendurchlauf: i = 9 Ausgabe: 9 Die range()-funktion range()-funktion Signatur: range([start,] stop[, step]) -> list of integers Generierung von Listen mit Elementen zwischen den beiden Input- Parametern falls nur 1 Input-Parameter: impliziter Startwert 0 optionaler dritter Input-Parameter bestimmt Inkrement >>> print range(1,4) [1, 2, 3] >>> print range(-1,3) [-1, 0, 1, 2] >>> print range(5) [0, 1, 2, 3, 4] >>> print range(1,10,2) [1, 3, 5, 7, 9] 13

for-schleife Python-Variante: >>> for count in range(500): print "I will not throw paper airplanes in class." I will not throw paper airplanes in class. I will not throw paper airplanes in class. I will not throw paper airplanes in class. I will not throw paper airplanes in class. I will not throw paper airplanes in class. Verwendung von for mit range(): "Zählschleife" While-Schleifen Zweite Art der Schleifenprogrammierung in Python (neben- for) Format while Bedingung: Anweisungen Beispiel: Fibonacci-Zahlen < 100 >>> a, b = 0, 1 >>> while b < 100: print b, a, b = b, a+b B A ja nein 1 1 2 3 5 8 13 21 34 55 89 >>> 14

While-Schleife: Bsp. Quadratwurzel mit Newton-Methode Newton-Methode: In Mathematik Standardverfahren zur numerischen Lösung von nichtlinearen Gleichungen Idee: Nullstelle der Tangente als verbesserte Näherung der Nullstelle der Funktion zu verwenden. Iterative Näherung der Nullstellen von f d.h. f(x) = 0 für beliebige Funktionen: x n+1 = x n f(x n ) /f'(x n ) Iteration beenden wenn x n+1 -x n < ε z.b. Quadratwurzel von a: f(x) = x 2 -a x n+1 = (x n + a / x n ) / 2 >>> a = x = 2.0 >>> while abs(x-a/x) > 0.00000001: x = (x+a/x) / 2.0 print x 1.5 Quelle: Wikipedia 1.41666666667 1.41421568627 1.41421356237 While-Schleife: Bsp. Quadratwurzel mit Newton-Methode >>> a = x = 15.0 >>> while abs(x-a/x) > 0.00000001: 8.0 4.9375 3.98773734177 3.87463446793 3.87298369801 3.87298334621 x = (x+a/x) / 2.0 print x Beobachtung: Anzahl der Iterationen nicht von vorne hinein klar, i.ggs. etwa zur Zählschleife >>> a = x = 144.0 >>> while abs(x-a/x) > 0.00000001: x = (x+a/x) / 2.0 print x 72.5 37.2431034483 20.5547955554 13.7802299906 12.1149915067 12.0005457307 12.0000000124 12.0 15

Schleifen in Python In Python 2 Arten von Schleifen: for und while (abweisende Schleife) In anderen Programmiersprachen oft dritte Variante: do.. while (nicht abweisende Schleife) eigentlich würde nur eine Art der Schleife genügen! z.b. for durch while ersetzt: >>> i = 0 >>> while i < 500: print "I will not throw", print "paper airplanes in class." i += 1 B nein ja A abweisende Schleife A ja B nein I will not throw paper airplanes in class. nicht abweisende Schleife I will not throw paper airplanes in class. I will not throw paper airplanes in class. Endlosschleifen In meisten Fällen nicht erwünscht Abbruch: Konsolen-Fenster schließen, oder Tastenkombination Strg + c Bem: Manchmal sind Endlosschleifen durchaus erwünscht z.b. "main loop" in graphischen Benutzerschnittstellen >>> while True: print "endlos", endlos endlos endlos endlos endlos endlos endlos endlos endlos endlos endlos >>> while i!= 0: i = i - 0.2 print i, 0.8 0.6 0.4 0.2 5.55111512313e-017-0.2-0.4-0.6-0.8-1.0-1.2-1.4 ungewollte Endlosschleife verursacht durch mangelnde Genauigkeit von Gleitkommazahlen 16