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