Übungen
Aufgabe 1: Einen Algorithmus in Struktogrammform beschreiben (einfach)
Kara soll einmal um einen Baum laufen. Beachte, dass Kara danach in derselben Position am Baum steht.
Die Idee zu einem Algorithmus könnte wie folgt in Worten beschrieben werden:
Zuerst die Ausgangsposition mit einem Kleeblatt markieren und einen Schritt weitergehen. Solange man sich nicht auf einem Kleeblatt befindet, einen weiteren Schritt "um den Baum herum" gehen. Abschließend das Kleeblatt wieder entfernen.
Entwickle einen hierzu passenden Algorithmus in Struktogrammform und übersetze ihn in ein Python-Programm.
Aufgabe 2: Einen Algorithmus in Struktogrammform beschreiben (schwierig)
Kara merkt sich die Uhrzeit mit einem Pilz, der schrittweise um einen Baum geschoben wird. Kara soll hier den Pilz - egal, wo er sich zunächst befindet - um einen Schritt weiterverschieben.
(a) Entwickle einen Algorithmus in Struktogrammform und übersetze ihn in ein Python-Programm.
(b) (noch schwieriger) Kara soll auch wieder zurück zur Ausgangsposition laufen.
Aufgabe 3: Fehler suchen
Kara soll die Kleeblätter, die als Rechteck ausgelegt sind, alle einsammeln.
T. hat das folgende Programm zur Lösung des Problems entwickelt.
while kara.onLeaf(): kara.removeleaf() kara.move() kara.turnRight() while kara.onLeaf(): kara.removeleaf() kara.move() kara.turnRight() while kara.onLeaf(): kara.removeleaf() kara.move() kara.turnRight() while kara.onLeaf(): kara.removeleaf() kara.move() kara.turnRight()
(a) Teste erst einmal das Programm. Es erscheint direkt eine Fehlermeldung. Welchen syntaktischen Fehler hat T. gemacht?
(b) Korrigiere den Fehler und teste erneut das Programm. Es leistet noch nicht das Gewünschte. Irgend etwas stimmt mit den Einrückungen noch nicht. Kannst du diesen Fehler auch noch beheben?
(c) Wenn du den Einrückfehler verbessert hast, dann leistet das Programm immer noch nicht das Gewünschte. Der Algorithmus, der dem Programm zu Grunde liegt, ist noch nicht in Ordnung. Kannst du das auch noch korrigieren?
(d) Wenn du ein korrekt arbeitendes Programm hast, dann stelle den zu Grunde liegenden Algorithmus in Struktogrammform dar.
Aufgabe 4: Ein schwieriges Problem lösen
Kara soll Bäume mit Kleeblättern auslegen.
Zu Beginn befindet sich Kara unten im Baumstamm. Kara soll anschließend ein mit Bäumen umrandetes Gebiet (das die Form eines Baumes hat) mit Kleeblättern auslegen. Wir gehen dabei davon aus, dass alle Felder direkt vom Baumstamm aus erreichbar sind.
Entwickle zunächst eine Lösungsidee. Beschreibe sie in Worten.
Formuliere anschließend einen Algorithmus.
Entwickle und teste dann erst ein zum Algorithmus passendes Programm.