VL-09: LOOP und WHILE Programme I Flashcards
Wie ist die LOOP Programmiersprache syntaktisch aufgebaut?
Variablen: x0, x1, x2, …
Konstanten: 0, 1
Symbole: :=, +, ;
Schlüsselwörter: LOOP, DO, ENDLOOP
Zuweisung: xi := xj + c
mit Variablen xi, xj und Konstante c
Hintereinanderausführung: P1 ; P2
mit Programmen P1 und P2
LOOP-Konstrukt: LOOP xi DO P1 ENDLOOP
mit Variable xi und Programm P1
Welche zusätzlichen syntaktischen Elemente hat die WHILE Programmiersprache?
Symbole: !=
Schlüsselwörter: WHILE, ENDWHILE
WHILE-Konstrukt: WHILE xi != 0 DO P ENDWHILE
mit Variable xi und Programm P
Wie ist der initiale Zustand eines LOOP bzw. WHILE Programms? Wie wird die Eingabe übermittelt?
- Eingabe: Variablen x1 - xn
- Alle anderen Variablen = 0
Sind LOOP und WHILE turing-mächtig?
WHILE ja
LOOP nein
Wie ist die Ackermann-Funktion definiert?
(m,n) -> Z
A(0, n) = n + 1
A(m + 1, 0) = A(m, 1)
A(m + 1, n + 1) = A(m, A(m + 1, n))
Was ist die UpArrow Notation?
a ↑m b := 1 wenn b = 0
a ↑m b := a · b wenn m = 0
a ↑m b := a^b wenn m = 1
a ↑m b := a ↑m−1(a ↑m (b − 1)) sonst
Wie lässt sich die Ackermann Funktion mit der UpArrow Notation beschreiben?
A(1, n) = 2 + (n + 3) − 3
A(2, n) = 2 · (n + 3) − 3
A(3, n) = 2 ↑ (n + 3) − 3
A(4, n) = 2 ↑↑ (n + 3) − 3
A(5, n) = 2 ↑↑↑ (n + 3) − 3
A(m, n) = 2 ↑m−2 (n + 3) − 3
- A wächst sehr stark mit steigendem m
Wie lässt sich beweisen, dass WHILE turing mächtig ist?
- Induktiv
- Simulation einer TM durch WHILE Programm:
Variablen:
- Zustand
- Band vor Kopf
- Symbol unter Kopf
- Band nach Kopf (Inverse)
Schritt:
- Update Zustand
- Update Symbol unter Kopf
- Bewege Kopf L/N/R
Ablauf:
1. Initialisierung
2. WHILE Zustand != Endzustand DO
IF Zustand = x AND Kopf = y DO z …
….