Programmierkurs für das modularisierte Lehramt September 2011, 8. Vorlesung Stuttgart, den 22. September 2011 Dr. Heiko Schulz Universität Stuttgart, Fachbereich Mathematik Hauptquellen: L Programmierkurs C für Bachelor (H. Schulz, H. Harbrecht, F. Eenberger, B. Wohlmuth...), L Vorlesung Mathematik am Computer 2008/09 (H. Schulz, J. Mayer), L Sonderheft ct Programmieren. Rückschau 2 C... L Kommandozeilenargumente, L Dynamische Speicherallokation, L Eigene Typen mit L math.h, typedef, Bash... L Motivation, Historie, L Variablen und Operationen, L Programmsteuerung, L Kommandozeilenargumente, L Funktionen, L Pipes. Inhalt 3 Heute... letzte Vorlesung! Thema: weitere Scriptsprachen. altbewährte L Perl - eine L Python - eine moderne Scriptsprache für viele Anwendungen, L PHP - Dynamische Webinhalte erzeugen. Scriptsprache, Python - eine moderne Scriptsprache L Anfang der 1990er Jahre von Guido van Rossum entwickelt. L Python unterstützt mehrere Programmierparadigmen: objektorientiert, aspektorientierte und funktionale Programmierung. L Der Name geht nicht auf die gleichnamige Schlangengattung (Pythons) zurück, sondern bezog sich ursprünglich auf die englische Komikertruppe Monty Python L Momentan Übergang von Version 2 zu Version 3, einige Änderungen. L Bei uns: Version 2.6.6. L Ziel von Python: möglichst einfache und übersichtliche Programme, zwei Maÿnahmen: relativ wenigen Schlüsselwörtern und Syntax ist reduziert und auf Übersichtlichkeit optimiert. 4 Python - eine moderne Scriptsprache L 5 Aufruf: Entweder über die Kommendozeile, dort dann weitere Befehle eingeben, die mit quit() python eingeben, abzuschlieÿen sind; oder idle; L über die grasche Python Shell L über ein vorher geschriebenes Python-Script. Phyton-Scripte sollten mit der Zeile oder #!/usr/bin/env python Dateiendung ist .py Standard. Beispiel: python "first.py" #! / u s r / b i n / e n v print 1+1 python beginnen. Als Variablen in Python L Python besitzt eine groÿe Zahl vordenierter Typen, neben den üblichen Typen sind dies z.B. komplexe Zahlen (mit imaginärer Einheit L j) und Sammeltypen wie z.B. Mengen. Der Typ einer Variablen ist aber an ihren Wert gebunden gebunden, nicht an ihren Namen, d.h. er wird im Moment der Wertzuweisung festgelegt. #! / u s r / b i n / e n v python a =5 b =4.5 c =" 5 . 1 " print a+b #p r i n t print a+ c a *b FALSCH 6 Variablen in Python L 7 Beispiel zu komplexen Zahlen: #! / u s r / b i n / e n v python z 1 =1+1 j z 2 =1 1 j print print print print print L * z2 = " , z1 " z1 / z2 = " , z1 / z2 " z1 " Realteil " Betrag von von z2 * z2 z1 = " , z1 . r e a l = " , abs ( z2 ) z1 . a r g Ein weiterer interessanter Datentyp sind long integers: Zahlen mit beliebig vielen Stellen. Diese werden mit einem Ende gekennzeichnet. ganze l am Variablen in Python L Beispiel: #! / u s r / b i n / e n v print 2 python ** 1 0 0 0 ergibt 10715086071862673209484250490600018105614048117 05533607443750388370351051124936122493198378815 69585812759467291755314682518714528569231404359 84577574698574803934567774824230985421074605062 37114187795418215304647498358194126739876755916 55439460770629145711964776865421676604298316526 24386837205668069376 8 Operatoren 9 +, -, L Arithmetische Operatoren: L Wieder Vorsicht bei Quotienten und Modulorechnung: ... / wird beim Teilen zweier Integerzahlen wieder eine Integerzahl zurückgeben (Python 2.x, anders wird es bei Python 3), % ist der Teilungsrest. Beispiel: #! / u s r / b i n / e n v print print print python " 5/2 = " , 5/2 "5%2 = " , 5%2 " 5.0/2 = " , 5.0/2 ==, !=, <=, >=, <, >. and, or, not. L Vergleichsoperatoren wie in C: L Logische Operatoren: Sammeltypen: Listen, Tupel, Mengen L 10 Ein Beispiel für Listen: #! / u s r / b i n / e n v python import datetime person = [ ' van (1956 ,1 ,31) print print # Ro s s u m ' , person [1 ] , person [ ' Guido ' , datetime . date ] 1] person [ 0 ] , ": " , person [ 2 ] Alternative person = { ' lastname ' : ' van Rossum ' , ' firstname ' : ' Guido ' , ' birthdate ' : datetime . date (1956 ,1 ,31) , } print " , person [ ' firstname ' ] , person [ ' birthdate ' ] person [ ' lastname ' ] , ": Sammeltypen: Listen, Tupel, Mengen L Ein Beispiel für Tupel: #! / u s r / b i n / e n v t1 =(3 ,2 ,1) t2 =(4 ,5 ,6) print t1 , t2 print t1 , = t1 , t2 t2 , t2 t1 python 11 Sammeltypen: Listen, Tupel, Mengen L Ein Beispiel für Mengen: #! / u s r / b i n / e n v python a2d = [ ' A ' , ' B ' , ' C ' , 'D ' ] a2c = [ 'A ' , 'B ' , 'C ' ] print print print print print print print a2d+a2c s e t ( a2d+a2c ) s e t ( a2c ) < s e t ( a2d ) s e t ( a2d ) < s e t ( a2c ) s e t ( a2c ) . u n i o n ( s e t ( a2d ) ) s e t ( a2c ) . i n t e r s e c t i o n ( s e t ( a2d ) ) s e t ( a2d ) . d i f f e r e n c e ( s e t ( a2c ) ) 12 Kontrolluss in Python: if L 13 Bedingte Ausführung: #! / u s r / b i n / e n v python z 1 =1+1 j z 2 =1 if 1 j z1 == z2 : p r i n t " z1=z2 " e l i f z 1 . r e a l == z 2 . r e a l : print " Realteile i s t gleich . " else : p r i n t " z 1 ! = z2 , R e a l t e i l e s i n d auch ungleich ." Kontrolluss in Python: for L 14 Ein Beispiel für die for-Schleife: #! / u s r / b i n / e n v # Summe und python Produkt aller summe=0 p r o d u k t =1 for i in range (1000) : summe+= i if print print i >0: produkt summe produkt *= i Zahlen bis 1000 Kontrolluss in Python: while L Das Gleiche als while-Schleife: #! / u s r / b i n / e n v # Summe und python Produkt aller Zahlen summe=0 p r o d u k t =1 i =0 while i <=1000: summe+= i if i >0: produkt *= i i +=1 print print L 15 summe produkt Analog zu C gibt es break und continue. bis 1000 Eigene Funktionen mit def L Beispiel: Fibonacci-Zahlen: #! / u s r / b i n / e n v def python fibonacci (n) : a ,b = 0, 1 w h i l e a <n : print a , a , print b = b, a+b f i b o n a c c i (2000) 16 PHP - überall im Web L 1995 von Rasmus Lerdorf entwickelt als Ersatz für eine Sammlung von Perl-Skripten gedacht, L Name: rekursives Akronym für PHP: Hypertext Preprocessor, oder Personal Home Page Tools. L Derzeit Version 5.x. L Hauptanwendung: Internetseiten dynamisch programmieren. L Dazu: Einbettung / Verquickung mit HTML. L Aufruf entweder innerhalb einer Webseite oder auch auf der Kommandozeile mit php filename.php: <? p h p echo ?> " Hallo Welt ! \ n" 17 PHP - überall im Web L 18 PHP zusammen mit HTML: <html > <head > T e s t </ t i t l e < t i t l e >PHP > </ h e a d > <body > <? p h p echo " Hallo Welt ! \ n" ?> </ b o d y > L Auf diese Weise kann man eine komplette Programmiersprache bei der Gestaltung von Webseiten verwenden. L Richtig dynamisch: Einbinden von SQL-Datenbanken über entsprechende PHP-Befehle. Variablen in PHP 19 L Bei PHP-Variablen muss immer der $ verwendet werden. L Beispiele: <? p h p $string = $zahl 123; = $kommazahl ' abc ' ; = 1.4; true ; $ f e l d = array (1 , $ e n g l i s c h=array ( $bool = 2, ' drei ') ; ' e i n s ' => ' o n e ' , p r i n t " $ s t r i n g \n" ; p r i n t f ( " z a h l =%d \ n " , $ z a h l ) ; echo "We h a v e " ; echo $ e n g l i s c h [ ' z w e i ' ] ; echo " p o s s i b i l i t i e s . . . \ n " ; ?> ' z w e i ' => ' t w o ' ) ; Operatoren und Kontrollstrukturen in PHP L Viele aus C bekannten Operatoren und Kontrollelemente ( while... L 20 ++, usw. usf.) sind in PHP sehr ähnlich verfügbar. Zusätzlich zur for-Zählschleife gibt es foreach, um ein Feld zu durchlaufen: foreach // tu ' ( $mein_array etwas mit as $wert ) { $wert . . . } function. L Denition eigener Funktionen mit L Es gibt eine groÿe Vielzahl von Funktion für alles mögliche: String-Manipulation, Arithmetik, Mails versenden, Datenbanken anbinden etc. pp. Ein letztes Beispiel... 21 <? p h p $n = 10; print " < h e a d >< t i t l e > Q u a d r a t z a h l e n von 1 bis $n </ t i t l e > </ h e a d >\ n < b o d y >\ n <table b o r d e r = '1 ' > "; print for "< t r >< t h > i </ t h >< t h > i ( $ i =1; $q= $ i print * $i $ i <$n ; $ i ++) * i </ t h ></ t r >\ n " ; { ; "< t r >< t d > $ i </ t d >< t d >$q </ t d ></ t r >\ n " ; } print ?> "< t a b l e >\ n </ b o d y >\ n " ; Zusammenfassung Was haben Sie in diesem Kurs gelernt? L Es gibt eine Vielzahl unterschiedlicher Programmiersprachen, je nach Anwendungsgebiet. L Maple, Mathematica und Matlab: Für mathematische Aufgabenstellungen gut geeignet, leicht zu bedienen, aber teuer. L C: Universell einsetzbar, weit verbreitet, aber schwerer zu erlernen. Überall verfügbar. L Bash als einfache Scriptsprache: direkte Erweiterung der Eingabeauorderung, universell verwendbar, aber langsam und nicht mit allen Features einer modernen Programmiersprache versehen. L Python: Moderne Script-Sprache, universell, viele Datentypen für (u.a.) Anwendungen in der Mathematik, leicht zu lernen. L PHP: Die Allzwecksprache im Internet, universell, extrem weit verbreitet. 22 Vielen Dank... ... für Ihre Aufmerksamkeit und bis morgen... 23