MINT lernen

Abituraufgaben: Algorithmen in Worten

Zwei Abituraufgaben zum Verbalisieren, Übersetzen und Dokumentieren von Algorithmen — mit Hinweisen und Erwartungshorizont.

Dein Fortschritt:
0 / 0 Aufgaben
1

Die Gewächshaus-Bewässerung

AFB I–II

Eine Gärtnerei möchte die Bewässerung ihres Gewächshauses automatisieren. Ein Sensor misst die Bodenfeuchte in Prozent (0 bis 100). Eine Pumpe kann jeweils eine Portion von 0,5 Litern abgeben. Die Erde gilt ab einer Feuchte von 45 % als ausreichend feucht; nach jeder Portion muss das Wasser 10 Minuten einsickern, bevor erneut gemessen wird. Die Gärtnerin beschreibt ihr bisheriges Vorgehen so:

„Morgens schaue ich nach der Erde. Ist sie ziemlich trocken, gieße ich ein bisschen, warte eine Weile und mache das ein paar Mal, bis es passt. Danach schreibe ich auf, wie viel ich gegossen habe, usw.“

  1. Nennen Sie vier Formulierungen aus der Beschreibung, die für einen Algorithmus nicht eindeutig genug sind, und geben Sie jeweils eine präzise Ersatzformulierung an.
  2. Formulieren Sie den Bewässerungsalgorithmus als nummerierte Verbalisierung. Verwenden Sie die Variablen feuchte und liter.
  3. Erstellen Sie zu Ihrer Verbalisierung den Pseudocode.

Hinweise

Hinweis zu Aufgabe a)
Suche nach Wörtern, bei denen zwei Personen etwas Verschiedenes verstehen könnten — oder bei denen eine Maschine nicht weiß, wann Schluss ist.
Hinweis zu Aufgabe b)
Ein Schritt = eine Tätigkeit. Was muss vor der Wiederholung festgelegt werden, was wird wiederholt, und woran erkennt man das Ende?
Hinweis zu Aufgabe c)
Übersetze jeden Satz einzeln: Zuweisungen mit ←, die Wiederholung mit „solange … wiederhole … ende solange“.

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)

„schaue nach der Erde“ → „Miss die Bodenfeuchte und speichere sie in feuchte.“ · „ziemlich trocken“ → „feuchte < 45“ · „ein bisschen“ → „0,5 Liter“ · „eine Weile“ → „10 Minuten“ · „ein paar Mal, bis es passt“ → „solange feuchte < 45 ist“ · „usw.“ → streichen bzw. durch konkrete weitere Schritte ersetzen. (Vier davon genügen.)

Erwartungshorizont zu Aufgabe b)
  1. Setze liter auf 0.
  2. Miss die Bodenfeuchte und speichere sie in feuchte.
  3. Solange feuchte kleiner als 45 ist, wiederhole:
    1. Gib eine Portion von 0,5 Litern ab.
    2. Erhöhe liter um 0,5.
    3. Warte 10 Minuten.
    4. Miss die Bodenfeuchte und speichere sie in feuchte.
  4. Gib liter aus.

Schritte 1 und 2 dürfen vertauscht werden. Wichtig: erneutes Messen im Rumpf, sonst ändert sich feuchte nie und die Schleife endet nicht.

Erwartungshorizont zu Aufgabe c)
Pseudocode
liter ← 0
Eingabe: feuchte
solange feuchte < 45 wiederhole
  gib 0,5 Liter ab
  liter ← liter + 0,5
  warte 10 Minuten
  Eingabe: feuchte
ende solange
Ausgabe: liter

Jede Zeile entspricht genau einem Schritt der Verbalisierung; die Messung ist als Eingabe modelliert.

2

Die Schrittzähler-App

AFB II–III

Eine Schrittzähler-App vergibt am Ende jeder Woche ein Abzeichen. Das Entwicklerteam hat die Regel nur als Java-Quelltext festgehalten (sc liest die Schrittzahl eines Tages ein):

Java
int punkte = 0;
for (int tag = 1; tag <= 7; tag++) {
    int schritte = sc.nextInt();
    if (schritte >= 10000) {
        punkte = punkte + 3;
    } else if (schritte >= 6000) {
        punkte = punkte + 1;
    }
}
if (punkte >= 15) {
    System.out.println("Abzeichen erhalten");
} else {
    System.out.println("Weiter so!");
}
  1. Erklären Sie die Funktionsweise des Quelltextes, indem Sie ihn in eine nummerierte, eindeutige Verbalisierung übertragen.
  2. Implementieren Sie den Algorithmus in Python so, dass zusätzlich die Anzahl der Tage mit mindestens 10 000 Schritten ausgegeben wird.
  3. Bewerten Sie den Vorschlag eines Teammitglieds, Algorithmen künftig nur noch als Java-Quelltext zu dokumentieren und auf Verbalisierung und Pseudocode zu verzichten.

Hinweise

Hinweis zu Aufgabe a)
Gehe Zeile für Zeile vor: Welche Variable wird wofür verwendet? Welche Punkte gibt es in welchem Fall — und in welchem Fall gar keine?
Hinweis zu Aufgabe b)
Du brauchst einen zweiten Zähler, der nur im ersten Zweig der Verzweigung erhöht wird. Achte auf die Grenzen von range.
Hinweis zu Aufgabe c)
Überlege, wer die Dokumentation liest (Programmierer, Fachabteilung, neue Teammitglieder) und was passiert, wenn die Programmiersprache wechselt.

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
  1. Setze punkte auf 0.
  2. Wiederhole für jeden der 7 Tage einer Woche:
    1. Lies die Schrittzahl des Tages in schritte ein.
    2. Wenn schritte mindestens 10 000 beträgt, erhöhe punkte um 3; sonst, wenn schritte mindestens 6000 beträgt, erhöhe punkte um 1. Andernfalls ändert sich punkte nicht.
  3. Wenn punkte mindestens 15 beträgt, gib „Abzeichen erhalten“ aus, sonst „Weiter so!“.

Es sind höchstens 7 · 3 = 21 Punkte möglich; das Abzeichen gibt es z. B. bei fünf Tagen ab 10 000 Schritten.

Erwartungshorizont zu Aufgabe b)
Python
punkte = 0
viel = 0
for tag in range(1, 8):
    schritte = int(input())
    if schritte >= 10000:
        punkte = punkte + 3
        viel = viel + 1
    elif schritte >= 6000:
        punkte = punkte + 1
if punkte >= 15:
    print("Abzeichen erhalten")
else:
    print("Weiter so!")
print(viel)

Der Zähler viel wird nur im ersten Zweig erhöht; range(1, 8) liefert die Tage 1 bis 7.

Erwartungshorizont zu Aufgabe c)

Für den Vorschlag: Der Quelltext ist exakt und immer aktuell, doppelte Dokumentation kann veralten. Dagegen: Fachleute ohne Java-Kenntnisse (z. B. aus dem Marketing oder Gesundheitsbereich) können die Regel nicht prüfen; bei einem Wechsel der Sprache (z. B. zu Python) muss man die Idee erst aus dem Code herauslesen; Details wie tag++ oder else if verdecken den Kern der Regel. Verbalisierung und Pseudocode sind sprachunabhängig und für alle lesbar.

Urteil: Der Vorschlag ist abzulehnen oder abzuschwächen — sinnvoll ist, die Regel sprachunabhängig (Verbalisierung oder Pseudocode) zu dokumentieren und den Quelltext daran auszurichten.