Pascal Schmidt 25. November 2010

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Frame-Logik Eine Einführung Andreas Glausch.
Einführung in die Programmierung Zusammenfassung
Kritische Betrachtung
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Objektorientierte Programmierung Definition von Klassen
Objektorientierte Datenbanken
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
Modularisierungstechniken
Einführung in die Programmierung mit Java
Java-AG Ausnahmebehandlung Gerhard Gröger.
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
DVG Klassen und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Java & Greenfoot Grundlagen.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Monty Python‘s Flying Circus
Delphi II - OOP IFB Fortbildung
Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Grundlagen der Programmierung
Proseminar Programmiersprachen Python
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
EPROG Tutorium #3 Philipp Effenberger
Dynamische Webseiten-Generierung
Einführung in PHP.
Einführung in PHP 5.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
PHP: Operatoren und Kontrollstrukturen
Objektorientierung.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Robuste Programme durch Ausnahmebehandlung
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Java Programme nur ein bisschen objektorientiert.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
1 Eine Einführung in die objektorientierte Programmierung.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen
Implementieren von Klassen
 Präsentation transkript:

Pascal Schmidt 25. November 2010 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 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!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, 18.10.2008 25.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil II

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

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

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

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

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

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

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?  25.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil II

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

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 …) 25.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil II

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!) 25.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil II

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

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

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): http://docs.python.org/ 25.11.2010 Pascal Schmidt: Die Programmiersprache Python – Teil II