Erkundung – Kara führt Aktionen wiederholt aus
Das Problem: Eine Baumreihe umlaufen
Kara steht vor einer Baumreihe, weiß jedoch nicht, wie lang sie ist. Kara möchte um die Baumreihe laufen und den Weg mit Blättern auslegen.
Aufgabe 1: Ein erster Versuch mit bekannten Mitteln
Wir versuchen, das Problem mit den uns bekannten Mitteln zu lösen. Zuerst betrachten wir dabei einfachere Spezialfälle und wir arbeiten uns Schritt für Schritt zum eigentlichen Problem vor.
(a) Schreibe ein kurzes Programm, mit dem Kara eine Baumreihe der Länge 4 (wie auf den Bildern oben) umläuft und den Weg mit Kleeblättern auslegt. Teile das Programm dabei gedanklich in sinnvolle Abschnitte ein, zum Beispiel „1. Neben den ersten Baum gehen“, ... Solche Kommentare kannst du auch im Programm verwenden, indem du die entsprechende Zeile mit einem „#“ beginnst. Erkläre kurz, warum man dieses Problem mit einer Anweisungssequenz lösen kann und keine komplizierteren Konstrukte benötigt.
(b) Kara soll nicht wissen, wie viele Bäume sie genau vor sich hat. Ändere dein Programm aus Aufgabe 1 so ab, dass es für einen, zwei, drei oder vier Bäume funktioniert. Nutze nur Befehle, die wir schon kennen. Überlege dir zuerst, welchen der Abschnitte aus Teil (a) du hierfür verändern musst. Erkläre dann kurz, warum dieses Problem nicht mehr mit einer Anweisungssequenz lösbar ist.
(c) Bislang haben wir das Problem für bis zu vier Bäume gelöst. Passe das Programm so an, dass es auch für bis zu zehn Bäume funktioniert. Erweitere es dann so, dass es auch für bis zu 100 Bäume funktioniert.
Dir ist in Teil (b) sicher aufgefallen, dass du nun in dem Programmabschnitt, in dem Kara an den Bäumen vorbeiläuft, immer wieder dieselben Befehle benötigst. Brauchst du Textabschnitte (z.B. Quelltext) mehrfach, so bietet es sich an, diese durch Kopieren zu vervielfältigen. („Copy & Paste“) Das geht auf zwei Wege:
- Markiere den entsprechenden Abschnitt und klicke mit der rechten Maustaste darauf. Wähle „Kopieren“ aus. Klicke nun an die Stelle, wo du den Text einfügen willst, mit der rechten Maustaste und wähle „Einfügen“ aus.
- Markiere den entsprechenden Abschnitt. Drücke „Strg.“ (bzw. die Befehlstaste unter macOS) und „C“ gleichzeitig). Dadurch wird der Text in die Zwischenablage kopiert. Klicke nun an die Stelle, wo du den Text einfügen willst. Drücke nun „Strg.“ (bzw. die Befehlstaste unter macOS) und „V“ gleichzeitig). Der Text wird eingefügt.
(d) Offensichtlich erhalten wir hier kein übersichtliches Programm. Doch es kommt noch schlimmer – das oben beschriebene Problem können wir so gar nicht lösen. Erkläre, wieso man auf diese Weise niemals ein Programm erstellen kann, das für jede beliebige noch so große Anzahl an Bäumen funktioniert.
Aufgabe 2: Ein Lösungsverfahren entwickeln
Nach dem unbefriedigenden Ergebnis aus Aufgabe 1 probieren wir, das Lösungsverfahren auf einem anderen Weg zu beschreiben.
(a) Kannst du die Lösung vervollständigen? Welche Aktionen müssen wiederholt durchgeführt werden? Welche Aktionen müssen vor der SOLANGE-Anweisung erfolgen, welche danach?
... SOLANGE ein Baumstumpf rechts steht: ... ...
(b) Versuche, das Lösungsverfahren in Python zu beschreiben. Beachte, dass man die zu wiederholenden Anweisungen (um 4 Einheiten) einrücken muss. Teste das Programm anschließend mit unterschiedlich langen Baumreihen.
...
while kara.treeRight():
...
...
(c) Welche Vorteile hat das Vorgehen aus dieser Aufgabe im Vergleich zu Aufgabe 1?
Aufgabe 3: Ein ähnliches Problem
Kara soll jetzt einmal ganz um eine Baumreihe laufen und den Weg mit Kleeblättern auslegen.
Löse das Problem analog zu Aufgabe 2.