Java Reference
In-Depth Information
Im zweiten Fall (Abbildung 17.1 (b)) steht der Hamster zwei Felder vor einer Mauer. Durch die main-
Prozedur wird die Prozedur hinUndZurueckR ein erstes Mal aufgerufen; der Testbefehl vornFrei()
liefert den Wert true , also hüpft der Hamster zunächst ein Feld nach vorne. Anschließend wird eine
zweite Inkarnation der Prozedur hinUndZurueckR erzeugt. Bei Ausführung dieser zweiten Inkarna-
tion liefert der Testbefehl vornFrei() nun den Wert false , d.h. der Hamster dreht sich um. Danach
wird die zweite Inkarnation der Prozedur zerstört, und es wird zur ersten Inkarnation, d.h. hinter den
Aufruf der hinUndZurueckR-Prozedur zurückgesprungen. Hier wird nun noch der verbleibende vor-
Befehl aufgerufen, womit auch die erste Inkarnation der Prozedur sowie die main-Prozedur beendet
sind. Und in der Tat wurde das Problem auch in diesem Fall korrekt gelöst: Der Hamster steht wieder
an seinem Ausgangspunkt. Der Programmablauf lässt sich folgendermaßen skizzieren:
main
hinUndZurueckR (1.)
hinUndZurueckR (2.)
hinUndZurueckR
--> vornFrei -> true
vor
hinUndZurueckR
--> vornFrei -> false
linksUm
linksUm
<--
vor
<--
<--
Man sieht, der Hamster führt insgesamt folgende Befehlsfolge aus: vor(); linksUm(); links-
Um(); vor(); .
Schauen wir uns nun den dritten Fall an (Abbildung 17.1 (c)). Hier werden insgesamt drei Inkarna-
tionen der Prozedur hinUndZurueckR erzeugt:
main
hinUndZurueckR (1.)
hinUndZurueckR (2.)
hinUndZurueckR (3.)
hinUndZurueckR
--> vornFrei -> true
vor
hinUndZurueckR
--> vornFrei -> true
vor
hinUndZurueckR
--> vornFrei -> false
linksUm
linksUm
<--
vor
<--
vor
<--
<--
Die vomHamster insgesamt ausgeführte Befehlsfolge lautet: vor(); vor(); linksUm(); links-
Um(); vor(); vor(); . Sie löst das Problem in der Tat auf korrekte Art und Weise.
Das der Prozedur hinUndZurueckR zugrunde liegende Prinzip lässt sich also folgendermaßen zu-
sammenfassen:
Der einfachste Fall ist der, dass der Hamster unmittelbar vor einer Mauer steht. Eigentlich müsste
der Hamster in dieser Situation gar nichts tun. Er dreht sich aber um, damit der Algorithmus auch in
komplexeren Situationen funktioniert, dann muss der Hamster nämlich zurücklaufen.
Search WWH ::




Custom Search