Aufgabe Vorschlag C1 - Aufgabe 3 · Abitur Hessen Informatik LK 2021
Thema: Registermaschine und Berechenbarkeit · Aus der Prüfung LK (2021)
Aufgabenstellung
Häufig wird es als interessant empfunden, wenn die Noten eines Akkords vorher schon einmal als Einzelnoten aufgetreten sind, der Klang gewissermaßen vorbereitet wurde. Im folgenden Beispiel ist der erste Akkord vorbereitet, der zweite nicht, weil das c im Akkord seit dem vorangegangenen Akkord nicht vorhanden ist.
Mit einer Registermaschine kann man feststellen, ob in einem Musikstück alle Akkorde auf diese Weise vorbereitet wurden. Der Anfang eines solchen Registermaschinenprogramms befindet sich in Material 2. Zu Beginn steht in Register R10 die Adresse des Registers mit der ersten Note. Die Notenfolge kann als syntaktisch korrekt angenommen werden. Als Ergebnis soll im Akkumulator eine 0 stehen, falls alle Akkorde vorbereitet wurden, ansonsten eine 1.
Material 2
Anfang des Registermaschinenprogramms
// Start: R10 = Adresse der ersten Note (das Ende der Noten ist beim
// Auftreten der ersten 0 erreicht)
// Ende: Akkumulator = 0: alle Dreiklänge sind vorbereitet.
// Akkumulator = 1: nicht alle Dreiklänge sind vorbereitet.
// Die Noten und Zeichen werden wie folgt codiert:
// a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7
// < = 8 und > = 9
Start: LOAD #0
STORE 1
STORE 2
STORE 3
STORE 4
STORE 5
STORE 6
STORE 7
Note: LOAD *10
JZERO Ende
STORE 8
SUB #7
JNZERO Akkord
LOAD #1
STORE *8
ADD 10
STORE 10
GOTO Note
Akkord:... // zu implementieren in Aufgabe 3.2
Ende: END
3.1
Analysieren Sie den Quellcode in Material 2 und erklären Sie die Bedeutung der Register R1 bis R7. [6 BE]
3.2
Implementieren Sie eine kommentierte Erweiterung des Registermaschinenprogramms in Material 2, zur Entscheidung, ob alle Akkorde vorbereitet wurden. [7 BE]

Lösung
Nach den offiziellen Korrekturhinweisen
3.1 Analysieren Sie den Quellcode in Material 2 und erklären Sie die Bedeutung der Register R1 bis R7.
Lösung: In den Registern R1 bis R7 speichert die Registermaschine (als Flags 0 bzw. 1), welche der Töne a bis g (codiert als 1 bis 7) seit dem letzten Akkord bzw. seit Beginn bereits als Einzelnoten aufgetreten sind.
3.2 Implementieren Sie eine kommentierte Erweiterung des Registermaschinenprogramms in Material 2, zur Entscheidung, ob alle Akkorde vorbereitet wurden.
Lösung: ```pseudocode Akkord: LOAD 10 // Bestimme Adresse des nächsten ADD #1 // Akkordzeichens durch Inkrementieren STORE 10 LOAD *10 // Lade Akkordzeichen und speichere STORE 8 // es in R8 SUB #8 // Teste auf Akkordende JNZERO AkEnde LOAD *8 // Ist der Wert 1, so ist Note JNZERO Akkord // vorbereitet LOAD #1 // ansonsten ist es kein vorbereitetes END // Zeichen und das Programm wird // beendet AkEnde: LOAD 10 // Erhöhe Adresse für nächstes Zeichen ADD #1 STORE 10 GOTO Start ```
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 C2 - Aufgabe 2 · LK 2022 · Aufgabe Vorschlag C1 - Aufgabe 4 · LK 2021 ›