Aufgabe Vorschlag C1 - Aufgabe 2 · Abitur Hessen Informatik LK 2022

Thema: Grammatiken, reguläre Ausdrücke und Syntaxdiagramme · 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 (x0,x1,x2,…x0, x1, x2, \dots), Konstanten (0,1,2,…0, 1, 2, \dots), Trennsymbolen (;,:=;,:=),

Operationszeichen (+,−,≠+, -, \neq) und Schlüsselwörtern ( WHILE, DO, END).

WHILE-Programme sind wie folgt definiert:

Jede Wertzuweisung mit den Variablen xixi und xjxj und der Konstanten c∈N0c \in \mathbb{N}_0 der Form xi:=xj+cxi:= xj + c bzw. xi:=xj−cxi:= xj - c ist ein WHILE-Programm.

Falls P1P_1 und P2P_2 WHILE-Programme sind, dann ist auch P1;P2P_1; P_2 ein WHILE-Programm.

Falls PP ein WHILE-Programm ist und xixi eine Variable, dann ist auch WHILE xi≠0xi \neq 0 DO PP END ein WHILE-Programm.

Bei der Wertzuweisung xi:=xj+cxi:= xj + c wird der Variablen xixi die Summe der Werte von xjxj und cc zugewiesen. Bei der Wertzuweisung xi:=xj−cxi:= xj - c ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist xj−c<0xj - c < 0, wird der Variablen xixi der Wert 00 zugewiesen.

Die Komposition P1;P2P_1; P_2 wird so interpretiert, dass zuerst P1P_1 und anschließend P2P_2 ausgeführt wird.

Innerhalb einer WHILE-Schleife WHILE xi≠0xi \neq 0 DO PP END ist das Programm PP solange wiederholt auszuführen, wie der Wert von xixi ungleich Null ist.

Material 1

WHILE-Programm für die WHILE-berechenbare Funktion f(a,b)=a∗bf(a, b) = a * b

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 x1x1 und x2x2 stehen anfangs die Werte aa und bb. Die restlichen Variablen sind mit dem Wert 00 vorbelegt.

Material 2

WHILE-Programm für die WHILE-berechenbare Funktion f(a,b)=abf(a, b) = a^b

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 x0x0, x1x1 und x2x2 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: x3x3 ist mit dem Wert 00 vorbelegt.

2 Entwerfen Sie eine Grammatik, die die Sprache der WHILE-Programme erzeugt.

Aufgabenstellung: Aufgabe Vorschlag C1 - Aufgabe 2 · Abitur Hessen Informatik LK 2022

Lösung

Nach den offiziellen Korrekturhinweisen

Entwerfen Sie eine Grammatik, die die Sprache der WHILE-Programme erzeugt.

Lösung: T = {WHILE, DO, END, ;, :=, +, -, ≠, x, 0, 1, ..., 9} N = {Programm, Zuweisung, Schleife, Konstante, Ziffer, ZifferN, Variable, Operator} Startsymbol = Programm P = { Programm → Zuweisung | Schleife | Programm ; Programm, Zuweisung → Variable := Variable Operator Konstante, Schleife → WHILE Variable ≠ 0 DO Programm END, Konstante → 0 | Ziffer | Ziffer ZifferN, Ziffer → 1 | 2 | ... | 9, ZifferN → 0 | Ziffer | ZifferN ZifferN, Variable → x Konstante, Operator → + | - }

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 1 · LK 2022 · Aufgabe Vorschlag C1 - Aufgabe 3 · LK 2022 ›

Mehr Aufgaben zu Grammatiken, reguläre Ausdrücke und Syntaxdiagramme