Aufgabe Vorschlag C1 - Aufgabe 6 · Abitur Hessen Informatik LK 2022
Thema: Registermaschine und Berechenbarkeit · Aus der Prüfung LK (2022)
Aufgabenstellung
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
Eine Funktion ist genau dann WHILE-berechenbar, wenn sie Registermaschinen-berechenbar ist.
6.1
In Material 2 ist ein WHILE-Programm gegeben, das eine Funktion berechnet.
Implementieren Sie ein kommentiertes Registermaschinenprogramm, das ebenfalls berechnet.
[5 BE]
6.2
Bestätigen Sie die Aussage, dass jede WHILE-berechenbare Funktion Registermaschinen-berechenbar ist.
[4 BE]

Lösung
Nach den offiziellen Korrekturhinweisen
6.1 In Material 2 ist ein WHILE-Programm gegeben, das eine Funktion berechnet. Implementieren Sie ein kommentiertes Registermaschinenprogramm, das ebenfalls berechnet.
Lösung: ```pseudocode // R1: Wert a // R2: Wert b LOAD #1 // Speichere Wert 1 in R3 STORE 3 Schleife: LOAD 2 JZERO Ende // Überprüfe Abbruchbedingung LOAD 1 // multipliziere Wert a mit R3 MUL 3 // und speichere Zwischenergebnis STORE 3 // in R3 LOAD 2 SUB #1 STORE 2 // dekrementiere Wert in R2 GOTO Schleife // Sprung zur Marke Schleife Ende: LOAD 3 // Lade Ergebnis in Akkumulator END ```
6.2 Bestätigen Sie die Aussage, dass jede WHILE-berechenbare Funktion Registermaschinen-berechenbar ist.
Lösung: Die Variablen des WHILE-Programms entsprechen den Registern der Registermaschine. In beiden Darstellungsformen werden als Eingabe nur natürliche Zahlen zugelassen und dementsprechend wird in beiden Darstellungsformen bei der Subtraktion im Falle einer negativen Differenz das Ergebnis auf 0 gesetzt. Wertzuweisungen () können in der Registermaschine mittels , bzw. und dargestellt werden, eine Sequenz besteht bei einer Registermaschine aus mehreren Zeilen des Programmcodes und die WHILE-Schleife kann man mit einer Sprungmarke und dem bedingten Sprungbefehl bzw. darstellen. Man kann daher jedes WHILE-Programm schematisch in ein Registermaschinenprogramm übersetzen. Jede WHILE-berechenbare Funktion ist damit Registermaschinen-berechenbar.
Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium
Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.
‹ Aufgabe Vorschlag C1 - Aufgabe 5 · LK 2022 · Aufgabe Vorschlag C1 - Aufgabe 7 · LK 2022 ›