Programmierkurs für das modularisierte Lehramt

Werbung
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
Herunterladen