350 likes | 474 Views
Monty Python‘s 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
E N D
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 • … Pascal Schmidt: Die Programmiersprache Python – Teil I
Programmieren in der Schule Pascal Schmidt: Die Programmiersprache Python – Teil I
Programmieren in der Schule (Lehrplan Informatik, Klasse 10, Achtjähriges Gymnasium im Saarland http://www.saarland.de/dokumente/thema_bildung/INEinfphFeb2006.pdf) Pascal Schmidt: Die Programmiersprache Python – Teil I
Python – Eigenschaften und Grundlegendes 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 Pascal Schmidt: Die Programmiersprache Python – Teil I
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) Pascal Schmidt: Die Programmiersprache Python – Teil I
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“,….!? ? Pascal Schmidt: Die Programmiersprache Python – Teil I
Warum Python (und nicht Java)? Ein einfaches Programm zur Ausgabe „Hello world!“ – in Python: Pascal Schmidt: Die Programmiersprache Python – Teil I
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 • … Pascal Schmidt: Die Programmiersprache Python – Teil I
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) Plain Integer: begrenzter Wertebereich (32 Bit) Long Integer: theoretisch unbeschränkt Unterscheidung: „suffix-L“, z.B. 45L Pascal Schmidt: Die Programmiersprache Python – Teil I
Datentypen 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 Pascal Schmidt: Die Programmiersprache Python – Teil I
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) Pascal Schmidt: Die Programmiersprache Python – Teil I
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) Pascal Schmidt: Die Programmiersprache Python – Teil I
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) Pascal Schmidt: Die Programmiersprache Python – Teil I
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) Pascal Schmidt: Die Programmiersprache Python – Teil I
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# Pascal Schmidt: Die Programmiersprache Python – Teil I
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: 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. Pascal Schmidt: Die Programmiersprache Python – Teil I
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 0 Alle anderen Werte evaluieren zu 1 Pascal Schmidt: Die Programmiersprache Python – Teil I
Kontrollstrukturen 3) If - Anweisung • Allgemeine Syntax: if Ausdruck: Aktion(en) elif Ausdruck: Aktion(en) else: Aktion(en) • Beispiel: elif- und else-Klausel optional Pascal Schmidt: Die Programmiersprache Python – Teil I
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? else-Klausel optional, wird ausgeführt wenn Bedingung nicht erfüllt ist Pascal Schmidt: Die Programmiersprache Python – Teil I
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“) else-Klausel optional, wird ausgeführt wenn Iteration vollständig durchgeführt Ausgabe? Pascal Schmidt: Die Programmiersprache Python – Teil I
Kontrollstrukturen 3) for - Anweisung • Das versprochene Beispiel für das sinnvolle Zusammenwirken der range()- und len()-Funktionen in einer for-Schleife: Pascal Schmidt: Die Programmiersprache Python – Teil I
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: Pascal Schmidt: Die Programmiersprache Python – Teil I
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. Argumente ohne Typangabe Pascal Schmidt: Die Programmiersprache Python – Teil I
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: defalleBegruessen (anrede, *leute): if len(leute) == 0: print(„keiner da!“) return for anybody in leute: print(anrede+anybody) Pascal Schmidt: Die Programmiersprache Python – Teil I
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: return for name in args.keys(): print(args[name]+“ “+name+“!“) • Was liefert alleBegruessen2(Martin=„Tag“, Peter=„Grüß Gott“)? Pascal Schmidt: Die Programmiersprache Python – Teil I
Funktionen 4) No lunch for freetheorem – 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: defdoNothing(): pass Pascal Schmidt: Die Programmiersprache Python – Teil I
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 • … Pascal Schmidt: Die Programmiersprache Python – Teil I
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 Pascal Schmidt: Die Programmiersprache Python – Teil I
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 (commandline)“ Pascal Schmidt: Die Programmiersprache Python – Teil I
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 Pascal Schmidt: Die Programmiersprache Python – Teil I
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. Pascal Schmidt: Die Programmiersprache Python – Teil I
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: Pascal Schmidt: Die Programmiersprache Python – Teil I