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