Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Pascal Schmidt 25. November 2010

Ähnliche Präsentationen


Präsentation zum Thema: "Pascal Schmidt 25. November 2010"—  Präsentation transkript:

1 Pascal Schmidt 25. November 2010
Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil II) Pascal Schmidt 25. November 2010

2 The story so far… Phyton ist mächtig, einfach, portabel, frei, erweiterbar, objektorientiert. Primitive Datentypen: (Plain/Long) Integer, und String Komplexe Datentypen: Liste(array) und Tuple, Assoziative Liste (dictionary), Set Für alle Datentypen Unmengen an vordefinierten brauchbaren Funktionen Blöcke durch gleichmäßige Einrückung. Nix da: pass! Boolean und Vergleichsoperatoren wie gehabt, aber: in Phyton hat alles einen Wahrheitswert. Kontrollstrukturen: if-elif-else, while-else, for-else (nützlich: range()-Fkt.) kein switch-Äquivalent. Definieren eigener Funktionen: def Name (Arg1,…ArgN): FunctBody Dynamische Typisierung!

3 Pascal Schmidt: Die Programmiersprache Python – Teil II
Gliederung 1. Getting started with Python Programmierbeispiel 2. Fehlerbehandlung ..mithilfe von Exceptions Arten von Ausnahmen try-except-else 3. Objektorientierte Programmierung Grundlegende Realisierung OOP in practice: Klasse(n)! Vererbung 4. GUI-Programmierung Vom Editor zur grafischen Oberfläche Pascal Schmidt: Die Programmiersprache Python – Teil II

4 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 – Versuch 1 Falsch eingerückt Pascal Schmidt: Die Programmiersprache Python – Teil II

5 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 – Versuch 2 Pascal Schmidt: Die Programmiersprache Python – Teil II

6 Pascal Schmidt: Die Programmiersprache Python – Teil II
Gliederung 1. Getting started with Python Programmierbeispiel 2. Fehlerbehandlung ..mithilfe von Exceptions Arten von Ausnahmen try-except-else 3. Objektorientierte Programmierung Grundlegende Realisierung OOP in practice: Klasse(n)! Vererbung 4. GUI-Programmierung Vom Editor zur grafischen Oberfläche Pascal Schmidt: Die Programmiersprache Python – Teil II

7 Fehlerbehandlung mit exceptions
Fehler während der Laufzeit löst Erzeugung eines Exception-Objekt aus, das Informationen über den Fehler enthält; anschließend Programmabbruch. Laufzeitfehler = eigentlich alle, außer Syntaxfehler. Diese müssen durch Syntaxkorrektur behoben werden, bevor Programm startet. Pascal Schmidt: Die Programmiersprache Python – Teil II

8 Fehlerbehandlung mit exceptions
Beispiel für das Erzeugen einer Exception: Ungültige arithmetische Operation (Division durch Null) Funktion wird ausgeführt und zur Laufzeit mit ZeroDivisionError abgebrochen. Frage für Füchse: Warum ist das ein Laufzeitfehler? Pascal Schmidt: Die Programmiersprache Python – Teil II

9 Arten von Laufzeitfehlern
Jede Fehlermeldung gibt an, wo es zum Fehler kam sowie Name und Argument der Exception Häufige Exceptions: Ausnahme Bedeutung NameError Zugriff auf nicht-existierende(n) Namen (= Variable) TypeError Anzahl/Typ der Argumente bei Funktionsaufruf unpassend, Indexierung von Liste/String mit String (wie bei Ass. Liste) AttributeError Zugriff auf eine nicht-existierende Methode IndexError Zugriff auf nicht-existierenden Index bei Liste/Tuple ImportError Zu importierendes Modul wird nicht gefunden KeyError Zugriff auf nicht-existierenden Index bei Assoziativer Liste Pascal Schmidt: Die Programmiersprache Python – Teil II

10 Arten von Laufzeitfehlern
Bereits gesehen: Python verwendet dynamische Typisierung. Einfach, aber deshalb auch fehleranfällig. Beispiel: Pascal Schmidt: Die Programmiersprache Python – Teil II

11 Pascal Schmidt: Die Programmiersprache Python – Teil II
try-except-else Bisher: Fehler Exception Programmabbruch! Mehr Flexibilität in der Fehlerbehandlung durch das try-except-Konstrukt. Syntax und Semantik: Was passiert, wenn im try-Block ein Fehler auftritt, der nicht explizit abgefangen wird? Falls exception geworfen wird, wird die entsprechende except-Anweisung ausgeführt. Kein Programmabbruch! try: Codeblock except Ausnahme: Code zur Fehlerbehandlung Mehrere except-Blöcke zum Abfangen verschiedener Fehler möglich. Pascal Schmidt: Die Programmiersprache Python – Teil II

12 Pascal Schmidt: Die Programmiersprache Python – Teil II
try-except-else Beispiel: Pascal Schmidt: Die Programmiersprache Python – Teil II

13 Pascal Schmidt: Die Programmiersprache Python – Teil II
try-except-else Beispiel – mit kritischen Anmerkungen: Hier verlieren wir Informationen über den Fehler an sich: Wurde für den Parameter zahl ein falscher Wert übergeben? Wurde für den Parameter name ein falscher Wert übergeben? Wurde in einer print-Methode das Umwandeln einer Zahl in einen String vergessen? Pascal Schmidt: Die Programmiersprache Python – Teil II

14 Pascal Schmidt: Die Programmiersprache Python – Teil II
try-except-else Zusätzliche Flexibilität durch else-Erweiterung. Wird ausgeführt, wenn keine der abgefangenen Ausnahmen aufgetreten ist. Syntax: Merke: Kein else ohne except. Beispiel try: a = 5 / 2 except: print(“something wrong“) else: print(“everything fine“) try: Codeblock except Ausnahme, Argument: Code zur Fehlerbehandlung else: Pascal Schmidt: Die Programmiersprache Python – Teil II

15 Pascal Schmidt: Die Programmiersprache Python – Teil II
try-except-else Bisher: Code aus try-Block oder zur Fehlerbehandlung wird ausgeführt. Mit finally geht beides! Syntax: Semantik: Der finally-Block wird auf jeden Fall ausgeführt, egal ob es im try-Block eine Exception gab oder nicht. Achtung: finally nicht in Kombination mit except oder else möglich. try: Codeblock finally: Pascal Schmidt: Die Programmiersprache Python – Teil II

16 Pascal Schmidt: Die Programmiersprache Python – Teil II
Gliederung 1. Getting started with Python Programmierbeispiel 2. Fehlerbehandlung ..mithilfe von Exceptions Arten von Ausnahmen try-except-else 3. Objektorientierte Programmierung Grundlegende Realisierung OOP in practice: Klasse(n)! Vererbung 4. GUI-Programmierung Vom Editor zur grafischen Oberfläche Pascal Schmidt: Die Programmiersprache Python – Teil II

17 Grundlegende OOP-Realisierung
Elemente: Klassen (Schablonen) Instanzen (konkretes Objekt, von einer Klasse abgeleitet) Attribute (Variablen einer Instanz) Methoden (Funktionen, die in einer Klasse definiert sind) Prinzip der Kapselung, Kommunikation zwischen verschiedenen Objekten erfolgt durch Methodenaufrufe. („Nachrichten“) Python realisiert Prinzip der Mehrfachvererbung Kunde_1 Konto_1 Kunde Konto Kunde_1.abheben() Konto_1.auszahlen() Klasse Instanz Methode Pascal Schmidt: Die Programmiersprache Python – Teil II

18 Pascal Schmidt: Die Programmiersprache Python – Teil II
Erzeugen von Klassen Syntax zur Definition einer Klasse: Klassen enthalten im Allgemeinen Funktionsdefinitionen, aber auch andere Anweisungen möglich Klassen erlauben Instanziierung und Attributreferenzen Beispiel: Pascal Schmidt: Die Programmiersprache Python – Teil II

19 Struktur einer typischen Klasse
Typischerweise enthält eine Klasse einen Konstruktor, der automatisch bei der Instanziierung aufgerufen wird (und die initiale Belegung der Attribute erledigt), sowie Methoden, die die Funktionalität der Instanzen bereitstellen. Beispiel: Pascal Schmidt: Die Programmiersprache Python – Teil II

20 Pascal Schmidt: Die Programmiersprache Python – Teil II
Besonderheiten Die Benennung ist beliebig – self ist jedoch übliche Konvention. Muss bei der Definition einer Funktion immer als erstes Argument stehen. Bezeichnet konkrete Instanz, mit der gerade gearbeitet wird Guido van Rossum: Why explicit self has to stay, in: Neopythonic, Pascal Schmidt: Die Programmiersprache Python – Teil II

21 Pascal Schmidt: Die Programmiersprache Python – Teil II
Besonderheiten Attribute der Klasse stehen im Konstruktor, nicht vorher aufgelistet! Ergänzen weiterer Attribute geht aber: Pascal Schmidt: Die Programmiersprache Python – Teil II

22 Das Kunden-Konto-Beispiel
Kunde_1.abheben() Konto_1.auszahlen() Pascal Schmidt: Die Programmiersprache Python – Teil II

23 Das Kunden-Konto-Beispiel
Testlauf: Pascal Schmidt: Die Programmiersprache Python – Teil II

24 Pascal Schmidt: Die Programmiersprache Python – Teil II
Einfache Vererbung Die abgeleitete Klasse erbt alle Methoden und Attribute der ableitenden Klasse Zusätzlich kann abgeleitete Klasse weitere Methoden und Attribute enthalten und/oder Methoden überschreiben Syntax: Beispiel: Class Name(Basisklasse): Code Testlauf: Pascal Schmidt: Die Programmiersprache Python – Teil II

25 Pascal Schmidt: Die Programmiersprache Python – Teil II
Mehrfache Vererbung Im Gegensatz zu JAVA unterstützt Python Mehrfachvererbung: Eine Klasse kann von mehreren Basisklassen erben. Abgeleitete Klasse erbt alle Attribute und Methoden von allen Basisklassen, überschreibt ggf. Methoden. Syntax: Problem: Was passiert, wenn mehrere Basisklassen eine gleichlautende Methode implementieren? Welche wird dann vererbt? Antwort: Die Auflistung der Basisklassen in der Klassendefinition erfolgt in aufsteigender Priorität: Es wird von der zuletzt aufgelisteten Klasse geerbt, die die Methode implementiert. Class Name(Basisklasse1,…,BasisklasseN): Code Pascal Schmidt: Die Programmiersprache Python – Teil II

26 Pascal Schmidt: Die Programmiersprache Python – Teil II
Gliederung 1. Getting started with Python Programmierbeispiel 2. Fehlerbehandlung ..mithilfe von Exceptions Arten von Ausnahmen try-except-else 3. Objektorientierte Programmierung Grundlegende Realisierung OOP in practice: Klasse(n)! Vererbung 4. GUI-Programmierung Vom Editor zur grafischen Oberfläche Pascal Schmidt: Die Programmiersprache Python – Teil II

27 GUI-Programmierung für die Schule?
Benutzen die GUI-Bibliothek Tkinter, die standardmäßig mit Python ausgeliefert wird: Simple and efficient! ( Zentrale Begriffe/Konzepte: Ein Widget ist ein grafisches Element, mit dem man GUIs erstellen kann (z.B. Labels, Textboxen,…) , realisiert in Python als Klasse. Der Layout-Manager wird in Tkinter als Methode des Widgets implementiert, und verwaltet dieses (Beispiel folgt). Vorgehen: Problem konventionell lösen (Editor) 2. Widgets erzeugen und anpassen 3. Funktionalität in Widgets einbauen 4. Endlosschleife, die Benutzeraktionen auswertet Alles klar?  Pascal Schmidt: Die Programmiersprache Python – Teil II

28 GUI-Programmierung am Beispiel
Aufgabe: Ausgabe „Hallo Pascal“ auf sys.stdout (GUI-Zusatz: Nach Betätigen eines entsprechenden Buttons) step 1: konventionelle Lösung als Funktion step 2: Widgets erzeugen und anpassen step 3: Funktionalität übergeben step 4: Endlosschleife starten Pascal Schmidt: Die Programmiersprache Python – Teil II

29 Pascal Schmidt: Die Programmiersprache Python – Teil II
Einfache Widgets Vielzahl an einfachen Widgets, einfache Syntax: Beispiele: Konfiguration der Widgets (Größe, Schriftart, Farbe,…) auch nachträglich noch möglich Syntax: Label mit Beschriftung Grafik Buttons Entries Radiobutton, Checkbutton Widget (Oberfläche, Optionen …) Pascal Schmidt: Die Programmiersprache Python – Teil II

30 Pascal Schmidt: Die Programmiersprache Python – Teil II
Layout Layout-Manager kümmert sich um die Darstellung der Widgets auf dem Bildschirm. Bisher lediglich: pack-Layout-Manager ohne große Funktionalität (nur pack() ). Allerdings: Selbst bei pack()-Funktion viele Optionen möglich: side: TOP, LEFT, BOTTOM , RIGHT fill: NONE, BOTH, X, Y expand: YES, NO Fazit: Einfach zu bedienen, nette Features, aber: noch zu unflexibel. Deutlich flexibler: grid-Layout-Manager. Verwaltet Widgets in einer 2D-Liste, die man als Tabelle vorstellen kann (Verschachtelung innerhalb einer Zeile ist möglich!) Pascal Schmidt: Die Programmiersprache Python – Teil II

31 Elaboriertes Beispiel mit grid-Layout
Pascal Schmidt: Die Programmiersprache Python – Teil II

32 Ausblick – es gibt auch noch…
…Oberflächen: Widgets, die Oberflächen erzeugen, auf denen weitere Widgets platziert werden können, z.B. Frame, Dialogfeld,… … Ereignisse: Reaktion auf Ereignisse (Benutzereingaben: Mausklick, Doppelklick, Eingabe eines Zeichens) wird durch die bind()-Methode der Widgets realisiert: Widget.bind(Ereignis, Funktion) … komplexere Widgets: Listbox, Text, Canvas, Scrollbar, Menu Mein Fazit: Schöne Spielereien, die sich mit vertretbarem Aufwand realisieren lassen! Euer Fazit? Pascal Schmidt: Die Programmiersprache Python – Teil II

33 Pascal Schmidt: Die Programmiersprache Python – Teil II
Literatur Martin Uzak(2002): Python 2.x, Das Einsteigerseminar, 384 S. Python Dokumentation (insbesondere auch für Änderungen bei neueren Python-Versionen): Pascal Schmidt: Die Programmiersprache Python – Teil II


Herunterladen ppt "Pascal Schmidt 25. November 2010"

Ähnliche Präsentationen


Google-Anzeigen