34
Monty Python‘s Flying Circus

Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

Embed Size (px)

Citation preview

Page 1: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

Monty Python‘s Flying Circus

Page 2: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

Die Programmiersprache Python - was sie in der Schule leisten kann

(Einführung Teil I)

Pascal Schmidt11. November 2010

Page 3: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. 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

Page 4: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

Programmieren in der Schule

11.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil I 4

Page 5: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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)

Page 6: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 7: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 8: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

?

Page 9: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 10: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. 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

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

Page 11: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 12: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 13: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 14: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 15: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 16: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 17: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 18: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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.

Page 19: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 20: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 21: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 22: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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?

Page 23: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 24: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 25: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 26: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 27: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 28: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 29: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. 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

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

Page 30: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 31: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 32: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 33: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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

Page 34: Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil I) Pascal Schmidt 11. November 2010

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