Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Größe: px
Ab Seite anzeigen:

Download "Theoretische Informatik für Wirtschaftsinformatik und Lehramt"

Transkript

1 Theoretische Informatik für Wirtschaftsinformatik und Lehramt Höhere Programmiermodelle Priv.-Doz. Dr. Stefan Milius Theoretische Informatik Friedrich-Alexander Universität Erlangen-Nürnberg SS / 53

2 Gliederung 1 Lernziele 2 Höhere Programmiermodelle 3 LOOP-Programme 4 WHILE-Programme 5 Zusammenfassung 2 / 53

3 Worum geht es in diesem Abschnitt? (I) Letzter Abschnitt: Definition, Arbeitsweise und Leistungsfähigkeit von Turing-Maschinen Behauptung: Turing-Maschinen sind genauso leistungsstark im Hinblick auf die Berechnung von Funktionen wie typische Programmiersprachen Jetzt: formale Untersuchung der Behauptung. Dazu betrachte zwei sehr stark vereinfachte Programmiersprachen: LOOP hat einfache Zuweisungen, Sequenzen, Fallunterscheidungen und eine Zählschleife, WHILE hat zusätzlich Schleifen mit Abbruchbedingung. 3 / 53

4 Worum geht es in diesem Abschnitt? (II) Es gibt Funktionen, die nicht mit LOOP programmierbar sind. Z.B. die Ackermann-Funktion. WHILE-Programme sind genauso leistungsstark, wie gängige höhere Programmiersprachen 4 / 53

5 Lernziele die Programmiersprachen LOOP und WHILE mit ihren jeweiligen Eigenschaften kennen und erläutern können arithmetische Funktionen mittels LOOP und/oder WHILE programmieren können (falls möglich) LOOP- bzw. WHILE-Berechenbarkeit am Beispiel der Ackermann-Funktion diskutieren können 5 / 53

6 Programmiersprachen als Berechnungsmodelle Bisher: Funktionen auf allgemeinen Wortmengen Modell der (Turing-)Berechenbarkeit: Berechnungen von Funktionen werden in einer relativ primitiven Maschinensprache programmiert Jetzt: arithmetische Funktionen andere Maschinenmodelle, die den Grundprinzipien realer Computer näher sind wichtigstes Modell: Registermaschine (RAM = Random Access Machine ) 6 / 53

7 Registermaschine (RAM) (potentiell unendlicher) Speicher mit adressierbaren Registern (Speicherzellen): jedes Register speichert eine natürliche Zahl adressierbarer Programmspeicher: speichert Befehle einer Maschinensprache Programmierung auf einer Art Assembler-Ebene typische Befehle: Holen einer Zahl aus dem Speicher Ablegen einer Zahl im Speicher Sprünge auf bestimmte Befehle Befehle für einfache arithmetische Operationen, z. B.: Addition, Subtraktion, Multiplikation, (ganzzahlige) Division 7 / 53

8 RAM, TM und höhere Programmiersprachen TM trotz Einfachheit gleich mächtig wie Registermaschinen Begiff der RAM-Berechenbarkeit ist für eine arithmetische Funktion f formal definierbar Dann gilt: f ist RAM-berechenbar f ist Turing-berechenbar weitergehender Ansatz: ganz von konkretem Maschinenmodell lösen Funktion als (algorithmisch) berechenbar betrachten, wenn es Programm in höherer Programmiersprache zu ihrer Berechnung gibt erforderlich: konkrete Modellsprache, in der essentielle algorithmische Berechnungskonzepte höherer Sprachen in möglichst einfacher Form zusammengefasst sind 8 / 53

9 LOOP-Programme 9 / 53

10 LOOP-Programme Syntax von LOOP Ein LOOP-Programm ist eine nicht-leere endliche Folge von Anweisungen (jeweils durch Semikolon ; getrennt). Jede Anweisung ist entweder eine Zuweisung der Form a := 0 oder a := a oder a := a + 1 oder eine Wiederholungsanweisung (loop-schleife) der Form loop a do P enddo, wobei P wieder ein LOOP-Programm ist und a und a (nicht notwendig verschiedene) Variablen aus einer (fest vorgegebenen) Variablenmenge {a 0, a 1, a 2, a 3,...} sind. 10 / 53

11 Semantik von LOOP (I) Ein (Variablen-) Zustand ist eine Belegung aller Variablen a 0, a 1, a 2, a 3,... mit jeweils einer natürlichen Zahl als Wert. (Formal: eine Funktion B : {a 0, a 1, a 2,...} N) Ein Ablauf eines LOOP-Programms P 1 ; P 2 ;... ; P n startet in einem Zustand und verändert diesen (d. h. die Werte von Variablen) schrittweise durch Nacheinander-Ausführung der Anweisungen P 1, P 2,..., P n. Nach Ausführung von P n ist der Ablauf beendet. 11 / 53

12 Semantik von LOOP (II) Die Wirkung der möglichen Anweisungen ist wie folgt: Zuweisungen: a := 0 a wird mit dem Wert 0 belegt. a := a a wird mit dem (aktuellen) Wert von a belegt. a := a + 1 a wird mit dem um 1 erhöhten (aktuellen) Wert von a belegt. Werte der übrigen Variablen bleiben jeweils unverändert loop-schleifen: (loop a do P enddo) P wird Wert von a zu Beginn -mal ausgeführt loop-schleifen entsprechen den üblichen for-schleifen 12 / 53

13 Semantik von LOOP (III) Beobachtung Da jede Schleife nur endlich viele Schritte ausführt, wird jeder Ablauf eines LOOP-Programms beendet. 13 / 53

14 Implementierung weiterer Sprachkonstrukte (I) a, b und c seien Variablen und n N: Befehl Implementierung a := n a := 0; a := a + 1;... ; a := a + 1 }{{} n-mal a := b + c a := b; loop c do a := a + 1 enddo if a = 0 then P 1 else P 2 endif b := 1; loop a do b := 0 enddo; c := 0; loop a do c := 1 enddo; loop b do P 1 enddo; loop c do P 2 enddo 14 / 53

15 Implementierung weiterer Sprachkonstrukte (II) if a = 0 then P 1 else P 2 endif 1: b := 1; loop a do b := 0 enddo; 2: c := 0; loop a do c := 1 enddo; 3: loop b do P 1 enddo; 4: loop c do P 2 enddo Zeile a b c Ergebnis nicht def P 1 wird ausgeführt P 2 wird nicht ausgeführt nicht def P 1 wird nicht ausgeführt P 2 wird ausgeführt 15 / 53

16 LOOP-berechenbar (I) Definition Sei f : N k N eine Funktion. Ein LOOP-Programm P berechnet f, wenn gilt: Wird der Ablauf von P in einem Zustand gestartet, in dem die Variablen a 1,..., a k mit n 1,..., n k und alle übrigen Variablen mit 0 belegt sind, so hat die Variable a 0 in dem nach Beendigung des Ablaufs erreichten Zustand den Wert f (n 1,..., n k ). f heißt LOOP-berechenbar, wenn es ein LOOP-Programm gibt, das f berechnet. 16 / 53

17 LOOP-berechenbar (II) Beispiel Funktion f (x) = x 1 wobei die arithmetische Differenz allgemein definiert ist durch x y = { x y, falls x > y 0 sonst. LOOP-Programm für f (a 0 : Ergebnis; a 1 : x; a 2 : Hilfsvariable): if a 1 = 0 then a 0 := 0 else a 2 := 0; loop a 1 do a 0 := a 2 ; a 2 := a enddo endif Außer f (x) = x 1 sind auch alle sonstigen üblichen arithmetischen Funktionen (Prädikate) LOOP-berechenbar. 17 / 53

18 LOOP-berechenbar (III) Beispiel (Fortsetzung) Berechne f (3) = 3 1 = 2. Programm: (a 0 : Ergebnis; a 1 : x; a 2 : Hilfsvariable): if a 1 = 0 then a 0 := 0 else a 2 := 0; loop a 1 do a 0 := a 2 ; a 2 := a enddo endif Weise a 1 den Wert 3 zu. Durchlauf der loop-schleife (3-mal): 1. Durchlauf: a 0 := 0; a 2 := 1 2. Durchlauf: a 0 := 1; a 2 := 2 3. Durchlauf: a 0 := 2; a 2 := 3 18 / 53

19 LOOP-berechenbare Funktionen und Prädikate (I) Satz 7.1 a) Folgende Funktionen sind LOOP-berechenbar: x + y, x y, x y, x div y, x mod y, x y, max(x, y), min(x, y), x y, x!. b) Folgende Prädikate sind LOOP-berechenbar: x = y, x y, x < y, x y, x > y, x y, x y, istprim(x). Hinweise: x y bedeutet x ist Teiler von y Hinweise: Ein Prädikat ist eine Funktion p : N k {0, 1} N. 19 / 53

20 LOOP-berechenbare Funktionen und Prädikate (II) Beispiele Allgemeine arithmetische Differenz f (x) = x y: (a 0 : Ergebnis; a 1 : x; a 2 : y) a 0 := a 1 ; loop a 2 do a 0 := a 0 1 enddo Prädikat x = y: (a 0 : Ergebnis mit a 0 = 0 bzw. 1 bedeutet false bzw. true ; a 1 : x; a 2 : y; a h : Hilfsvariable) a 0 := a 1 a 2 ; a h := a 2 a 1 ; a 0 := a 0 + a h ; if a 0 = 0 then a 0 := 1 else a 0 := 0 endif 20 / 53

21 LOOP-berechenbare Funktionen und Prädikate (III) Satz 7.1 (Fortsetzung) c) Sei g : N k+1 N eine LOOP-berechenbare Funktion. Dann gelten auch folgende Aussagen: Funktionswertsummen der Funktion g sind LOOP-berechenbar: y f (x, y, x 1,..., x k ) = g(x 1,..., x k, i) Funktionswertprodukte der Funktion g sind LOOP-berechenbar: y f (x, y, x 1,..., x k ) = g(x 1,..., x k, i), i=x i=x 21 / 53

22 LOOP-berechenbare Funktionen und Prädikate (IV) Satz 7.1 (Fortsetzung) c) Seien g 1,..., g m LOOP-berechenbare Funktionen und p 1,..., p m 1 LOOP-berechenbare Prädikate. Dann gilt auch folgende Aussage: Eine fallweise aus g 1,..., g m und p 1,..., p m 1 konstruierte Funktion f ist LOOP-berechenbar: g 1 (x 1,..., x k ), falls p 1 (x 1,..., x k ) = 1 f (x 1,..., x k ) =. g m 1 (x 1,..., x k ), falls p m 1 (x 1,..., x k ) = 1 g m (x 1,..., x k ), sonst 22 / 53

23 LOOP-berechenbare Funktionen und Prädikate (V) Satz 7.1 (Fortsetzung) d) Sind q und r LOOP-berechenbare Prädikate, so sind auch die folgenden Prädikate LOOP-berechenbar: p(x 1,..., x k ) = 1 q(x 1,..., x k ) = 0, p(x 1,..., x k ) = 1 q(x 1,..., x k ) = 1 r(x 1,..., x k ) = 1, p(x 1,..., x k ) = 1 q(x 1,..., x k ) = 1 r(x 1,..., x k ) = 1 23 / 53

24 Die Ackermann-Funktion (I) Bisher: übliche arithmetische Funktionen und Prädikate sind alle LOOP-berechenbar Frage: gibt es überhaupt (totale) Funktionen, die in intuitivem Sinne berechenbar sind (etwa in einer Programmiersprache programmierbar), die jedoch nicht LOOP-berechenbar sind? Antwort: JA! Zum Beispiel die Ackermann-Funktion: ack : N 2 N ack(0, y) = y + 1 ack(x, 0) = ack(x 1, 1) für x > 0 ack(x, y) = ack(x 1, ack(x, y 1)) für x, y > 0 24 / 53

25 Die Ackermann-Funktion (II) ack(x, y) y = x = y y y y ack(3, 0) = ack(2, 1) = ack(1, ack(2, 0)) = ack(1, 3) = ack(0, ack(1, 2)) = ack(0, 4) = 5 ack(2, 0) = ack(1, 1) = ack(0, ack(1, 0)) = ack(0, 2) = 3 ack(1, 0) = ack(0, 1) = 2 ack(1, 2) = ack(0, ack(1, 1)) = ack(0, 3) = 4 ack(1, 1) = ack(0, ack(1, 0)) = ack(0, 2) = 3 25 / 53

26 Eigenschaften der Ackermann-Funktion (I) Bereits ack(1, y) = y + 2 ack(2, y) = 2y + 3 ack(3, y) = 2 y+3 3 ack(4, y) = }{{} 3 y+2 viele Potenzen ack(4, 2) = ist größer als die geschätzte Anzahl der Atome im Universum. 26 / 53

27 Eigenschaften der Ackermann-Funktion (II) Frage: Ist die Ackermann-Funktion total und intuitiv berechenbar? Totalität (per Induktion): ack ist für alle Werte x und y definiert Induktionsanfang: Für x = 0 und beliebiges y ist ack(x, y) direkt definiert. Induktionsschritt: Für x > 0 wird ack(x, y) auf Kombination verschiedener Werte ack(x, y ) zurückgeführt, die gemäß Induktionsvoraussetzung bereits definiert sind (eigentlicht jetzt Induktion in y) Intuitive Berechenbarkeit: durch Angabe eines Programms in einer höheren Programmiersprache leicht möglich (z.b. Haskell) Also: ack ist eine totale, intuitiv berechenbare Funktion. 27 / 53

28 Eigenschaften der Ackermann-Funktion (III) Ziel: beweisen, dass Ackermann-Funktion (mit wachsendem ersten Argument) über jede LOOP-berechenbare Funktion hinauswächst ack(0, y) = y + 1 ack(x, 0) = ack(x 1, 1) für x > 0 ack(x, y) = ack(x 1, ack(x, y 1)) für x, y > 0 Lemma 7.2 (Monotonie) Für alle x, y N gilt: a) y < ack(x, y) b) ack(x, y) < ack(x, y + 1) c) ack(x, y + 1) ack(x + 1, y) d) ack(x, y) < ack(x + 1, y) Aus b) und d) folgt: x x, y y : ack(x, y) ack(x, y ) 28 / 53

29 Max. Variablenwachstum der Ackermann-Funktion (I) Wir ordnen jedem LOOP-Programm P eine Funktion f P : N N zu. Seien a 0, a 1,..., a k die in P vorkommenden Variablen. Seien ferner n i die jeweiligen Startwerte der Variablen a i und n i deren Endwerte nach Ablauf von P. Wir setzen nun: f P (n) = max n i n i n i 0 i 0 Informell: f P ist die größtmögliche Summe der Variablen-Endwerte, wenn P mit Anfangswerten gestartet wurde, deren Summe n nicht übersteigt (nicht verwendete Variablen haben den Wert 0 und beeinflussen Wert der Summe nicht) 29 / 53

30 Max. Variablenwachstum der Ackermann-Funktion (II) Zeige nun, dass für k genügend groß (in Abhängigkeit von P) gilt: f P (n) < ack(k, n) für alle n N. Lemma 7.3 Für jedes LOOP-Programm P gibt es eine Konstante k, so dass für alle n N gilt: f P (n) < ack(k, n). 30 / 53

31 Beweis von Lemma 7.3 (I) Induktion über den Aufbau des LOOP-Programms P Fall 1: P ist eine Wertzuweisung a i := 0 oder a i := a j + c Fall 1: (mit c = 0, 1) P ist Wertzuweisung, also: zwei Variablen a 0, a 1 Ergebnisvariable a 0 startet mit Belegung 0 gemäß Definition von f P gilt: a 0 + a 1 n Nach der Zuweisung gilt: f P (n) = a 0 + a 1 2n + 1 Schlimmstenfalls: {a 0 = 0, a 1 = n} a 0 := a {a 0 = n + 1, a 1 = n} Wir wissen: Wähle also k = 2, dann gilt: ack(1, y) = y + 2 ack(2, y) = 2y + 3 f P (n) 2n + 1 < 2n + 3 = ack(k, n). 31 / 53

32 Beweis von Lemma 7.3 (II) Fall 2: P ist eine Sequenz der Form P 1 ; P 2 Nach Induktionsvoraussetzung gibt es Konstanten k 1, k 2, so dass gilt: f P1 (n) < ack(k 1, n) und f P2 (n) < ack(k 2, n). Mit k 3 := max{k 1 1, k 2 } gilt nun die Abschätzung: f P (n) f P2 (f P1 (n)) < ack(k 2, ack(k 1, n)) ack(k 3, ack(k 3 + 1, n)) (Monotonie, weil k k 1 ) = ack(k 3 + 1, n + 1) (Definition von ack) ack(k 3 + 2, n) (Lemma 7.2.c) Wähle also k = k 3 + 2, dann gilt: f P (n) < ack(k, n). 32 / 53

33 Beweis von Lemma 7.3 (III) Fall 3: P ist eine loop-schleife der Form loop a i do Q enddo. Nach Induktionsvoraussetzung gibt es eine Konstante k 1, so dass f Q (n) < ack(k 1, n) für alle n N gilt. O.B.d.A. komme die Variable a i in Q nicht vor. Die Funktion f P (n) wird durch eine Maximumsbildung definiert. Sei m n eine Wahl für Variablenwert a i, bei der das Maximum eingenommen wird. Fall 3a: m = 0 (d.h. Schleife wird nicht ausgeführt) damit: f P (n) = n < ack(0, n) = n + 1 (Def. von ack) Wähle also k = 0, dann gilt: f P (n) < ack(k, n). Fall 3b: m = 1 (d.h. Schleife wird einmal ausgeführt) damit: f P (n) f Q (n 1) + 1 ack(k 1, n 1) < ack(k 1, n) Wähle also k = k 1, dann gilt: f P (n) < ack(k, n). 33 / 53

34 Beweis von Lemma 7.3 (IV) Fall 3c: m 2 (d.h. Schleife wird mehrfach ausgeführt) Da a i nicht in Q vorkommt, können wir abschätzen: f P (n) f Q (f Q ( f Q (n }{{}}{{} m ) )) + }{{} m m-mal a i kommt in Q nicht vor a i < ack(k 1, f Q (f Q ( f Q (n m) )) + m }{{} (m 1)-mal. < ack(k 1, ack(k 1, ack(k 1, n m) )) + m }{{} m-mal Da m-mal ein Kleiner-Zeichen vorkommt (es wurde zuvor m-mal abgeschätzt) erhalten wir: / 53

35 Beweis von Lemma 7.3 (V) Fall 3c: m 2 (Fortsetzung) Da m-mal ein Kleiner-Zeichen vorkommt (es wurde m-mal abgeschätzt), erhalten wir: f P (n) ack(k 1, ack(k 1, ack(k 1, n m) )) }{{} m-mal < ack(k 1, ack(k 1, ack(k 1 + 1, n m) )) }{{} (m 1)-mal = ack(k 1, ack(k 1 + 1, n m + 1) )) }{{} (m 1)-mal. = ack(k 1 + 1, n 1) (Definition von ack) < ack(k 1 + 1, n) (Monotonie) Wähle also k = k 1 + 1, dann gilt: f P (n) < ack(k, n). 35 / 53

36 Die Ackermann-Funktion ist nicht LOOP-berechenbar Satz 7.4 Die Ackermann-Funktion ack ist nicht LOOP-berechenbar. Widerspruchsbeweis: Annahme: ack ist LOOP-berechenbar. Dann ist auch g(n) = ack(n, n) LOOP-berechenbar. Sei P ein LOOP-Programm für g. Es gilt g(n) f P (n). Aus Lemma 7.3 folgt: es gibt k N mit f P (n) < ack(k, n). Für n = k gilt somit: g(k) f P (k) < ack(k, k) = g(k). Widerspruch! Also ist die Annahme falsch, d.h. ack ist nicht LOOP-berechenbar. 36 / 53

37 WHILE-Programme 37 / 53

38 WHILE-Programme Feststellung: LOOP-Berechenbarkeit ist zu schwach, um alle intuitiv als (durch Programme) berechenbar empfundenen Funktionen zu erhalten. Abhilfe: Erweiterung der Sprache LOOP zur Sprache WHILE: Syntax von WHILE Ein WHILE-Programm ist genauso aufgebaut wie ein LOOP-Programm. Zusätzlich zu beliebigen LOOP-Anweisungen dürfen Wiederholungsanweisungen (while-schleifen) verwendet werden: while a 0 do P enddo (a Variable, P WHILE-Programm) 38 / 53

39 Semantik von WHILE Ablauf eines WHILE-Programms ist definiert wie bei LOOP-Programmen. Zusätzliche Festlegung der Wirkung einer Schleife while a 0 do P enddo: P wird so lange nacheinander ausgeführt, wie der Wert der Variablen a nicht 0 ist. Wird der Wert von a nie 0, so wird die Schleife und damit der gesamte Programmablauf nicht beendet. (Das Programm terminiert für den betreffenden Startzustand nicht.) Wesentlicher Unterschied zu LOOP-Programmen: WHILE-Programme können ggf. nicht terminieren. 39 / 53

40 WHILE-berechenbar (I) Wegen möglicher Nicht-Terminierung berechnen WHILE-Programmen i. Allg. partielle Funktionen: Definition Sei f : N k N eine Funktion. Ein WHILE-Programm P berechnet f, wenn gilt: Wird der Ablauf von P in einem Zustand gestartet, in dem die Variablen a 1,..., a k mit n 1,..., n k und alle übrigen Variablen mit 0 belegt sind, so terminiert P genau dann, wenn f (n 1,..., n k ) definiert ist, und falls P terminiert, hat die Variable a 0 in dem nach Beendigung des Ablaufs erreichten Zustand den Wert f (n 1,..., n k ). f heißt WHILE-berechenbar, wenn es ein WHILE-Programm P gibt, das f berechnet. 40 / 53

41 WHILE-berechenbar (II) Jede LOOP-berechenbare Funktion ist auch WHILE-berechenbar. WHILE-Berechenbarkeit ist mächtiger als LOOP-Berechenbarkeit, denn: Satz 7.5 Die Ackermann-Funktion ist WHILE-berechenbar. 41 / 53

42 Beweis von Satz 7.5 (I) Zur Erinnerung: ack(0, y) = y + 1 ack(x, 0) = ack(x 1, 1) für x > 0 ack(x, y) = ack(x 1, ack(x, y 1)) für x, y > 0 Beweis des Satzen durch Angabe eines WHILE-Programms Für den Beweis benötigen wir einen Stack (d.h. folgende Unterprogramme) INIT(stack) /* initialisiert leeren Stack */ PUSH(x, stack) /* legt x auf den Stack ab */ y := POP(stack) /* oberstes Stackelement entfernen */ /* und dessen Wert in y liefern */ 42 / 53

43 Beweis von Satz 7.5 (II) WHILE-Programm für ack(x, y): INPUT(x,y); INIT(stack); PUSH(x, stack); PUSH(y, stack); while size(stack) 1 do Noch ein Makro! y := POP(stack); x := POP(stack); if x = 0 then PUSH(y+1,stack) else if y = 0 then PUSH(x-1,stack); PUSH(1,stack) else PUSH(x-1,stack); PUSH(x,stack); PUSH(y-1,stack) endif endif enddo; result := POP(stack); OUTPUT(result); Makro schreibt Ergebnis nach a 0 43 / 53

44 Beweis von Satz 7.5 (III) Frage: Wie können die Stack-Operationen durch WHILE-Programme implementiert werden? Grundidee: Codiere den Stackinhalt mit einer geeigneten Codierungsfunktion c durch eine natürliche Zahl n INIT wird dann zu n := 0 PUSH(a,stack) wird dann zu n := c(a, n) POP benötigt geeignete Decodierungsfunktion Details vgl. [Schöning, 2008, S. 108ff] 44 / 53

45 WHILE- und Turing-Berechenbarkeit TM sind unser universelles Berechnungsmodell Gerechtfertigt nur, wenn (zumindest) alle WHILE-berechenbaren arithmetischen Funktionen auch mit TM berechnet werden können. Satz 7.6 Jede WHILE-berechenbare Funktion ist Turing-berechenbar. 45 / 53

46 Beweis von Satz 7.6 (Skizze) (I) Sei P ein WHILE-Programm, und sei r der höchste Index i der in P vorkommenden Variablen a i. Ein Ablauf von P beginnt mit Werten n 0,..., n r für a 0,..., a r und wird gegebenenfalls mit Werten m 0,..., m r beendet. (Die übrigen Variablen sind irrelevant.) Zu zeigen: solcher Ablauf kann durch eine (deterministische) TM simuliert werden, d. h. es gibt eine TM M = (Z, {, }, Γ, δ, z 0 ), für die gilt: terminiert P nicht, so terminiert M nicht für die Eingabe n0 n1 nr andernfalls gilt: z 0 n0 n1 nr z m0 m1 mr für ein z Z mit z m0 m1 mr final (Berechnet P eine Funktion f, so lässt sich aus M leicht eine TM gewinnen, die ebenfalls f berechnet.) 46 / 53

47 Beweis von Satz 7.6 (Skizze) (II) Beweis durch durch Induktion über dem Aufbau von P O.B.d.A.: r so gewählt, dass für den höchsten Index r von in P vorkommenden Variablen gilt: r r Also Behauptung: Ist r N und P ein WHILE-Programm, so dass i r gilt für alle in P vorkommenden Variablen a i, dann gibt es eine TM M, die P simuliert. Notation: Unterstrich für Kopfposition 47 / 53

48 Beweis von Satz 7.6 (Skizze) (III) 1.) P sei eine Zuweisung a i := 0 Arbeitsweise von M: n 0 n i n r Erinnerung: n i kodiert durch ni zum Trennzeichen von n i n 0 n i n r n 0 um eine Feldposition nach rechts verschieben n 0 n i 1 n r n 0 um eine Feldposition nach rechts verschieben. n 0 n r Kopf zurück n 0 n r n 0 um eine Feldposition nach rechts verschieben 2.) P sei Zuweisung a i := a j oder a i := a j + 1. Analoge TM-Arbeitsweise wie in 1.) 48 / 53

49 Beweis von Satz 7.6 (Skizze) (IV) 3.) P = loop a i do P enddo. Induktionsvoraussetzung: es gibt eine TM M, die P simuliert. O.B.d.A.: M benutzt kein Feld auf dem Band links von n 0. Arbeitsweise von M: n 0 n i n r n i nach links kopieren n i n 0 n r n i um 1 verringern, Kopf zu n 0 n i 1 n 0 n r Rechnung gemäß M n i 1 n 0 n r zur Zählvariablen gehen n i 1 n 0 n r. 49 / 53

50 Beweis von Satz 7.6 (Skizze) (IV) 3.) Arbeitsweise von M: (Fortsetzung). n i 2 n 0 n r. ebenso m 0 m r m 0 m r Kopf zu m 0, Trennzeichen vor m 0 löschen 50 / 53

51 Beweis von Satz 7.6 (Skizze) (V) 4.) P = while a i 0 do P enddo. Induktionsvoraussetzung: es gibt eine TM M, die P simuliert. Arbeitsweise von M: usw. n 0 n i n r ( ) zu n i falls n n 0 n i n i =0 r n 0 n r falls n i > 0: zurück zu n 0 n 0 n r Rechnung gemäß M n 0 n r. weiter bei ( ) 51 / 53

52 Beweis von Satz 7.6 (Skizze) (VI) 5.) P = P 1 ; P 2 Induktionsvoraussetzung: es gibt TM M 1 und M 2, die P 1 und P 2 simulieren. Arbeitsweise von M: n 0 n r Rechnung gemäß M 1 n 0 n r Rechnung gemäß M 2 (falls M 1 terminiert) m 0 m r (oder keine Terminierung von M 2 ) Insgesamt leistet M das Gewünschte. 52 / 53

53 Zusammenfassung 1 Lernziele 2 Höhere Programmiermodelle 3 LOOP-Programme 4 WHILE-Programme 5 Zusammenfassung 53 / 53

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 5 Formale Algorithmenmodelle A&P (WS 14/15): 05 Formale Algorithmenmodelle 1 Überblick Motivation Formale Algorithmenmodelle Registermaschine Abstrakte Maschinen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

effektives Verfahren ~ Algorithmus (Al Chwarismi) Regelsystem, Methode, Rezept, Gebrauchsanleitung Programm (griech. προγραφω, vor-schreiben)

effektives Verfahren ~ Algorithmus (Al Chwarismi) Regelsystem, Methode, Rezept, Gebrauchsanleitung Programm (griech. προγραφω, vor-schreiben) effektive Verfahren Ein Verfahren ist effektiv, wenn es für jeden Fall, der in einem zuvor abgegrenzten Bereich von eindeutigen Unterscheidungen auftreten kann, eine eindeutige und ausführbare Handlungsanweisung

Mehr

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

Mehr

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur 5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur In der Literatur findet sich eine Vielzahl von Varianten des Turingmaschinen-Konzeptes, die sich alle als äquivalent zum Grundkonzept

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Steuern des GSR-Interface mit QBasic

Steuern des GSR-Interface mit QBasic Steuern des GSR-Interface mit QBasic Erstellt von Jochen Sendler, Geschwister-Scholl-Realschule Mannheim Inhaltsverzeichnis 1. Die Programmiersprache QBasic 3 2. Starten von QBasic 3 3. Ansteuern einzelner

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema 2x 4 + x 3 + x + 3 div x 2 + x 1 = 2x 2 x + 3 (2x 4 + 2x 3 2x 2 ) x 3 + 2x 2 + x + 3 ( x

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung: Syntaxbaum Ausgabeprogramm Starte mit Syntaxbaum: Darstellung des eingegebenen Programms Wähle Zielarchitektur Wähle abstrakte

Mehr

Mathematische Maschinen

Mathematische Maschinen Mathematische Maschinen Ziel: Entwicklung eines allgemeinen Schemas zur Beschreibung von (mathematischen) Maschinen zur Ausführung von Algorithmen (hier: (partiellen) Berechnungsverfahren). Mathematische

Mehr

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

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Turing-Maschine, Berechenbarkeit INSTITUT FÜR THEORETISCHE 0 KIT 07.11.2011 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen

Mehr

SOI 2013. Die Schweizer Informatikolympiade

SOI 2013. Die Schweizer Informatikolympiade SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen

Mehr

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

VBA mit Excel. Einführung VBA mit Excel. Einführung

VBA mit Excel. Einführung VBA mit Excel. Einführung VBA mit Excel Einführung Die Programmiersprache VBA (Visual Basic for Applications) gewinnt zunehmend an Bedeutung, weil alle MSOfficeProgramme von VBA unterstützt werden. VBA ist aus der sehr viel mächtigeren

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls 4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls δ(q, a, Z) + δ(q, ɛ, Z) 1 (q, a, Z) Q Σ. Die von einem DPDA, der mit leerem Keller akzeptiert,

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

3. Ziel der Vorlesung

3. Ziel der Vorlesung 3. Ziel der Vorlesung Der Zweck der Vorlesung ist das Studium fundamentaler Konzepte in der Algorithmentheorie. Es werden relevante Maschinenmodelle, grundlegende und höhere Datenstrukturen sowie der Entwurf

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Schleifenprogrammierung in C/C++, Fortran und Pascal

Schleifenprogrammierung in C/C++, Fortran und Pascal Schleifenprogrammierung in C/C++, Fortran und Pascal Stefan Ackermann Mathematisches Institut der Universität Leipzig 8. April 2009 1 Die kopfgesteuerte Schleife Bei der kopfgesteuerten Schleife steht

Mehr

Kapitel 5: Applikative Programmierung

Kapitel 5: Applikative Programmierung Kapitel 5: Applikative Programmierung In der applikativen Programmierung wird ein Programm als eine mathematische Funktion von Eingabe-in Ausgabewerte betrachtet. Das Ausführen eines Programms besteht

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München MANUEL KALLWEIT & FABIAN KINDERMANN Literaturempfehlung: Vorlesungsskript von Heidrun Kolinsky zu FORTRAN 90/95: http://www.rz.uni-bayreuth.de/lehre/fortran90/vorlesung/index.html Schmitt, Günter (1996):

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Zusammenfassung Grundzüge der Informatik 4

Zusammenfassung Grundzüge der Informatik 4 Zusammenfassung Grundzüge der Informatik 4 Sommersemester 04 Thorsten Wink 21. September 2004 Version 1.2 Dieses Dokument wurde in L A TEX 2εgeschrieben. Stand: 21. September 2004 Inhaltsverzeichnis 1

Mehr

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt:

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt: Informatik 13: Gierhardt Theoretische Informatik III Berechenbarkeit Nicht-berechenbare Funktionen Nach der Church-Turing-These kann alles, was berechenbar ist, mit einer Turing-Maschine oder einer While-Maschine

Mehr

Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise:

Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise: Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 5.4 Prädikatenlogik mit Gleichheit Resolution 192 Beispiel Bsp.: Betrachte Schlussweise in: 1 Wenn es regnet, dann wird die Straße nass. R N

Mehr

SWP Prüfungsvorbereitung

SWP Prüfungsvorbereitung 20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c

Mehr

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach

Mehr

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

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2007 Übersicht 1 Allgemein Teilgebiete der Informatik ohne Theoretische Grundlagen 2 Fragen an

Mehr

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik Einheit 1 Mathematische Methodik 1. Problemlösen 2. Beweistechniken 3. Wichtige Grundbegriffe Methodik des Problemlösens Klärung der Voraussetzungen Welche Begriffe sind zum Verständnis

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

Softwareentwicklung Allgemeines und prozedurale Konstrukte

Softwareentwicklung Allgemeines und prozedurale Konstrukte Mag. iur. Dr. techn. Michael Sonntag Softwareentwicklung Allgemeines und prozedurale Konstrukte E-Mail: sonntag@fim.uni-linz.ac.at http://www.fim.uni-linz.ac.at/staff/sonntag.htm Institut für Informationsverarbeitung

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik - das Quiz zur Vorlesung Teil I - Grundzüge der Logik In der Logik geht es um... (A) die Formen korrekten Folgerns (B) die Unterscheidung von wahr und falsch (C) das Finden von

Mehr

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

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf))

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf)) Formale Methoden der Informatik WS / Lehrstuhl für Datenbanken und Künstliche Intelligenz Prof.Dr.Dr.F.J.Radermacher H. Ünver T. Rehfeld J. Dollinger 8. Aufgabenblatt Besprechung in den Tutorien vom..

Mehr

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract: Spezifikation der zulässigen Parameter Bemerkungen: Bei jeder (partiellen) Funktion muss man sich überlegen und dokumentieren, welche aktuellen Parameter bei einer Anwendung zulässig sein sollen. Der Anwender

Mehr

Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein.

Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein. Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein. 3 1384788374932954500363985493554603584759389 mod 28374618732464817362847326847331872341234 Wieso kann ein

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395 Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395 Turing-Machine Wir suchen ein Modell zur formalen Definition der Berechenbarkeit von Funktionen und deren Zeit- und Platzbedarf. Verschiedene Modelle

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen

Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen 26. März 2012 Proff Malte Helmert und Christian Tschudin Departement Mathematik und Informatik, Universität Basel

Mehr

BAUINFORMATIK. SS 2013 Vorlesung 1 Johannes Lange

BAUINFORMATIK. SS 2013 Vorlesung 1 Johannes Lange BAUINFORMATIK SS 2013 Vorlesung 1 Johannes Lange Vorstellung 2 Dr.-Ing. Johannes Lange Softwareentwicklung, Organisation Projekt-, Qualitätsmanagement CAD Gebäudebetrachtung Technische Ausrüstung (TGA)

Mehr

Gliederung Programmiersprachen. Programmiersprachen Einführung in C. Kontrollstrukturen. Verzweigung mit IF. Beispiel: Zahlenklassifizieren

Gliederung Programmiersprachen. Programmiersprachen Einführung in C. Kontrollstrukturen. Verzweigung mit IF. Beispiel: Zahlenklassifizieren Programmiersprachen Einführung in C Teil 5: Prof. Dr. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Vorlesung. Funktionen/Abbildungen 1

Vorlesung. Funktionen/Abbildungen 1 Vorlesung Funktionen/Abbildungen 1 1 Grundlagen Hinweis: In dieser Vorlesung werden Funktionen und Abbildungen synonym verwendet. In der Schule wird eine Funktion häufig als eindeutige Zuordnung definiert.

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 6. Juni - 13. Juni 1 / 49 Die Turingmaschine war das erste (bzw. zweite) formale Modell der Berechenbarkeit. Sie wurden bereits 1936 (also lange

Mehr

Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach

Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach Übungsaufgaben zum Kapitel 1 1. Aufgabe In einer EXCEL Tabelle stehen folgende Zahlen: Definiere einen CommandButton, der diese

Mehr

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Grundlagen der Programm- und Systementwicklung Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Technische Universität München Institut für Informatik Software &

Mehr

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE: FORMALISIERUNG VON ALGORITHMEN Wegen der beobachteten Zusammenhänge zwischen Berechnungs-, Entscheidungs- und Aufzählungsverfahren genügt es Berechnungsverfahren zu formalisieren. Weiter genügt es Verfahren

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Kontrollstrukturen, Strukturierte Programmierung

Kontrollstrukturen, Strukturierte Programmierung , Strukturierte Programmierung Steuer- und Kontrollfluss Strukturierte Programmierung Arten von Strukturblöcken Sequenz Alternative Iteration C-Spezifisches Seite 1 Elementare Algorithmen SelectionSort

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

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

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

Mehr

Ecxel Makros Programmieren

Ecxel Makros Programmieren Ecxel Makros Programmieren http://paranoia.scienceontheweb.net/paranoia/ - mailto: paranoia @ hush.com Wed Feb 3 18:20:05 CET 2010 22. August 2011 Inhaltsverzeichnis 1 Intro 2 2 Mein erstes Makro 3 3 Variablen

Mehr

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen Berechenbarkeit und Komlexität Entscheidbarkeit und Unentscheidbarkeit Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Comutation (RISC) Johannes Keler University,

Mehr

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

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert.

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert. 1 Einführung In diesem Kapitel wird die moderne Programmiersprache Python vorgestellt. Nach einigen Bemerkungen zur Installation dieser Sprache wird gezeigt, wie Python interaktiv ausgeführt werden kann.

Mehr

3 Berechnungen und Variablen

3 Berechnungen und Variablen 3 Berechnungen und Variablen Du hast Python installiert und weißt, wie man die Python-Shell startet. Jetzt kannst Du etwas damit machen. Wir fangen mit ein paar einfachen Berechnungen an und wenden uns

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

7. Textfelder zur Zahleneingabe

7. Textfelder zur Zahleneingabe Einführung in die VBA-Programmierung von Excel, Teil 2 Th.Biedermann Hermannsburg 09/2003 S. 1 7. Textfelder zur Zahleneingabe Bereits im 1. Teil dieses Manuskripts wurde in Kap. 6.5.4 beschrieben, welche

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

Bestimmung einer ersten

Bestimmung einer ersten Kapitel 6 Bestimmung einer ersten zulässigen Basislösung Ein Problem, was man für die Durchführung der Simplexmethode lösen muss, ist die Bestimmung einer ersten zulässigen Basislösung. Wie gut das geht,

Mehr

E-PRIME TUTORIUM Die Programmiersprache BASIC

E-PRIME TUTORIUM Die Programmiersprache BASIC E-PRIME TUTORIUM Die Programmiersprache BASIC BASIC Beginner s All-purpose Symbolic Instruction Code symbolische Allzweck-Programmiersprache für Anfänger Design-Ziel klar: Eine einfache, für Anfänger geeignete

Mehr

Seminar Finanzmathematik

Seminar Finanzmathematik Seminar Finanzmathematik Simulationen zur Black-Scholes Formel von Christian Schmitz Übersicht Zufallszahlen am Computer Optionspreis als Erwartungswert Aktienkurse simulieren Black-Scholes Formel Theorie

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Ideen der Informatik. Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann

Ideen der Informatik. Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann Ideen der Informatik Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann Was ist ein Computer? 2 Übersicht Was ist ein Computer, ein Programm? Turings Antwort

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr