Algorithmen und Programmieren II Einführung in Python

Ähnliche Dokumente
JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

JAVA-Datentypen und deren Wertebereich

ALP I Einführung in Haskell

Kapitel 3: Variablen

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Primitive Datentypen

Python Programmieren. Variablen, Ausdrücke und Anweisungen

RO-Tutorien 3 / 6 / 12

OO Programmierung in Java

Die Programmiersprache C Eine Einführung

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Programmierung mit C Zeiger

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Dr. Monika Meiler. Inhalt

1. Der Einstieg in Java. Was heißt Programmieren?

Programmierung I Basics (in Python)

Einführung in Python Teil I Grundlagen

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

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Deklarationen in C. Prof. Dr. Margarita Esponda

Welche Informatik-Kenntnisse bringen Sie mit?

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

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

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Einstieg in die Informatik mit Java

Algorithmen und Programmierung II

Tutorium für Fortgeschrittene

Einführung in die Java- Programmierung

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java Einführung Operatoren Kapitel 2 und 3

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Informatik I. 4. Funktionen: Aufrufe und Definitionen. 25. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I.

28. April Python ist eine Interpreter Sprache. einfach durch eigene C Module erweiterbar. Daten werden dynamisch getypt

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

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

Python-Workshop. Python für C/C++ Programmierer. Carl Friedrich Bolz. Carl Friedrich Bolz

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

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

Vorlesung Programmieren

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

Programmieren in C++ Überladen von Methoden und Operatoren

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

3. Anweisungen und Kontrollstrukturen

Inhaltsverzeichnis Einleitung xi Kapitel 1: Die Vorbereitung aufs Abenteuer

2. Programmierung in C

Algorithmik und Programmieren

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

1. Der Einstieg in Java

Programmierung I Einführung in Python, Beyond the Basics

Modul 122 VBA Scribt.docx

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Prinzipieller Grundaufbau eines einfachen C-Programmes

Propädeutikum zur Programmierung

Python Einführung in die prozedurale Programmierung. Monty Python's Flying Circus

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

4.Grundsätzliche Programmentwicklungsmethoden

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

Schleifen in C/C++/Java

Beispiel 19. December 4, 2009

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Probeklausur: Programmierung WS04/05

Herzlich Willkommen. Über mich Termine Literatur Über PHP

Programmierung in Python

Werkzeuge zur Programmentwicklung

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen. 3. Programmiersprache Visual Basic. 4. Grundlagen der Datenbanktechnologie.

Algorithmen und ihre Programmierung

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

ModProg 15-16, Vorl. 5

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

Übung zur Vorlesung Multimedia im Netz

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

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Lua Grundlagen Einführung in die Lua Programmiersprache

Dr. Monika Meiler. Inhalt

Einführung in die Computerlinguistik Einführung in Python (1)

JAVA - Methoden

Informatik B von Adrian Neumann

Elementare Datentypen in C++

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Objektorientierte Programmierung

Programmierung in C. Grundlagen. Stefan Kallerhoff

Der Datentyp String. Stringvariable und -vergleiche

Kurzeinführung in Python

5. Elementare Befehle und Struktogramme

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Transkript:

Algorithmen und Programmieren II Einführung in Python SS 2010 Prof. Dr. Margarita Esponda Prof. Dr. Margarita Esponda 1

Variablen Funktionale Programmiersprachen Imperative Programmiersprachen Eine Variable stellt nur den symbolischen Namen von einem Wert oder einem Ausdruck, der zu einem Wert ausgewertet werden kann, dar. Variablen sind Stellen im Speicher, in denen Werte abgelegt werden können. Variablen speichern Zustände. Variablen haben: Typ Namen Wert Im Programm sichtbar Der Wert einer Variablen kann nicht verändert werden. Adresse Stelle im Speicher, wo die Variable sich während der Ausführung des Programms befindet Variablen müssen normalerweise vor der erstmaligen Benutzung deklariert werden. Prof. Dr. Margarita Esponda 2

Datentyp einer Variable In C wird damit die minimale Speichergröße, die eine Variable braucht, festgelegt. In modernen Programmiersprachen wird damit der Wertebereich, den eine Variable annehmen kann, beschränkt. Python hat ein dynamisches Typsystem Variablen in Python müssen nicht deklariert werden. Der Datentyp von Variablen wird in Python erst zur Laufzeit festgelegt und kann während der Ausführung des Programmes verändert werden. slide 3 Prof. Dr. Margarita Esponda 3

Kommentare in Python """ Blockkommentare: können sich über mehrere Zeilen erstrecken. """ # von hier aus bis Ende der Zeile wird dieser Text ignoriert... Eingabe und Ausgabe input ( Promt ) print ( Ausdrucke ) Die input-funktion liest Zeichenketten aus der Standardeingabe ein und gibt diese als Rückgabewert der Funktion zurück. Die print-funktion kann Zeichenketten, Zahlenwerte oder zusammengesetzte Datenstrukturen ausgeben. Prof. Dr. Margarita Esponda 4

In Python müssen Variablen nicht deklariert werden # Erste Anweisungen small = 100 big = 9999999999999999999999999999999999999999999 b = True c = 3.4 d = "hello" name.py print ( small, big, b, c, d ) Interpreter >>> 100 99999999999999999999999999999 True 3.4 hello Prof. Dr. Margarita Esponda 5

Dynamisches Typsystem type-funktion a = 10 print( type (a) ) a = 100000000000000000000000000000000 print( type (a) ) # Integer a = 1.0 print( type (a) ) a = 2.0 + 1.0j print( type (a) ) Eine Variable bekommt erst eine Speicheradresse, nachdem diese zum ersten mal einen Wert zugewiesen bekommt und der Datentyp wird aus dem zugewiesenen Wert abgeleitet. >>> <class 'int'> <class 'int'> <class 'float'> <class 'complex'> >>> Prof. Dr. Margarita Esponda 6

Imperative Grundbestandteile von Java Quelldatei Imperative Programmierung Klassedefinition Methode A Imperative Programmierung Objektorientierte Verpackung Der imperative Bestandteil eines Java-Programms befindet sich innerhalb der Methoden. Methode B Imperative Programmierung. Prof. Dr. Margarita Esponda 7

Variablendeklarationen in C und in Java Typ Name Wert int breite; int hoehe = 10; int flaeche = 0; Semikolon In Java sagt der Datentyp unter anderem, wieviel Speicherplatz benötigt wird, um die entsprechende Variable speichern zu können. Symbolischer Name einer Speicheradresse Der Wert 0 ist der Inhalt der Speicheradresse. Prof. Dr. Margarita Esponda 8

Dynamisches Typsystem Virtuelle Maschine y = 10.5 a = 10 b = 30 sum = a+b mult = a*b y a b sum mult 10.5 10 30 40 300 Speicher Prof. Dr. Margarita Esponda 9

Zieladresse Zuweisungen A = B Ausdruck Zuweisungen sind destruktive Anweisungen. Die Adresse mit dem symbolischen Namen A wird mit dem Wert des Ausdrucks B überschrieben. Was passiert, wenn eine Variable auf beiden Seiten des Gleichheitszeichens steht? l-wert x = x+2 r-wert Zwei verschiedene semantische Bedeutungen des gleichen Symbols. Prof. Dr. Margarita Esponda 10

Python-Zucker Multiple-Zuweisungen a, b, c = 2, 3, 5 print ( a, b, c ) >>> 2 3 5 a = b = c = 2 print ( a, b, c ) >>> 2 2 2 x = [a, b] = [1, 2] print ( a, b, x ) >>> 1 2 [1, 2 ] Prof. Dr. Margarita Esponda 11

Datentypen in Python Datentyp Beispiel Bemerkungen Integer a = 3 Float x = 1.0 Boolean Complex w = True c = 2 + 3j String t = "Text" oder t = 'Text' unveränderbar Liste l = [ 5, 3, 1, 6, 8 ] veränderbar Tuple p = ( 35, 0, "Name") unveränderbar Dictionary d = { 1:'a', 2:'b', 3:'c'} veränderbar Prof. Dr. Margarita Esponda 12

Ausdrücke Ein Ausdruck wird in der Informatik als eine Berechnungsvorschrift verstanden, die einen eindeutigen Wert darstellt. Die einfachsten Ausdrücke in Python sind Konstanten beliebiger Datentypen Beispiel: 1 3.4 "hello" (Literale) Ausdrücke haben keinen l-wert und können nicht auf der linken Seite einer Anweisung stehen. Beispiele: a+b = c oder 3 = c Prof. Dr. Margarita Esponda 13

Arithmetische Operatoren Operator Beschreibung + unär ändert nichts an der Zahl - unär ändert das Vorzeichen der Zahl ** binär Power-Operator * binär Multiplikation + binär Addition - binär Subtraktion / binär Division (bei integers ganzzahlig) % binär Modulo (Restbildung) // binär Division (immer ganzzahlig) Prof. Dr. Margarita Esponda 14

Ausdrücke Ausdrücke haben einen Wert und einen Datentyp Beispiele: # type casting Wert Type int("12345") 12345 int type casting int(0xff) 255 int int(3.14) 3 int (3*11//5) 6 int 8%2 0 int 8/3 2.66.. float float(3) 3.0 float 2**(2+1) 8 int pow(2,3) 8 int Prof. Dr. Margarita Esponda 15

weitere Operationen >>> help ( int) Methods defined here: abs (...) x. abs () <==> abs(x) add (...) x. add (y) <==> x+y and (...) x. and (y) <==> x&y bool (...) x. bool () <==> x!= 0 ceil (...) Ceiling of an Integral returns itself. divmod (...) x. divmod (y) <==> divmod(x, y) eq (...) x. eq (y) <==> x==y float (...) x. float () <==> float(x) floor (...) Flooring an Integral returns itself.... >>> import math >>>> math.pi, math.e (3.1415926535897931, 2.7182818284590451) >>> help (math) FUNCTIONS acos(...) acos(x) Return the arc cosine (measured in radians) of x. acosh(...) acosh(x)... radians) of x.... Prof. Dr. Margarita Esponda 16

Import-Anweisung Die import-anweisung ermöglicht in Python-Skripten den Zugang auf vorprogrammierte Module Einige interessante Module sind: sys: os: string: re: math: stdin, stderr, argv system, path split match compile exp, sin, sqrt, pow Prof. Dr. Margarita Esponda 17

Höhere Datenstrukturen Python unterstützt vier sequentielle höhere Datentypen Listen (dynamic arrays) Tuples (immutable lists) Dictionaries (hash tables) Listen Eine Liste ist eine veränderbare Sammlung von Objekten verschiedener Datentypen. Beispiele: [] # Leere Liste liste = [1, 3.5, "Zeichenkette", 10] a = [ 'Hi', 4, 0.234 ] Prof. Dr. Margarita Esponda 18

Höhere Datenstrukturen Tupel: Ein Tupel ist eine Sammlung von Objekten verschiedener Datentypen zu einem Objekt. Im Gegensatz zu einer Liste ist die Folge der Elemente dabei nicht veränderbar. Beispiele: () # Leeres Tupel. (1,) # Tupel mit einem Element. (1,2,3) # Tupel mit drei Elementen. (1, 'Eins') # Tupel mit zwei Elementen. number = (1, 'eins') Prof. Dr. Margarita Esponda 19

Höhere Datenstrukturen Dictionaries Dictionaries sind eine Sammlung von Schlüsselund Wertepaaren. Ein Dictionary ist also eine Liste aus Schlüssen (keys), denen jeweils ein Wert (value) zugewiesen ist. Beispiele: {} # Leerer Dictionary { 1:'Goethe', 2:'Schiller', 3:5.67 } atomic_num = {'None' : 0, 'H' : 1, 'He' : 2} Prof. Dr. Margarita Esponda 20

Zeichenketten, Listen und Tupel-Operatoren Operator Funktion Beispiel Wert + Konkatenation "Eins" + " Zwei" "Eins Zweil" * Wiederholung 2 * Eins" Eins Eins in enthalten in 1 in [1,2] 1 not in nicht enthalten in 3 not in [1,2] 1 x[i] Indizierung, liefert das Element aus x an der Position i x = "hallo" x[1] a x[i:j] liefert aus x die Elemente von i bis j-1 zurück x = "hallo" x[0:3] hal len(s) Länge len("hallo") 5 min(s) kleinstes Element min("hallo") a max(s) grösstes Element max("hallo") o Prof. Dr. Margarita Esponda 21

Wert- vs. Referenz-Semantik Wert-Semantik Ein Ausdruck wird ausgewertet und das Ergebnis direkt in eine Variablen-Adresse gespeichert. Referenz-Semantik Ein Ausdruck wird zu einem Objekt ausgewertet, dessen Speicheradresse in eine Variablen-Adresse gespeichert wird. Prof. Dr. Margarita Esponda 22

Vergleichsoperatoren alle binär < Kleiner > Größer <= Kleiner oder gleich >= Größer oder gleich == Gleichheit!= Ungleichheit Prof. Dr. Margarita Esponda 23

Fallunterscheidung if-else-anweisung a = input( "Zahl = " ) if a<0: print ("a ist negativ" ) else: print ( "a ist positiv" ) a = input( "Zahl = " ) if a<0: print ( "a ist negativ" ) elif a==0: print ( "a ist gleich 0" ) else: print ( "a ist positiv" ) Einrücken anstatt Klammern Prof. Dr. Margarita Esponda 24

if-else-anweisung import random bit = True if bit: print( True ) else: print( False )! Zahlen und andere Datentypen werden wie in C als Wahrheitswerte interpretiert True bit = 0 if bit: print(true) else: print(false) False bit = "Hi" if bit: print(true) else: print(false) True Prof. Dr. Margarita Esponda 25

Verwendung von "Dictionaries" In Python gibt es keine switch-case-anweisung wie in C und Java, aber diese kann mit Hilfe von Dictionaries simuliert werden. def zero(): print( "just zero. " ) def sqr(): print( "n is a square number" ) def even(): print( "n is an even number " ) def prime(): print( "n is a prime number " ) case = {0 : zero, 1 : sqr, 4 : even, 9 : sqr, 2 : even, 3 : prime, 5 : prime, 7 : prime, } case[3]() Prof. Dr. Margarita Esponda 26

for-schleifen for x in ['spam', 'bla', 'eggs']: print (x) for x in [1,2,3,4]: print (x) sum=0 for x in [1,2,3,4,5]: sum = sum + x print( sum) for i in range(1,5): sum += i print( sum) Dic = [(1,'a'), (2,'b'),(3,'c')] for (a,b) in Dic: print (a, b) >>> spam bla eggs 1 2 3 4 15 30 1 a 2 b 3 c >>> Prof. Dr. Margarita Esponda 27

for-schleife for Ausdruck in Sequenz : Anweisungen Bei der for-schleife in Python wird nicht über eine Folge von Zahlen sondern über Elemente einer Sequenz iteriert. # Erzeugt alle Kombinationen von zwei # Zeichen aus text text = input ( "text = " ) for i in text: for j in text: print ( i+j ) Prof. Dr. Margarita Esponda 28

Logische Operatoren Operator Beschreibung not unär logische Negation or binär logisches Oder and binär logisches Und Bit-Operatoren Operator Beschreibung ~ unär bitweise Inversion (Negation) << binär nach Links schieben >> binär nach Rechts schieben & binär bitweise UND binär bitweise ODER ^ binär bitweise Exklusives Oder Prof. Dr. Margarita Esponda 29

while-anweisung # Berechnet alle Quadratzahlen bis n n = input( "n = " ) zaehler = 0 while zaehler<=n: print (zaehler*zaehler) zaehler = zaehler + 1 Prof. Dr. Margarita Esponda 30

import random while-schleifen money = int ( input ( 'money? ' ) ) Der Zufallsgenerator wird random.seed() mit einem internen Startwert initialisiert. while money>0: if random.randint (0,1) == 0: money += 1 else: money -= 1 print(money) print( 'You are a great loser!' ) Prof. Dr. Margarita Esponda 31

Funktionen in Python Eine Funktionsdefinition startet mit dem def-schlüsselwort Das Einrücken entscheidet, was zur Funktion gehört bzw. wann die Funktionsdefinition zu Ende ist. Funktionsname Argumente ( 1) π = 4 = + def pi_leibniz ( n ): sum = 0 n 2n for n in range( 0, n ): sum = sum +((-1)**n)/(2.0*n+1) sum = sum*4 return sum Die return-anweisung gibt das Ergebnis der Funktion zurück n 0 1 Prof. Dr. Margarita Esponda 32

Python-Funktionen etwas genauer: def Funktionsname ( Arg 1, Arg 2,... ) : Anweisung 1 Anweisung 2... Anweisung n Eine Anweisung der Form: return Ergebniswert befindet sich an beliebiger Stelle und beliebig oft in dem Funktionsrumpf; sie beendet die Ausführung der Funktion mit der Rückgabe eines Ergebniswertes. Prof. Dr. Margarita Esponda 33

Funktionsdefinitionen Funktionen können einen Dokumentationstext beinhalten, der als Blockkommentar in der ersten Zeile der Funktion geschrieben werden muss. Beispiel: def fact (n) : """ Berechnet die Fakultät Funktion der Zahl n """ if n==0: return 1 else: return n*fact(n-1) print( fact(5) ) >>> 120 >>> help (fact) Help on function fact in module main : fact(n) Berechnet die Fakultät Funktion der Zahl n Prof. Dr. Margarita Esponda 34

Funktionsargumente können sehr flexibel angegeben werden. """ Argumente von Funktionen """ def fun( a=1, b=3, c=7 ): print ('a= ', a, 'b= ', b, 'c= ', c) fun( 30, 70 ) fun(20, c=100) fun(c=50, a=100) fun(20) fun(c=30) fun() >>> a= 30 b= 70 c= 7 a= 20 b= 3 c= 100 a= 100 b= 3 c= 50 a= 20 b= 3 c= 7 a= 1 b= 3 c= 30 a= 1 b= 3 c= 7 >>> Die Reihenfolge der Argumente kann verändert werden. Nur die Argumente, die benötigt werden, können angegeben werden. Prof. Dr. Margarita Esponda 35

break-anweisung Die break-anweisung wird verwendet, um die Ausführung einer Schleifenanweisung vorzeitig zu beenden. while True: s = input('text eingeben: ') if s == 'ende': break print ('Die Laenge des Texts ist', len(s)) print ('Tchüss.') Prof. Dr. Margarita Esponda 36

continue-anweisung Die continue-anweisung wird verwendet, um die restlichen Anweisungen der aktuellen Schleife zu überspringen und direkt mit dem nächsten Schleifendurchlauf fortzufahren. while True: s = input('text eingeben: ') if s == 'kein print': continue print ('Die Laenge des Texts ist', len(s)) Prof. Dr. Margarita Esponda 37

Reservierte Wörte in Python help> keywords and else import raise assert except in return break exec is try class finally lambda while continue for not yield def from or del global pass elif if print Prof. Dr. Margarita Esponda 38

Reservierte Worte in Python Wort assert exec kurze Erläuterung Zum Testen von Ausdrücken Ausführung von Programmcode from global in is pass Teil einer import-anweisung Verlegung einer Variablen in den globalen Namensraum Prüfung auf Mitgliedschaft in einer Sequenz test auf Identität Platzhalter, führt nichts aus Prof. Dr. Margarita Esponda 39

Geltungsbereich und Lebenszeit von Variablen Der Geltungsbereich einer Variable ist der Bereich innerhalb des Programms, in dem diese sichtbar ist. Lebenszeit ist die Zeit, die eine Variable im Speicher existiert. Prof. Dr. Margarita Esponda 40

Geltungsbereich und Lebenszeit von Variablen Beispiel: x = 7 def fun(a=1, b=3, c=7): print(x) print(y) x = 6 print ('a= ', a, 'b= ', b, 'c= ', c) while(x>3): y = 4 print (x) print (y) print(y) print(x) x = x-1 Prof. Dr. Margarita Esponda 41

Verschachtelte Funktionen Funktionen können innerhalb anderer Funktionen definiert werden. def percent (a, b, c): def pc(x): return (x*100.0) / (a+b+c) return (pc(a), pc(b), pc(c)) print (percent (2,4,4)) print (percent (1,1,1)) >>> (20.0, 40.0, 40.0) (33.3333333333, 33.3333333333, 33.3333333333) >>> Prof. Dr. Margarita Esponda 42