1 / 33

Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil II)

Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil II). Pascal Schmidt 25. November 2010. The story so far…. Phyton ist mächtig, einfach, portabel, frei, erweiterbar, objektorientiert. Primitive Datentypen: (Plain/Long) Integer , und String

janna
Download Presentation

Die Programmiersprache Python - was sie in der Schule leisten kann (Einführung Teil II)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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. 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: 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. try-except-else • Bisher: FehlerExceptionProgrammabbruch! • 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 except Ausnahme: Code zur Fehlerbehandlung Mehrere except-Blöcke zum Abfangen verschiedener Fehler möglich. Pascal Schmidt: Die Programmiersprache Python – Teil II

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

  13. 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. 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: Codeblock Pascal Schmidt: Die Programmiersprache Python – Teil II

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

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

  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 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. 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 hastostay, in: Neopythonic, 18.10.2008 Pascal Schmidt: Die Programmiersprache Python – Teil II

  21. 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() Kunde_1 Konto_1 Konto_1.auszahlen() Pascal Schmidt: Die Programmiersprache Python – Teil II

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

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

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

  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 II

  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#) 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 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. 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. 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. Literatur • Martin Uzak(2002): Python 2.x, Das Einsteigerseminar, 384 S. • Python Dokumentation (insbesondere auch für Änderungen bei neueren Python-Versionen): http://docs.python.org/ Pascal Schmidt: Die Programmiersprache Python – Teil II

More Related