Theoretische Informatik für Wirtschaftsinformatik und Lehramt
|
|
- Kristina Gudrun Schenck
- vor 6 Jahren
- Abrufe
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 Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
MehrAlgorithmen 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
Mehr1 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
Mehreffektives 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
MehrStephan 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,
Mehr5. 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
MehrEntwurf 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
MehrProgrammierkurs: 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
MehrSteuern 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
MehrErweiterung 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
MehrDivision 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
MehrPHP 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
MehrKode-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
MehrMathematische Maschinen
Mathematische Maschinen Ziel: Entwicklung eines allgemeinen Schemas zur Beschreibung von (mathematischen) Maschinen zur Ausführung von Algorithmen (hier: (partiellen) Berechnungsverfahren). Mathematische
MehrGliederung. 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.
MehrInformatik. 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
MehrTheoretische 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
MehrSOI 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
MehrLua 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
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
Mehr2 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,
MehrVBA 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
MehrProgrammierung 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/
MehrEinfü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
Mehr4 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
Mehr4.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,
MehrKontrollstrukturen, 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
MehrProgrammieren 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
Mehr3. 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
MehrGrammatiken. 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
MehrSprachbeschreibung 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
MehrSchleifenprogrammierung 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
MehrKapitel 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
Mehr5.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!
MehrJava 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
MehrSchmitt, 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):
MehrProgrammieren 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;
MehrZusammenfassung 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
MehrZur 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
MehrBeispiel. 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
MehrSWP 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 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach
MehrProgrammieren. 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
MehrTheoretische 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
MehrProgrammieren 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
MehrEinfache 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
MehrTheoretische 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
MehrLehrstuhl 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
MehrSoftwareentwicklung 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
MehrTheoretische 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
MehrInhaltsverzeichnis. 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
MehrRekursionsanfang, 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..
MehrSpezifikation 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
MehrOft 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
Mehr1 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
MehrDie 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.
MehrDeterministische 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
MehrKap 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 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
MehrTheorie 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
MehrBAUINFORMATIK. 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)
MehrGliederung 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
MehrModul 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
MehrVorlesung. 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.
MehrModellierung 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,
MehrGTI. 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
MehrVisual 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
MehrFunktionale 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 &
Mehr3. 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
MehrDas Briefträgerproblem
Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................
MehrKontrollstrukturen, Strukturierte Programmierung
, Strukturierte Programmierung Steuer- und Kontrollfluss Strukturierte Programmierung Arten von Strukturblöcken Sequenz Alternative Iteration C-Spezifisches Seite 1 Elementare Algorithmen SelectionSort
MehrDr. 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
MehrEinfü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
MehrEinfü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
Mehr2: 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,
MehrPython 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
MehrEinfache 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
MehrEinfü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,
MehrGrundlagen 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
MehrTechnische 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
MehrKontrollstrukturen - 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,
MehrI. 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
MehrAssembler-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
MehrEcxel 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
MehrEntscheidungsprobleme. 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,
MehrEinfü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
MehrInformationsblatt 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
MehrPython 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.
Mehr3 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
Mehr1. 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
Mehr7. 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
MehrEinfü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
MehrCodierungstheorie 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
MehrBestimmung 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,
MehrE-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
MehrSeminar Finanzmathematik
Seminar Finanzmathematik Simulationen zur Black-Scholes Formel von Christian Schmitz Übersicht Zufallszahlen am Computer Optionspreis als Erwartungswert Aktienkurse simulieren Black-Scholes Formel Theorie
MehrGrundlagen 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.
MehrNoch 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
MehrIdeen 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
MehrSysteme 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