Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
10.2. WHILE-ANWEISUNG 105<br />
}<br />
}<br />
10.2.4.3 Beispiel 3<br />
Hamsteraufgabe Der Hamster be ndet sich wie in Beispiel 2 irgendwo in einem rechteckigen<br />
durch Mauern abgeschlossenen sonst aber mauerlosen Raum unbekannter (aber endlicher)<br />
Gro e. Auf den einzelnen Kacheln kann jeweils eine beliebig gro e aber endliche Anzahl an<br />
Korner liegen. Der Hamster soll in eine Ecke laufen und dann anhalten. Dabei soll er alle Korner<br />
einsammeln, die er auf seinem Weg ndet. Abbildung 10.4 enthalt einige Beispiele fur den skizzierten<br />
Landschaftstyp.<br />
Programm<br />
void main()<br />
{<br />
sammle();<br />
laufe_bis_zur_naechsten_wand_und_sammle();<br />
links_um();<br />
laufe_bis_zur_naechsten_wand_und_sammle();<br />
}<br />
void sammle()<br />
{<br />
while (korn_da())<br />
{<br />
nimm();<br />
}<br />
}<br />
void laufe_bis_zur_naechsten_wand_und_sammle()<br />
{<br />
while (vorn_frei())<br />
{<br />
vor();<br />
sammle();<br />
}<br />
}<br />
Erlauterung Das Programm entspricht zum gro en Teil dem Losungsprogramm aus Beispiel<br />
2. Es wird jedoch durch die Prozedur sammle erweitert. Wird diese ausgefuhrt, dann sammelt<br />
der Hamster alle Korner ein, die auf der Kachel liegen, auf der er sich gerade be ndet. Die<br />
Prozedur arbeitet dabei unabhangig von der konkreten Anzahl an Kornern auf einer Kachel<br />
korrekt. Nehmen wir an, auf einer Kachel liegen sieben Korner. Dann ist die Schleifenbedingung<br />
korn da() siebenmal erfullt , d.h. es wird insgesamt siebenmal der Befehl nimm(); ausgefuhrt.