Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
112 KAPITEL 10. WIEDERHOLUNGSANWEISUNGEN<br />
}<br />
nimm();<br />
} while (korn_da());<br />
void leg_ab()<br />
{<br />
do<br />
{<br />
gib();<br />
} while (!maul_leer());<br />
}<br />
Erlauterung Innerhalb der Prozedur sammle kann eine do-Anweisung benutzt werden, da<br />
laut Aufgabenstellung auf jeder Kachel mindestens ein Korn liegt und die Prozedur nur nach einem<br />
vor();-Befehl aufgerufen wird, d.h. der Hamster sich also bei Aufruf der Prozedur auf<br />
jeden Fall auf einer noch nicht " abgegrasten\ Kachel be ndet. Dasselbe tri t auch fur die<br />
Prozedur leg ab() zu; denn da der Hamster mindestens einmal " sammelt\, hat er auf jeden<br />
Fall Korner im Maul, bevor die Prozedur aufgerufen wird. Fur die Prozedur laufe in die -<br />
naechste ecke und sammle ist die Verwendung einer do-Anweisung jedoch nicht moglich. Hier<br />
mu eine while-Anweisung benutzt werden, da die Landschaft durchaus auch aus nur einer freien<br />
Kachel bestehen kann (siehe Abbildung 10.8 (rechts)). Bei Verwendung einer do-Anweisung<br />
anstelle der while-Anweisung wurde die Programmausfuhrung bzgl. der Landschaft aus Abbildung<br />
10.8 (rechts) zu einem Laufzeitfehler fuhren, was gema Abschnitt 10.2.3 bedeutet, da<br />
das Programm nicht korrekt ist.<br />
10.4 Beispielprogramme<br />
In diesem Abschnitt werden einige Beispiele fur Hamster-Programme gegeben, die Ihnen den<br />
Einsatz von Wiederholungsanweisungen demonstrieren sollen. Es werden jeweils eine oder mehrere<br />
Musterlosungen vorgestellt. Schauen Sie sich die Beispiele genau an und versuchen Sie, die<br />
Losungen nachzuvollziehen.<br />
10.4.1 Beispielprogramm 1<br />
Aufgabe:<br />
In einem rechteckigen geschlossenen Raum unbekannter Gro e ohne innere Mauern sind wahllos<br />
eine unbekannte Anzahl an Kornern verstreut (siehe Beispiele in Abbildung 10.9). Der Hamster,<br />
der sich zu Anfang in der linken unteren Ecke des Hamster-Territoriums mit Blickrichtung Ost<br />
be ndet, soll alle Korner aufsammeln und dann stehenbleiben.<br />
Losung:<br />
void main()<br />
{<br />
ernte_eine_reihe_und_laufe_zurueck();