Einsatz der Programmiersprache Python in einem LK Informatik

Ähnliche Dokumente
Internet-Kommunikation in Python mit Sockets

Internet-Kommunikation in Python mit Sockets

Rechnernetze Übung 11

Rechnernetze Übung 11. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juni 2012

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Liste MI / Liste I Programmieren in C++

Programmierung Paradigmen und Konzepte

Objektorientierte Programmierung (OOP) in Python

Informatik Klasse 13, Foliensatz 2 Vererbung und Operatorfunktionen

Rainer Oechsle. Parallele und verteilte. Anwendungen in Java. 4., neu bearbeitete Auflage. Mit 165 Listings, 5 Tabellen und 71 HANSER

11. Komponenten Grundlagen der Programmierung 1 (Java)

Zentralabitur Informatik 2007 Erste Erfahrungen. Klaus Dingemann Bezirksregierung Münster, Dez. 43

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Kommunikation im Netzwerk

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Programmierkurs Python I

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine WWW

Workshop: Zentralabitur mit Python Vorgaben Realisierung

Praktikum Funktionale Programmierung Organisation und Überblick

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln

Objektorientierte Programmierung (OOP) in Python

den Zusammenhang von Information und Daten und verschiedenen Darstellungsformen von Daten verstehen,

Skriptsprachen: Python

1 Autorennen ( = 11 Punkte)

Informatik Name: Lösung Nr. 2 K1/K

Objektorientierte Programmierung OOP

Objektorientiertes Programmieren

Netzwerkprogrammierung unter Linux und UNIX

Objektorientierte Programmierung

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmiertechnik II WS 2017/18

Medienproduktion Sommersemester Dipl.-Inform. Alexander Schulze Prof. Dr. Ing. Klaus Rebensburg

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Programmieren 3. Programmieren in C und Python. Prof. Dr. Peter Barth. Hochschule RheinMain. Fachbereich Design Informatik Medien.

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Ergebnisse der Untersuchung zur Eignung einer Programmiersprache für die schnelle Softwareentwicklung kann der Informatikunterricht davon profitieren?

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Matthias-Claudius-Gymnasium Fachcurriculum Informatik

Programmierparadigmen

Informatik 1. für Kommunikationstechniker, Mechatroniker. Teil 1 - Wintersemester 2012/13

Programmierung mit sockets

Teil 2: OOP und JAVA (Vorlesung 11)

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Kontrollfragen: Internet

Praktikumsvorstellung

Induktion nach der Länge n von x

Teil VI. Objektorientierte Programmierung. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2016/

Programmierkurs für das modularisierte Lehramt. September 2011, 8. Vorlesung. Stuttgart, den 22. September Dr. Heiko Schulz.

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Stand: Semester: Dauer: Modulnummer: Minimaldauer 1 Semester IOBP. Regulär angeboten im: Modultyp: Pflicht WS, SS

WiMa-Praktikum 1. Woche 8

Teil VI. Objektorientierte Programmierung

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Alles außer Java! JVM-Sprachen sagen Happy Birthday

Netzwerk-Programmierung in C

Produktinformation CANoe.Ethernet

Verteilte Systeme - Java Networking (Sockets) -

Software-Entwicklung mit Delphi

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python.

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Inhaltsverzeichnis. Rainer Oechsle. Parallele und verteilte Anwendungen in Java ISBN: Weitere Informationen oder Bestellungen unter

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Informatik I. 19. Schleifen und Iteration für verlinkte Listen. Jan-Georg Smaus. Albert-Ludwigs-Universität Freiburg. 27.

Informatik I. Einführung in Java. Begrüßung. Zusatzveranstaltung

ALGOL 68 im Aspekt einer modernen Programmiersprache???

XT - NANO - XXL XT-NANO-XXL

Scratch im Anfangsunterricht

C++ Einführung und professionelle Programmierung. von Ulrich Breymann. 8., erweiterte Auflage. Hanser München 2005

Informatik 12 Kapitel 2 - Kommunikation und Synchronisation von Prozessen

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Informatik 2-stündig

Einführung in die Wirtschaftsinformatik

Logische Programmierung

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)

Gliederung der Folien

Objektorientiertes Programmieren II

Objektorientierte Programmierung Studiengang Medieninformatik

Informationsverarbeitung im Bauwesen

Aufbau & Analyse von Industrie-Netzwerken

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Klausur Rechnernetze

Übersicht Informatikfächer WiIng

Einführung in die Informatik

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen

Lehrstuhl 1 / Fakultät für Informatik. Haskell. Karsten Lettow

Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr

Parallele und verteilte Anwendungen in Java

Transkript:

Einsatz der Programmiersprache Python in einem LK Informatik Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20090525

Überblick Beschreibung des Kurses / Einführung von Python Eigenschaften von Python Python in diesem Kurs ausgewählte Themen: Objektorientierung Backtracking Endliche Automaten Kommunikation über die serielle Schnittstelle Threads und Nebenläufigkeit Socket-Programmierung Projekt Fazit Literatur M. Savorić 2

Beschreibung des Kurses / Einführung von Python 12. Klasse 10 motivierte Schüler Mehr als ein Jahr Programmiererfahrung in Delphi Diskussionen mit Kollegen (Hat Delphi Zukunft?) Lehrer entdeckte Python erneut nach fast 15 Jahren 2 Wochen Programmieren in Python als Appetitanreger Freie und geheime Abstimmung: 10 zu 0 für Python Heißt das nun: pro Python oder kontra Delphi? M. Savorić 3

Eigenschaften von Python Python: Wenige grundlegende Befehle, viele Bibliotheken Dynamisches Typsystem und Typprüfung zur Laufzeit Blockbildung durch Einrücken des Quelltextes (ein Traum für Lehrer!) Funktionen können 0, 1, 2, Rückgabewerte haben Besonderheiten: Listen, Langzahlarithmetik,... Programmiertechniken: imperativ, objektorientiert, funktional Python-Shell IDLE: Online -Programmierung zum Kennenlernen der Sprache bzw. für kleinere Tests Hilfesystem Eingebauter komfortabler Editor M. Savorić 4

Objektorientierung in Python Im Kurs bisher nur angerissen, da in Delphi bereits umfangreich objektorientiert programmiert worden ist Möglichkeiten in Python: Attribute und Methoden Polymorphie Überladen von Operatoren (==,!=, +, -, *, /, **, ) und Funktionen Eigene Klassen können nahtlos in Python eingebunden werden Beispiele: Rechteck-Klasse Baum-Klasse Vektor-Klasse M. Savorić 5

Objektorientierung in Python (Fortsetzung) Auszug aus der Vektor-Klasse: class Vektor: # class Vektor(object): def init (self, x = 0.0, y = 0.0, z = 0.0): self.x = x self.y = y self.z = z def eq (self, other): return self.x == other.x and self.y == other.y \ and self.z == other.z def add (self, other): v = Vektor() v.x = self.x+other.x v.y = self.y+other.y v.z = self.z+other.z return v M. Savorić 6

Backtracking in Python Beispiel: Dameproblem Stelle 8 Damen auf einem Schachbrett so auf, dass keine der Damen von einer anderen Dame bedroht wird. D - - - - - - - - - - - - - D - - - - - D - - - - - - - - - - D - D - - - - - - - - - D - - - - - - - - - D - - - - D - - - - - M. Savorić 7

Backtracking in Python (Fortsetzung) Weitere Aufgabenstellungen: Turmproblem Labyrinth Graphendurchwanderungen: alle bzw. kürzeste Wege BWINF 2008 / Aufgabe 3: Alle Alpen Schulung des rekursiven Denkens sehr nützlich für weitere Themen im Unterricht: Funktionales Programmieren in Haskell Grammatiken und Sprachen M. Savorić 8

Endliche Automaten in Python Zustände und Zustandsübergänge, eventuell Ausgaben Erstes Beispiel: Verschiedene Implementierungen der Übergänge: Matrix Listen (zentral oder dezentral für jeden Zustand) Durchwandern eines Automaten, diverse Ausgaben M. Savorić 9

Endliche Automaten in Python (Fortsetzung) Zweites Beispiel: Test auf Akzeptanz von Wörtern, (nicht) erreichbare Zustände, M. Savorić 10

Kommunikation über die serielle Schnittstelle in Python Verbindung zweier Rechner über ein Nullmodemkabel RTS- und CTS-Steuerleitung der seriellen Schnittstelle als Übertragungskanäle Sender: import serial sender = serial.serial(0)... sender.setrts(0)... sender.setrts(1)... sender.close() Empfänger: import serial empfaenger = serial.serial(0)... signal = empfaenger.getcts()... signal = empfaenger.getcts()... empfaenger.close() M. Savorić 11

Threads und Nebenläufigkeit in Python Wozu Threads? Interaktive Programme Zeitsteuerungen über exakte Timer Parallele Arbeiten Nebenläufigkeit kann zu Problemen führen: Verklemmungen Simultaner Zugriff auf gleiche Speicherplätze Threads in Python sind einfach anzuwenden! M. Savorić 12

Threads und Nebenläufigkeit in Python (Fortsetzung) Beispiel 1: interaktive Anwendung Oszilloskop (z.b. für das Testen der seriellen Kommunikation) Beispiel 2: Demonstration von Nebenläufigkeitsproblemen Threadtest 1 Threadtest 2 M. Savorić 13

Socket-Programmierung in Python Beispiel 1: DNS-Abfrage import socket text_adresse = raw_input("text-adresse: ") print "\nermittlung der IP-Adresse für den Rechner: %s" \ % (text_adresse) ip_adresse = socket.gethostbyname(text_adresse) print "\nip-adresse = %15s\n" % (ip_adresse) M. Savorić 14

Socket-Programmierung in Python (Fortsetzung) Beispiel 2: Daytime mit UDP import socket client_socket = socket.socket(socket.af_inet, socket.sock_dgram) daytime_server = "time.fu-berlin.de" client_socket.sendto("", (daytime_server, 13)) data, addr = client_socket.recvfrom(100) client_socket.close() del client_socket print data M. Savorić 15

Socket-Programmierung in Python (Fortsetzung) Beispiel 3: Daytime mit TCP import socket client_socket = socket.socket(socket.af_inet, socket.sock_stream) daytime_server = "time.fu-berlin.de" client_socket.connect((daytime_server, 13)) data = client_socket.recv(100) client_socket.close() del client_socket print data M. Savorić 16

Socket-Programmierung in Python (Fortsetzung) Eigene Dienste implementiert: Echo Zeichenzähler Dateitransfer E-Mail- Fälschen mit SMTP Bank (Kontostandsabfrage, Überweisungen, Lastschriften) Spiel (Zahlenraten) Weitere Aufgaben: Alternating-Bit-Protokoll (Quittungsbetrieb) Diverse Prüfsummen (Berechnung und Test) Hamming-Abstand eines Kodes M. Savorić 17

Projekt: Bundesjugendspiel-Verwaltungsprogramm Ergebniseingabe, -verwaltung und -ausgabe 4 Wochen Unterricht + 1 Projektwoche Datenbank + Python + CGI verteilte Anwendung Datenbank- und Objektmodell in einer Facharbeit Die Schüler und der Lehrer werden viel dabei lernen! M. Savorić 18

Fazit Python ist leicht zu lernen Besonderheiten von Python werden gerne angenommen Python ist betriebssystemunabhängig und kostenlos Python wird gepflegt und weiterentwickelt Umstieg auf Python kostet etwas Zeit, es lohnt sich aber! M. Savorić 19

Literatur G. Lingl, Python for Kids (3. Auflage), bhv, 2008. Offizielle Python-Dokumente (als PDF erhältlich) Internet-Recherche Für die Zukunft: M. Summerfield, Programming in Python 3, Addison Wesley, 2009 M. Savorić 20