Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann...
-
Upload
hrodrick-aebersold -
Category
Documents
-
view
115 -
download
1
Transcript of Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann...
Monty Python‘s Flying Circus
Die Programmiersprache Python - was sie in der Schule leisten kann
(Einführung Teil I)
Pascal Schmidt11. November 2010
Gliederung
1. Einführung Programmieren in der Schule Python – Fakten, Eigenschaften, Grundlegendes In der Schule: Warum Python (… und nicht Java)?
2. Python im Detail Datentypen Kontrollstrukturen Funktionen und Klassen
3. Getting started with Python
4. Ausgewählte weitere Aspekte Objektorientierung und funktionelles Programmieren …
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 3
Programmieren in der Schule
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 4
Programmieren in der Schule
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 5
(Lehrplan Informatik, Klasse 10, Achtjähriges Gymnasium im Saarlandhttp://www.saarland.de/dokumente/thema_bildung/INEinfphFeb2006.pdf)
Python – Eigenschaften und Grundlegendes
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 6
Entwicklung: Ursprünglich entwickelt vom niederländischen
Softwareentwickler Guido van Rossum am Forschungsinstitut CWI Entwicklungszeit: ca. 12/1989 – 02/1991 Aktuellste stabile Version: 3.1 (Release Nr. 35!), veröffentlicht 2009 Gehört inzwischen der non-profit-organization „Python Software
Foundation“
Entstehensbedingungen: Entstanden aus der Unzufriedenheit mit ABC (Erweiterbarkeit, high-level
Datentypen, error-handling, usw.), zusätzlich maßgeblich durch Modula-3 beeinflusst
Python – Eigenschaften und Grundlegendes
Ziele / Vorteile von Python:
Einfach, aufgrund prägnanter und leicht verständlicher Syntax, und dennoch mächtig
Übertragbar, nicht an eine spezielle Plattform gebunden. Interpretierte Skriptsprache, keine Kompilierung in plattformabhängigen Code und Linken von Unterprogrammen (ähnlich: Java. Im Gegensatz zu C/C++)
RAD (Rapid Application Development)-geeignet. Programme 3 Mal kürzer als in Java, bis zu 10 Mal kürzer als C/C++
Objektorientiert, aber auch andere Programmierparadigma möglich Fehlerbehandlung durch exceptions (ähnlich: Java. Im Gegensatz zu C) Freie Software Gute Erweiterbarkeit (um C/C++ Module , Java- und Perl-Bibliotheken)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 7
Warum Python (und nicht Java)?
Ein einfaches Programm zur Ausgabe „Hello world!“ – in Java:
Relativ viel Code erforderlich, aber noch überschaubar Allerdings: Was versteht der Anfänger unter „public“, „class“, „static“,….!?
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 8
?
Warum Python (und nicht Java)?
Ein einfaches Programm zur Ausgabe „Hello world!“ – in Python:
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 9
Gliederung
1. Einführung Programmieren in der Schule Python – Fakten, Eigenschaften, Grundlegendes In der Schule: Warum Python (… und nicht Java)?
2. Python im Detail Datentypen Kontrollstrukturen Funktionen
3. Getting started with Python
4. Ausgewählte weitere Aspekte Objektorientierung und funktionelles Programmieren …
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 10
Datentypen
Primitive Datentypen:
Integer (Ganzzahl) :
Fließkommazahl (float): ebenfalls in der Länge theoretisch unbeschränkt, Eingabe wie Integer, die Nachkommastellen durch einen Punkt abtrennen, z.B. 4.85
Zeichenkette (String): Wird gebildet, indem man Zeichenfolgen zwischen Apostrophe oder Anführungszeichen setzt, z.B. “einString“
Besonderheiten hinsichtlich Escape-Sequenzen, Unicode, usw.: Siehe Documentation (http://docs.python.org/index.html) oder Literaturliste (folgt)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 11
Plain Integer: begrenzter Wertebereich (32 Bit)
Long Integer: theoretisch unbeschränkt Unterscheidung: „suffix-L“, z.B. 45L
Datentypen
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 12
Operatoren/Funktionen für Primitive Datentypen:Python stellt eine ganze Reihe vordefinierter Operatoren/Funktionen zur Verfügung, um mit den primitiven Datentypen arbeiten zu können:
Die üblichen Zahloperatoren: {+, -, *, /, %(Modulo), **(Potenz) }Weitere nützliche Funktionen: pow(i, j) entspricht i**j
cmp(x,y)Für Strings im Wesentlichen: Verkettungsoperator +
Len()-Funktion zur Ermittlung der Länge eines Strings
Datentypen
Komplexe Datentypen:
1) Listen (Arrays) „Kette primitiver Datentypen“ , Erzeugungsschema:
ArrayName = [El1,EL2,…,ElN]
Zugriff mittels Identifikator und Index.
Viele nützliche, vordefinierte (u. selbsterklärende) Methoden:append(x), count(x), index(x), insert(i,x), remove(x), pop([i]), reverse(), len(array)
Details: siehe documentation (http://docs.python.org/tutorial/datastructures.html)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 13
Datentypen
Komplexe Datentypen:
1) Listen (Arrays)
Keine Unterscheidung zwischen Liste und (fixem) Array wie in JAVATM
Spezialkonstrukte (z.B. FIFO/Keller-Speicher) lassen sich leicht realisieren
Eine nützliche Funktion (z.B. bei for-Schleifen in Kombination mit der len()-Funktion): range(Anfang, Ende, Schritt)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 14
Datentypen
Komplexe Datentypen:
2) Assoziative Listen (Dictionary)
Sammlung von Schlüssel(key) – Wert(value) Paaren. Syntax zur
Erzeugung: dictionary = {key:value, key1:value1,…,keyN:valueN}
Zugriff auf die Liste nach dem Schema Dictionary[Schlüssel]:
Selbsterklärende, vordefinierte Funktionen für Dictionarys: items(), keys(), values(), has_key(k)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 15
Datentypen
Komplexe Datentypen:
2) Assoziative Listen (Dictionary) Erzeugte Dictionarys lassen sich mit der Funktion update(dic)
verändern. Effekt: neue Einträge aus dic werden übernommen, bereits existierende mit gleichem Schlüssel überschrieben
Element löschen: del(Dictionary[Schlüssel]) Anzahl der Elemente bestimmen: len(Dictionary)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 16
Datentypen
Komplexe Datentypen:
3) Weitere Datentypen (Auswahl) Tuples (read only list) Set Frozenset (read only set) … Weitere Details: http://docs.python.org/library/stdtypes.html#
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 17
Kontrollstrukturen
1) Blöcke Kontrollstrukturen bestehen häufig aus mehreren Anweisungen, die in
Blöcken zusammengefasst werden. (In Java: Mithilfe von Klammerung) Code-Beispiel JAVA:
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 18
Korrekt und übersichtlich korrekt und unübersichtlich
Python erzwingt eine übersichtliche Darstellung indem Blöcke durch gleichmäßiges Einrücken der einzelnen Anweisungen gebildet werden.
Kontrollstrukturen
2) Boolesche Ausdrücke und Vergleichsoperatoren
Wahrheitswerte „wahr“ und „falsch“, dargestellt durch 1 und 0. Mittels Vergleichsoperatoren (<, <=, >, >=, ==, !=) und logischen
Operatoren (not, or, and) lassen sich boolesche Ausdrücke bilden, die zu 0 oder 1 evaluieren
Allerdings haben in Python auch andere Werte Wahrheitswerte: None, 0, leere Sammlungen und assoziative Listen evaluieren zu 0Alle anderen Werte evaluieren zu 1
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 19
Kontrollstrukturen
3) If - Anweisung
Allgemeine Syntax: if Ausdruck:
Aktion(en)elif Ausdruck:
Aktion(en)else:
Aktion(en) Beispiel:
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 20
elif- und else-Klausel optional
Kontrollstrukturen
3) while - Schleife
Allgemeine Syntax: while Ausdruck:
Aktion(en)else:
Aktion(en) Beispiel:
Frage für Füchse: Wozu die else-Klausel in der while-Schleife?
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 21
else-Klausel optional, wird ausgeführt wenn Bedingung nicht erfüllt ist
Kontrollstrukturen
3) for - Anweisung
Allgemeine Syntax: for Name in Sammlung:
Aktion(en)else:
Aktion(en) Erklärung: Iteration über alle Elemente in der Sammlung. Pro Durchlauf
wird dem Namen genau ein Element aus der Sammlung zugeordnet.
Beispiel: for a in “hello“:print(a)
else:print(“world“)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 22
else-Klausel optional, wird ausgeführt wenn Iteration vollständig durchgeführt
Ausgabe?
Kontrollstrukturen
3) for - Anweisung Das versprochene Beispiel für das sinnvolle Zusammenwirken der range()-
und len()-Funktionen in einer for-Schleife:
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 23
Kontrollstrukturen
4) Sprunganweisungen Steuerung der Ausführung einer Schleife (while oder for), um diese
entweder verlassen zu können oder zur nächsten Iteration zu springen Realisierung: break und continue (analog zu JAVA). Beide Anweisungen im Einsatz:
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 24
Funktionen
1) Definition eigener Funktionen Allgemeine Syntax:
def Name (Arg1,…,ArgN):
„docstring“FunctBody
Funktionen haben Rückgabewerte! Wird nicht explizit eine Rückgabe angegeben, erfolgt eine implizite Rückgabe von None.
Explizite Rückgabe: return Mit der return-Anweisung wird die Funktion beendet. Der return-Wert wird ausgegeben oder kann als Wert in eine andere Funktion eingehen.
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 25
Argumente ohne Typangabe
Funktionen
2) Funktionen mit variabler Argumentenliste – 1. Möglichkeit Bietet sich an, falls Anzahl der (gleichartigen) Argumente, mit der die
Funktion aufgerufen wird, nicht klar ist. Syntax: Parameter, dem mehrere Werte (als Tupel) zugeordnet werden mit
einem (*) kennzeichnen. Beispiel:
def alleBegruessen (anrede, *leute):
if len(leute) == 0:print(„keiner da!“)return
for anybody in leute:print(anrede+anybody)
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 26
Funktionen
3) Funktionen mit variabler Argumentenliste – 2. Möglichkeit Bietet sich an, falls Anzahl der (gleichartigen) Argumente, mit der die
Funktion aufgerufen wird, nicht klar ist und Argumente im Dictionary-Format übergeben werden sollen
Syntax: Parameter, dem mehrere Werte (als Tupel) zugeordnet werden mit einem (**) kennzeichnen.
Beispiel:def alleBegruessen2 (**args):
if len(args) == 0: returnfor name in args.keys():
print(args[name]+“ “+name+“!“)
Was liefert alleBegruessen2(Martin=„Tag“, Peter=„Grüß Gott“)?
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 27
Funktionen
4) No lunch for free theorem – Leere Blöcke?
In JAVA geht das ohne Probleme:
In Python: Blöcke entstehen durch Einrücken. Wie rückt man etwas ein, was gar nicht existiert?
Eigens dafür gibt es die pass-Anweisung. Damit kann man in Definitionen, Schleifen, if-Anweisungen, usw. das „Nichtstun“ simulieren:
def doNothing():pass
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 28
Gliederung
1. Einführung Programmieren in der Schule Python – Fakten, Eigenschaften, Grundlegendes In der Schule: Warum Python (… und nicht Java)?
2. Python im Detail Datentypen Kontrollstrukturen Funktionen
3. Getting started with Python
4. Ausgewählte weitere Aspekte Objektorientierung und funktionelles Programmieren …
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 29
Getting started with Python
UNIX-Systeme: Python häufig vorinstalliert. Testen: Auf Kommandozeile (Konsole) python eingeben
Ansonsten Download der Version 3.1: http://www.python.org/download/
Verfügbar als Windows Installer und source tarball für LINUX
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 30
Getting started with Python
Ausführungsmodi 1. Möglichkeit: Python-Interpreter im interaktiven Modus. Eingabe wird
sofort als Befehl interpretiert Schnellste Variante, allerdings ungeeignet für „ernsthafte Programme“ Aufruf aus Windows: Eingabeaufforderung oder aus Python-Verzeichnis
„Python (command line)“
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 31
Getting started with Python
Ausführungsmodi 2. Möglichkeit: Anweisungen im Editor schreiben und als Datei mit Endung
.py abspeichern (Python-Skripte). Editor beliebig. Keine zusätzliche Syntax im Vergleich zum direkten
Interpreter Einsatz notwendig. Ausführen eines Skriptes: Doppelklick auf entsprechende Datei oder (in
der Eingabeaufforderung) aus Verzeichnis Aufruf python Dateiname
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 32
Getting started with Python
IDLE – Entwicklungsumgebung für Python Ist bereits im Python-Package enthalten Start unter UNIX: [~]$ /usr/src/Python-3.1/Tools/idle/idle.py Start unter Windows: Im Python-Ordner „IDLE (Python GUI)“ auswählen
Nicht so kompliziert wie Eclipse, intuitiv zu bedienen. Skripte schreiben, speichern, ausführen und laden direkt aus IDLE möglich.
Sehr gut geeignet für Windows-Benutzer, auch zu Debugging-Zwecken.
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 33
Getting started with Python
Zum Ausprobieren: Schreibt eine Funktion, die für eine Zahl n bestimmt, ob es sich um eine
Primzahl handelt. Falls nicht, soll eine Zerlegung von n angegeben werden. Lösung:
11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 34