Erkundung - Kara lernt neue Befehle

Das Problem: Ein Runde um den Platz laufen

Kara soll eine Runde auf einem rechteckigen, mit Baumstämmen markierten Platz laufen. Kara soll dabei den zurückgelegten Weg mit Blättern auslegen.

Beispiel: Karawelt - vorher / nachher:

Kara und seine Welt - vorherKara und seine Welt - vorher

Ein erster Lösungsversuch

Das Problem lässt sich mit dem folgenden naheliegenden Algorithmus lösen.

Kleeblattreihe bis Baum legen
um Baum laufen
Kleeblattreihe bis Baum legen
um Baum laufen
Kleeblattreihe bis Baum legen
um Baum laufen
Kleeblattreihe bis Baum legen
um Baum laufen

Eine Implementierung ist hier auch schnell erstellt:

# Kleeblattreihe bis Baum legen
while not kara.treeFront():
    kara.putLeaf()
    kara.move()
kara.putLeaf()
# um Baum laufen
kara.turnRight()
kara.move()
kara.turnleft()
kara.move()
kara.turnRight()
# Kleeblattreihe bis Baum legen
...

Aufgabe 1

(a) Vervollständige die Implementierung.

(b) Teste das Programm. Möglicherweise hat sich ein Schreibfehler eingeschlichen. Korrigiere ihn und teste erneut.

(c) Beurteile das Programm. Was ist hier ungünstig?

Eine Programmeinheit als neuer Befehl

Wenn Programmteile immer wieder beim Problemlösen benötigt werden, ist es günstig, wenn man sie als eigenständige Programmeinheiten konzipiert. Das folgende, noch unfertige Programm zeigt, wie das geht.

# Unterprogramme

def kleeblattreiheBisBaumLegen():
    while not kara.treeFront():
        kara.putLeaf()
        kara.move()
    kara.putLeaf()

...    

# Hauptprogramm
kleeblattreiheBisBaumLegen()
umBaumLaufen()
...

Aufgabe 2

(a) Vervollständige auch hier die Implementierung und teste das Programm.

(b) Kara lernt hier neue Befehle. Was ist an dieser Vorgehensweise günstig? Vergleiche auch mit dem Programm oben.

X

Fehler melden

X

Suche