Python im Informatikunterricht Lernumgebung Stifte und Muse mit
Python im Informatikunterricht Lernumgebung Stifte und Mäuse mit Python Grundlagen zur Arbeit mit Python und Su. M Universität Dortmund, Ingo Linkweiler, -1 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse WH: Stifte und Mäuse= Objektorientierte Lernumgebung mit vordefinierte Klassen: Anwendung Bildschirm Stift Maus Tastatur Buntstift Universität Dortmund, Ingo Linkweiler, -2 - Ereignisanwendung
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Beispiele Python = Interpreter = Interaktiv Arbeiten mit Python Interaktiv im Interpreter Text-Editor Universität Dortmund, Ingo Linkweiler, -3 - Integrierte Umgebungen
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Python-Interaktiv > python Python 2. 2. 2 (#37, Oct 14 2002, 17: 02 Type "help", "copyright", "credits" Starten des Interpreters >>> from sum import * Import der Bibliothek >>> bild=Bildschirm() >>> maus=Maus() >>> stift=Stift() Erzeugen von Instanzen >>> stift. runter() >>> stift. bewege. Bis(100, 100) >>>. . Aufrufen von Methoden Universität Dortmund, Ingo Linkweiler, -4 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Grundlagen zum Arbeiten mit Python Variablen / Wertzuweisungen • Dynamik: Variablen müssen nicht deklariert werden • Typ wird bei Zuweisung festgelegt. Beispiel: >>> zahl=1 >>> preis=5. 98 >>> name="Thomas" Universität Dortmund, Ingo Linkweiler, -5 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Operatoren ( +, -, *, / ) == != oder <> <, <=, >, >= not, or, and für Addition, Subtraktion, Multiplikation, Division für Vergleiche auf Gleichheit für Vergleiche auf Ungleich für weitere Vergleiche >>> print 2*(3+4) 14 Universität Dortmund, Ingo Linkweiler, -6 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Fallunterscheidungen Anweisungsblöcke müssen eingerückt werden !!! if x<0: print "x ist negativ" elif x==0: print "x ist Null" else: print "x ist positiv" Universität Dortmund, Ingo Linkweiler, -7 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Schleifen x=1 while x<10: x=x+1 Einrücken ! Universität Dortmund, Ingo Linkweiler, -8 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Objekte und Methoden bild=Bildschirm() stift=Buntstift() Name der Klasse. Methode (Nachricht) stift. runter() stift. bewege. Bis(100, 150) stift. hoch() Universität Dortmund, Ingo Linkweiler, -9 - Parameter
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Ausprobieren ! Ein kleiner Kreis (o. a. ) soll solange an der Mausposition gezeichnet werden, bis die Maustaste gedrückt wird. Ideen für Erweiterungen: Tastendruck wechselt Farbe, Größe o. a. Universität Dortmund, Ingo Linkweiler, -10 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse OOP mit Python Klasse: Modell, vereinfachte Darstellung von realen Dingen. Beschreibung durch Attribute (Eigenschaften) und Methoden (Aufträge und Anfragen) In Python: • Automatische Objekt- und Speicherverwaltung • Keine „Destruktoren“ nötig • Dynamik: Keine Deklarationen von Variablen und Attributen erforderlich • Alle Parameter polymorph • keine Zeiger (Pointer) Zeitersparnis ! Universität Dortmund, Ingo Linkweiler, -11 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse OOP mit Python Klasse: Beschreibung durch Attribute (Eigenschaften) und Methoden (Aufträge und Anfragen) class Person: def __init__(self, name): self. name=name def setze. Adr(self, adresse): self. adresse=adresse self ist immer erster Parameter, gefolgt von weiteren optionalen Parametern Attribute innerhalb der Klasse werden mit self notiert. Dynamische Typisierung def daten. Ausgeben(self): print self. name, self. adresse def lies. Adresse(self): return self. adresse Rückgaben mit return Universität Dortmund, Ingo Linkweiler, -12 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse OOP mit Python class Person: def __init__(self, name): self. name=name p=Person("Heinz") def setze. Adr(self, adresse): self. adresse=adresse p. setze. Adr("Dortmund") def daten. Ausgeben(self): print self. name, self. adresse p. daten. Ausgeben() def lies. Adresse(self): return self. adresse Heinz Dortmund print p. lies. Adresse() Dortmund Universität Dortmund, Ingo Linkweiler, -13 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Workshop-Projekt: Realisierung des Spieleklassikers Pong! Klasse Buntball: Klasse Tennisball: Klasse Spieler: Darstellung eines farbigen, bewegbaren Balls Erweiterung des Balls um Methoden für Richtungswechsel und Spielfeldbegrenzung Darstellung eines bewegbaren Spielers Kollisionstest mit Ball __init__() gib. Frei() setze. Farbe(farbe) zeichne() bewege. Bis(h, v) im. Spielfeld() nach. Rechts() nach. Links() schneller() zeichne() bewegehoch() bewegerunter() trifft(ball) Universität Dortmund, Ingo Linkweiler, -14 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Python Werkzeuge • Python Win / Active Python • IDLE • Große, freie Internet-Bibliotheken • CGI • Boa (Wie Delphi) • Zope • Wing. Ide • Apache • Py. Nassi • Niki / Karel der Roboter • Turtle • Gato Universität Dortmund, Ingo Linkweiler, -15 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Python Features • Listen • Tupel • Hashes • Strings • Dynamik • gute Lesbarkeit • leicht erlernbar • kostenlos Universität Dortmund, Ingo Linkweiler, -16 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Diskussion Ingo Linkweiler www. ingo-linkweiler. de/diplom i. linkweiler@gmx. de www. python. org Universität Dortmund, Ingo Linkweiler, -17 -
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Python-Syntax: integrierte Datentypen >>> >>> zahl = 3. 141 tupel = (7, 42) text = 'Hallo. ' print text*2 Dynamische Typisierung Hallo. >>> komplex = complex(5, -2) >>> hash = {1: 'abc', 2: 'def' >>> liste = [0, 1, 2, 3, 4, 5] >>> print liste[2: 5] [2, 3, 4] } Notation für erweiterte Datentypen >>> print liste[: 3] [0, 1, 2] for i in liste: tuwas(i) Diplomarbeit, Universität Dortmund, Ingo Linkweiler, -18 -
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Stifte & Mäuse: Java. . . . vs. . . . Python public class Rechteck. Programm 4 { //Deklarationsteil private Bildschirm bildschirm; private Stift stift; private Maus maus; public void fuehre. Aus() { bildschirm=new Bildschirm(); stift = new Stift(); maus = new Maus(); stift. hoch(); stift. bewege. Bis(20, 20); stift. zeichne. Rechteck(100, 100); while (!maus. ist. Gedrueckt()){; } maus. gib. Frei(); maus=null; stift. gib. Frei(); stift=null; bildschirm. gib. Frei(); bildschirm=null } } bildschirm = Bildschirm() stift = Stift() maus = Maus() stift. hoch(); stift. bewege. Bis(20, 20) stift. zeichne. Rechteck(100, 100) while not maus. Ist. Gedrueckt(): pass maus. Gib. Frei() stift. Gib. Frei() bildschirm. Gib. Frei() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, -19 -
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einfach zum Ziel - Java vs. Python Static? Public? Args? Void? Java class Hello. World { public static void main(String[] args) { System. out. println("Hallo Welt. "); } } Python print 'Hallo Welt. ' Diplomarbeit, Universität Dortmund, Ingo Linkweiler, -20 -
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Pascal vs. Python Pascal Python program Test; var i: integer; i: =0; begin while i<10 do ; begin i: =i+1; writeln(i); end; writeln('fertig. '); ? Keine Deklaration u. Zeilentrenner, Blockbildung durch Einrücken i=0 while i<10: i=i+1 print i print 'Fertig. ' end. Diplomarbeit, Universität Dortmund, Ingo Linkweiler, -21 -
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Schnelle Entwicklung = Baukastenprinzip aus der Prototypentwicklung & Spielwarenabteilung. Idee: Kombination fertiger Bausteine / Komponenten zu etwas Neuem. Beispiel: Lesen einer Webseite per HTTP: import urllib datei = urllib. urlopen("http: //www. uni-dortmund. de") text = datei. read() datei. close() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, -22 -
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Beispiel: E-Mail versenden. import smtplib def eingabe(prompt): return raw_input(prompt). strip() smtphost fromaddr toaddrs subject msgtext = = = eingabe("Adresse des Mailservers: ") eingabe("Von. . . . : ") eingabe("An. . : ") eingabe("Betreff. . : ") eingabe("Nachricht. . : ") # Erzeuge den Mail-Header msg = ("From: %srn To: %srn Subject: %srn" % (fromaddr, toaddrs, subject) ) # Nachricht anhängen msg = msg + msgtext server = smtplib. SMTP(smtphost) server. sendmail(fromaddr, toaddrs, msg) server. quit() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, -23 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Diplomarbeit Universität Dortmund, Ingo Linkweiler, -24 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Diskussion Universität Dortmund, Ingo Linkweiler, -25 -
Python im Informatikunterricht Lernumgebung Stifte und Mäuse Umfrage zur Lesbarkeit Universität Dortmund, Ingo Linkweiler, -26 -
- Slides: 26