Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil II) Pascal Schmidt 25. November 2010."—  Präsentation transkript:

1 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 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 II3

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

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 Pascal Schmidt: Die Programmiersprache Python – Teil II5

6 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 II6

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 II7

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 II8

9 Arten von Laufzeitfehlern Jede Fehlermeldung gibt an, wo es zum Fehler kam sowie Name und Argument der Exception Häufige Exceptions: Pascal Schmidt: Die Programmiersprache Python – Teil II9 AusnahmeBedeutung NameErrorZugriff auf nicht-existierende(n) Namen (= Variable) TypeErrorAnzahl/Typ der Argumente bei Funktionsaufruf unpassend, Indexierung von Liste/String mit String (wie bei Ass. Liste) AttributeErrorZugriff auf eine nicht-existierende Methode IndexErrorZugriff auf nicht-existierenden Index bei Liste/Tuple ImportErrorZu importierendes Modul wird nicht gefunden KeyErrorZugriff auf nicht-existierenden Index bei Assoziativer Liste

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

11 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? Pascal Schmidt: Die Programmiersprache Python – Teil II11 try: Codeblock except Ausnahme: Code zur Fehlerbehandlung except Ausnahme: Code zur Fehlerbehandlung Falls exception geworfen wird, wird die entsprechende except-Anweisung ausgeführt. Kein Programmabbruch! Mehrere except-Blöcke zum Abfangen verschiedener Fehler möglich.

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

13 try-except-else Beispiel – mit kritischen Anmerkungen: Pascal Schmidt: Die Programmiersprache Python – Teil II13 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?

14 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 Pascal Schmidt: Die Programmiersprache Python – Teil II14 try: Codeblock except Ausnahme, Argument: Code zur Fehlerbehandlung else: Codeblock Beispiel try: a = 5 / 2 except: print(something wrong) else: print(everything fine)

15 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 Pascal Schmidt: Die Programmiersprache Python – Teil II15 try: Codeblock finally: Codeblock

16 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 II16

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 Pascal Schmidt: Die Programmiersprache Python – Teil II17 Kunde_1Konto_1 KundeKonto Kunde_1.abheben() Konto_1.auszahlen() Klasse Instanz Methode

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

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 II19

20 Besonderheiten Pascal Schmidt: Die Programmiersprache Python – Teil II20 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, Why explicit self has to stay

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

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

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

24 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: Pascal Schmidt: Die Programmiersprache Python – Teil II24 Class Name(Basisklasse): Code Testlauf:

25 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 Pascal Schmidt: Die Programmiersprache Python – Teil II25 Class Name(Basisklasse1,…,BasisklasseN): Code …

26 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 II26

27 GUI-Programmierung für die Schule? Benutzen die GUI-Bibliothek Tkinter, die standardmäßig mit Python ausgeliefert wird: Simple and efficient! (http://docs.python.org/library/tkinter.html#)http://docs.python.org/library/tkinter.html# 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: 1. 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 II27

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 II28

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

30 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 II30

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

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 II32

33 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 II33


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

Ähnliche Präsentationen


Google-Anzeigen