Grundlagen der Programmierung
Prof. Dr. Hanspeter Mössenböck
© H.Mössenböck: Sprechen Sie Java? 4. erweiterte Auflage, dpunkt.verlag, 2011
Worum geht es?
Programmieren
ein Problem so exakt beschreiben, dass es ein Computer lösen kann
kreative Tätigkeit
Ingenieurtätigkeit
Nur wenige Leute können gut programmieren
Programm = Daten + Befehle
2
Daten und Befehle
Daten
Menge adressierbarer Speicherzellen
x
17
y
4
z
21
Name
Wert
Daten sind binär gespeichert (z.B. 17 = 10001)
Binärspeicherung ist universell (Zahlen, Texte, Bilder, Ton, ...)
1 Byte = 8 Bit
1 Wort = 4 Byte (manchmal 2 Byte)
Befehle
Operationen mit den Speicherzellen
Maschinensprache
Hochsprache
// Lade Zelle x
ACC x
ACC ACC + y // Addiere Zelle y
// Speichere Ergebnis in Zelle z
z ACC
z = x + y;
3
Programmerstellung
Problem
Spezifikation
Aufgabenstellung
Algorithmus
Lösungsverfahren
Mensch
Programm
Compiler
Codiertes Lösungsverfahren
Maschinenprogramm
Lader
4
Algorithmus
Schrittweises, präzises Verfahren zur Lösung eines Problems
Name
Parameter
Summiere Zahlen von 1 bis max (max, sum)
1. sum 0
2. zahl 1
3. Wiederhole, solange zahl max
3.1 sum sum + zahl
3.2 zahl zahl + 1
Folge von Schritten
Programm = Beschreibung eines Algorithmus in einer Programmiersprache
5
Variablen
Sind benannte Behälter für Werte
x
y
99
3
Können ihren Wert ändern
x
xx+1
100
Haben einen Datentyp = Menge erlaubter Werte
Variablentyp
Zahl
Zeichen
Werte
17
'a'
54
'x'
...
...
Typ Form
- in eine Zahlenvariable passen nur Zahlen
- in eine Zeichenvariable passen nur Zeichen
6
Anweisungen
Wertzuweisung
x x+1
Variable
1. werte Ausdruck aus
2. weise seinen Wert der Variablen zu
Ausdruck
Anweisungsfolge (auch Sequenz)
"Ablaufdiagramm"
x3
y4
zx+y
Assertion
x = 3, y = 4, z = 7
Assertion (Zusicherung)
Aussage über den Zustand des Algorithmus
an einer bestimmten Stelle
7
Anweisungen
Auswahl (auch Verzweigung, Abfrage, Selektion)
x<y
j
min x
x<y?
n
xy
min y
min = Minimum von x und y
8
Anweisungen
Wiederholung (auch Schleife, Iteration)
n0
x>1?
j
n0
n
xx/2
nn+1
x>1
xx/2
nn+1
x1
n = log2 x0
x1
n = log2 x0
Alternative Darstellung
9
Beispiel: Vertauschen zweier Variableninhalte
Swap (↨x, ↨y)
hx
xy
yh
Schreibtischtest
x
3
2
y
2
3
h
3
10
Beispiel: Maximum dreier Zahlen bestimmen
Max (a, b, c, max)
j
a>b
a>b&a>c
j
max a
a>c?
n
ca>b
max c
a>b?
n
ba&b>c
j
max b
b>c?
ab
n
abc
max c
11
Beispiel: Euklidscher Algorithmus
Berechnet den größten gemeinsamen Teiler zweier Zahlen x und y
GGT (x, y, ggt)
rest Rest von x / y
rest 0
xy
y rest
rest Rest von x / y
rest = 0
ggt y
Schreibtischtest
x
y
rest
28
20
8
20
8
4
8
4
0
Warum funktioniert dieser Algorithmus?
(ggt teilt x) & (ggt teilt y)
x = i*ggt, y = j*ggt, (x-y) = (i-j)*ggt
ggt teilt (x - y)
ggt teilt (x - q*y)
ggt teilt rest
GGT(x, y) = GGT(y, rest)
12
Beispiel: Quadratwurzel von x berechnen
1.
2. Näherung:
root x(a/ +2 root) / 2
a x / root
0
a
a
root
root
SquareRoot (x, root)
root x / 2
a x / root
x
a * root = x
a root
a * root = x
root (a + root) / 2
a x / root
a * root = x
a * root = x & a = root
root * root = x
Schreibtischtest
x
root
10
5
3.5
3.17857
3.16232
3.16228
a
2
2.85714
3.14607
3.16223
3.16228
Kommazahlen sind meist nicht exakt gleich
daher besser
| a-root | > 0.0000001
13
Beschreibung von Programmiersprachen
Syntax
Regeln, nach denen Sätze gebaut werden dürfen
z.B.: Zuweisung = Variable "" Ausdruck.
Semantik
Bedeutung der Sätze
z.B.: werte Ausdruck aus und weise ihn der Variablen zu
Grammatik
Menge von Syntaxregeln
z.B. Grammatik der ganzen Zahlen
Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
Zahl = Ziffer {Ziffer}.
Ziffer
0
Zahl
1
2
3
4
5
6
7
8
9
Ziffer
14
EBNF (Erweiterte Backus-Naur-Form)
Metazeichen
=
.
|
()
[]
{}
Bedeutung
Beispiel
trennt Regelseiten
schließt Regel ab
trennt Alternativen
klammert Alternativen
wahlweises Vorkommen
0..n-maliges Vorkommen
A=xyz.
x|y
(x | y) z
[x] y
{x} y
beschreibt
x, y
xz, yz
xy, y
y, xy, xxy, xxxy, ...
Beispiele
Grammatik der Gleitkommazahlen
Zahl = Ziffer {Ziffer}.
Gleitkommazahl = Zahl "." Zahl ["E" ["+" | "-"] Zahl].
Grammatik der If-Anweisung
IfAnweisung = "if" "(" Ausdruck ")" Anweisung ["else" Anweisung].
15