Monty Pythons Flying Circus. Die Programmiersprache Python - was sie in der Schule leisten kann...

Preview:

Citation preview

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

Recommended