Programmierung in Python



Ähnliche Dokumente
Erwin Grüner

Java-Programmierung mit NetBeans

Objektorientierte Programmierung

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

5. Tutorium zu Programmieren

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung

Einführung in die Programmierung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Funktionale Programmierung mit Haskell

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

E-PRIME TUTORIUM Die Programmiersprache BASIC

Java Kurs für Anfänger Einheit 5 Methoden

Roberto lerusalimschy. Programmieren mit Lua

Luis Kornblueh. May 22, 2014

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Modul 122 VBA Scribt.docx

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Modellierung und Programmierung 1

Kontrollstrukturen - Universität Köln

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Algorithmen mit Python

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Informatik Repetitorium SS Volker Jaedicke

Graphic Coding. Klausur. 9. Februar Kurs A

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Einführung in die Programmierung

Programmierkurs Python I

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Grundlagen von Python

Funktionales Programmieren in Python

Schritt 1. Schritt 1. Schritt 3. - Analysieren des Problems und Spezifizierung einer Lösung.

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Einführung in die C++ Programmierung für Ingenieure

1 Vom Problem zum Programm

Einführung in die Java- Programmierung

Lua Grundlagen Einführung in die Lua Programmiersprache

Grundlagen der Programmierung (Vorlesung 14)

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Auswertung von Python-Programmen

Programmierkurs Java

Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Dr. Monika Meiler. Inhalt

Vorkurs C++ Programmierung

Druckerscriptsprache

Tutorium Rechnerorganisation

Entwurf von Algorithmen - Kontrollstrukturen

1. Probeklausur zu Programmierung 1 (WS 07/08)

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Multimedia im Netz Wintersemester 2011/12

Projekt: Programmierung mit dem. Grafikfähiger Taschenrechner CASIO CFX-9850GB Plus

Sin-Funktion vgl. Cos-Funktion

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar CAP-News 40

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

IT-Basics 2. DI Gerhard Fließ

Automatisches Parallelisieren

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Computer und Software 1

Was ist Logische Programmierung?

Fallunterscheidung: if-statement

Grundlagen der Programmiersprache C++

Funktionale Programmierung

Übersicht Programmablaufsteuerung

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Objektorientierte Programmierung OOP

Einführung in PHP. (mit Aufgaben)

Programmierung in C. Grundlagen. Stefan Kallerhoff

Python SVN-Revision 12

C/C++ Programmierung

Mediator 9 - Lernprogramm

Kapitel 6: Graphalgorithmen Gliederung

Programmierung I Einführung in Python, Beyond the Basics

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Prozedurale Datenbank- Anwendungsprogrammierung

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Einführung in LINUX Der Editor vi

Einstellen der Makrosicherheit in Microsoft Word

Klausur in Programmieren

Scala kann auch faul sein

Informatik I. Übung 01. Olga Diamanti

Client-Server-Beziehungen

Kapitel MK:IV. IV. Modellieren mit Constraints

Transkript:

Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 1

Programmierung in Python Datentypen: ganze Zahlen, Gleitkommazahlen (Double), Strings. Tupel, Listen, Arrays, vordefinierte Listenfunktionen: map, filter, sort, reverse,... Fehlerbehandlung zur Laufzeit: Exception-Handling Objektorientierung: Klassen, Methoden P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 2

Python: Struktur eines imperativen Programms Python-Programm-File besteht aus: Deklarationen Definitionen von Funktionen. Funktionsdefinitionen: Wesentlich Bestandteile: Befehle (Anweisungen, Kommandos), wie Zuweisungen, Sprungbefehle, Ein/Ausgabebefehle mit Seiteneffekten Ausdrücke mit Returnwert P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 3

Python als Taschenrechner Eingabe in den Interpreter: Beispiele >>> a = 3 >>> b = 4 >>> c = a**2 + b**2 >>> c 25 >>> print math.sqrt(c) 5.0 >>> P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 4

Syntax von wesentlichen Konstrukten für weitere Konstrukte sowie Details zur Syntax siehe Tutorials und Handbücher Zuweisung (Assignment) Variable = Ausdruck Auswertung: 1. Berechne: Wert des Ausdruckes dazu: Werte von Variablen im Speicher nachschauen Resultat: ein im Speicher liegendes Objekt 2. Zuweisung: Wert zu Namen der Variablen Ein Objekt kann mehrere Namen besitzen. Deklaration von Variablen(namen) in einer Funktionsdefinition erfolgt automatisch P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 5

Zuweisung mit Arithmetische Operatoren Variable op= Ausdruck Hierbei kann op einer der vordefinierten Operatoren sein: +,*,-,/,... >>> a= 100 >>> a /= 5 >>> a 20 >>> a *= 5 >>> a 100 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 6

Mehrfach-Zuweisung (scheinbar parallele) Mehrfach-Zuweisung: x 1,... x n = e 1,..., e n wobei x i Variablen und e i Ausdrücke sind Auswertung des Ausdrucks x 1,... x n = s 1,..., s n : 1. Wert aller Ausdrücke s i 2. Zuweisung der Werte s i zu den Variablennamen x i P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 7

if-then-else-konstrukt in Python if Bedingung: Anweisungen wenn Bedingung wahr else: Anweisungen, wenn Bedingung falsch Doppelpunkte : statt Schlüsselwort then Einrückung bestimmt die Blockstruktur weitere Varianten von if-then-else: ohne else Zweig mit zusätzlichen Abfragen (elif-zweigen). P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 8

while-schleife zur Iteration while Bedingung: Schleifenkörper Der Anweisungsblock des Schleifenkörpers wird solange ausgeführt, bis die Bedingung nicht (mehr) erfüllt ist. Im Schleifenrumpf verwendbar: break continue P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 9

Beispiel zu while >>> a=10 >>> while a > 0:... print a... a = a-1... 10 9 8 7 6 5 4 3 2 1 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 10

Funktions- und Prozedurdefinitionen def Funktioname(parameter1, parameter2,...): Anweisungen Rückgabewert mittels: return e None, falls return-anweisung weggelassen wurde Prozeduraufruf: f(s 1,..., s n ) bei n-stelligem f. mit voller Argumentanzahl und Argumenten eingeklammert P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 11

Komplexe Zahlen Paar von zwei Double-Zahlen: Real- und Imaginär-Teil >>> a=1.5+0.5j >>> a.real 1.5 >>> a.imag 0.5 >>> abs(a) 1.5811388300841898 >>> a*a (2+1.5j) >>> P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 12

Strings einfache Strings Hello world und Unicode Strings: >>> u Hello World! u Hello World! P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 13

Module Benutzung durch import-anweisungen und qualifizierte Aufrufe: >>> import cmath >>> a=1.5+0.5j >>> cmath.sin(a) (1.1248012470579227+0.036860823712804462j) >>> Wird noch besprochen P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 14

Beispiel: wurzel ala Python: def wurzel(x): return wurzeliter(1.0,x) def wurzeliter(schaetzwert,x): if gutgenug(schaetzwert,x): return schaetzwert else: return wurzeliter(verbessern(schaetzwert, x), x) def quadrat(x): return x*x def gutgenug(schaetzwert,x): return (abs ((quadrat(schaetzwert) - x) / x) < 0.00001) def verbessern(schaetzwert,x): return mittelwert(schaetzwert, (x / schaetzwert)) def mittelwert(x,y): return (x + y) / 2.0 >>> wurzel(2.0) 1.4142156862745097 >>> P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 15

Referentielle Transparenz gilt nicht in Python: count = 0 def f(x): global count count = count + x return count f (1) == f (1) ergibt 0 Seiteneffekt ändert die globale Variable count. P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 16

Flussdiagramm am Beispiel ggt Der größte gemeinsame Teiler kann durch die Prozedur ggtpy berechnet werden: def ggtpy(x,y): if x <= 0 or y <= 0: print Eingabe in GGT muss positiv sein else: while x!= y: if x > y: x = x - y else: y = y - x return x P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 17

ggt: schnellere Version def ggt(x,y): if y == 0: return x else: return ggt(y, (x % y)) Einige Beispielauswertungen: >>> ggtpy(1234,4321) 1 >>> ggtpy(1243,3421) 11 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 18

Flussdiagramm zu ggt x := a; y := b drucke x Ja x = y nein Stop Ja x > y nein x := x-y y := y-x Flussdiagramme sind oft von begrenztem Nutzen, da sie zu groß werden P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 19

Wert-Vertauschung ohne Hilfsvariable Vertauschung von Variablenwerten ohne Hilfsvariable: >>> a = 1 >>> b = 2 >>> a,b = b,a >>> a 2 >>> b 1 >>> P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 20

Wert-Vertauschung mit Hilfsvariable c = a a = b b = c ####### Im Python Interpreter: >>> a = 1 >>> b = 2 >>> c = a >>> a = b >>> b = c >>> a 2 >>> b 1 >>> P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 21

Mehrfachzuweisung ist sequentiell >>> a,b,a = 1,2,3 >>> a 3 >>> P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 22

Fibonacci in Python, iterativ def fib(n): a,b = 0,1 while b < n: print b, a,b = b,a+b >>> fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 23

Boolesche Funktionen >>> a = 1 >>> not a False >>> a = 0 >>> b = 1 >>> a or b 1 >>> a and b 0 >>> del b >>> b Traceback (most recent call last): File "<input>", line 1, in? NameError: name b is not defined >>> a 1 >>> a or b 1 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 24

Boolesche Funktionen not, or, and wirken (fast) wie die Booleschen Operatoren. or, and werten von links nach rechts aus Ersatzdefinitionen: def or(x,y): if x: return x else: return y def and(x,y): if x: return y else: return x def not(x): if x == 0: return 1 else: return 0 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 25

Iterative Prozesse und Iterative Funktionen def fakultaetlin(n): a = faktiter(1,1,n) return a def faktiter(produkt,zaehler,max): if zaehler > max: return produkt else: return faktiter(zaehler * produkt,zaehler + 1,max) def faktwhile(n): produkt = 1 zaehler = 1 max = n while zaehler <= max: produkt = (zaehler * produkt) zaehler = zaehler + 1 return produkt P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 26

Module in Python Module dienen zur Strukturierung / Hierarchisierung Kapselung: Wiederverwendung P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 27

Module in Python Jede Python-Programm-File ist ein Modul Kein eigener Modulkopf mit export-liste Modulimport mittels import: import Modulname Re-Initialisierung: reload(modulname) P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 28

Beispiel in Python Datei Fib.py, Modul Fib: def fib(n): a,b = 0,1 while b < n: print b, a,b = b,a+b X=10 # Diese Zeilen werden beim Import fib(x) # ausgefuehrt Beim Import des Moduls Fib >>> import Fib 1 1 2 3 5 8 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 29

Aufruf von Funktionen aus Modul Modul- Zugriff auf Namen aus importierten Modulen: qualifiziert: name.name P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 30

Zugriff auf importierte Variablen Nach import Fib: >>> X Traceback (most recent call last): File "<stdin>", line 1, in? NameError: name X is not defined >>> Fib.X 10 >>> Fib.fib(5) 1 1 2 3 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 31

Lokale Aliase für Modulnamen Importier unter Alias-Namen ist möglich: >>> import Fib as Fibonacci 1 1 2 3 5 8 >>> Fibonacci.fib(5) 1 1 2 3 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 32

Importieren mittels from Nur selektierte Funktionen importieren: from Modulname import Definitionsliste from Modulname import * Beispiel: >>> from Fib import fib 1 1 2 3 5 8 >>> fib(5) 1 1 2 3 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 33

Importieren mittels from... *: Beispiel Vorsicht: Unerwartete Effekte dabei X = 10; def printer(): global X: print X >>> from Printer import * >>> X 10 >>> printer() 10 >>> X = 20 >>> printer() 10 >>> X 20 P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 34

Datenkapselung in Python Ist in der Verantwortung des Programmierers. In Python gibt es kein (echtes) Verstecken von Funktionen. Man kann auf sämtliche definierten Namen des importierten Moduls qualifiziert zugreifen. Konvention: Namen, die mit _ beginnen gelten als versteckt. P raktische Informatik 1, W S 2004/05, F olien P ython 1, (6. Dezember2004) Seite 35