Übungen
Aufgabe 1: Ein Unterprogramm analysieren
In dieser Aufgabe wird ein gegebenes Unterprogramm hinsichtlich Funktionalität und Namensgebung analysiert.
Betrachte die folgende Unterprogrammdefinition:
def p():
if kara.treeFront():
kara.turnLeft()
kara.move()
kara.turnRight()
kara.move()
kara.move()
kara.turnRight()
kara.move()
kara.turnLeft()
else:
kara.move()
Was leistet dieses Unterprogramm? Teste sein Verhalten. Ändere anschließende den Unterprogrammnamen so, dass er das Verhalten des Unterprogramms besser wiedergibt.
Aufgabe 2: Unterprogramme entwickeln und benutzen
In dieser Aufgabe werden einfache Unterprogramme erstellt und verwendet. Dabei wird auch auf Verschachtelung eingegangen.
(a) Erstelle und teste ein Unterprogramm umdrehen()
, das Kara um 180° dreht.
(b) Innerhalb von Unterprogrammdefinitionen kann man bereits definierte Unterprogramme aufrufen.
# Unterprogramme
def umdrehen():
...
def drehen():
umdrehen()
umdrehen()
# Hauptprogramm
drehen()
Probiere das selbst aus. Man nennt so ein Vorgehen auch „Verschachteltung“. Mache dir klar, wieso.
Eine Verschachtelung kann man sehr gut mit Matroshkas, russischen Puppen, veranschaulichen: Dabei ist in einer äußeren Puppe eine innere Puppe enthalten. In dieser können weitere Puppen enthalten sein.
Bei Unterprogrammen ist das genauso: Im Unterprogramm drehen()
(äußere Puppe) ist ein weiteres Unterprogramm umdrehen()
(innere Puppe) enthalten. In diesem sind dann weitere Befehle enthalten.
(c) Erstelle ein Unterprogramm, das Kara einen Schritt zurückgehen lässt.
Aufgabe 3: Ins Innere der Spirale
In dieser Aufgabe wird der Ablauf eines Programms mit Unterprogrammen genauer analysiert.
Kara möchte ins Innere der Baumspirale und dort ein Kleeblatt aufheben.
(a) Optional: Schreibe selbst ein Programm für dieses Problem. Es soll für Spiralen unterschiedlicher Größe funktionieren. Der Weg darf immer – wie hier – im Uhrzeigersinn verlaufen.
(b) Blende dir die vorgegebene Lösung ein und vergleiche mit deiner Lösung.
def walkToTree():
while not kara.treeFront():
kara.move()
while not kara.onLeaf():
walkToTree()
kara.turnRight()
kara.removeLeaf()
(c) Zum Verständnis von Unterprogrammen hilft es, den Ablauf des Programms genau zu analyieren. Dafür nutzen wir eine kleinere Kara-Welt.
Im Laufe des Programms passieren die folgenden Dinge. Bringe sie in die richtige Reihenfolge. Du kannst die Zeilen hier verschieben.
Aufgabe 4: Unterprogramme verwenden (offene Aufgabe)
In dieser Aufgabe werden die Erkenntnisse zu Unterprogrammen auf bereits gelöste Probleme übertragen.
Du hast im Laufe des Kapitels bereits viele Probleme mit Kara gelöst. Gehe sie noch einmal durch und schau, bei welchen Problemen bestimmte Dinge immer wieder ausgeführt werden müssen. Vereinfache die jeweiligen Programme dann durch Unterprogramme.
Quellen
- [1]: Russian toys - Urheber: Fanghong - Lizenz: Creative Commons BY-SA 3.0