Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
106 KAPITEL 10. WIEDERHOLUNGSANWEISUNGEN<br />
Nach dem siebten Schleifendurchlauf hat der Hamster jedoch alle Korner der Kachel aufgenommen,<br />
so da die Schleifenbedingung bei ihrer achten Uberprufung nicht mehr erfullt und damit<br />
die while-Anweisung beendet ist. Bei einer Anzahl von 20 Kornern auf einer Kachel wird die<br />
Iterationsanweisung genau zwanzig Mal ausgefuhrt; allgemein bei n Kornern genau n-mal. Beachten<br />
Sie, da die Prozedur sammle auch dann korrekt arbeitet, wenn auf einer Kachel kein<br />
Korn liegt. Dann ist die Schleifenbedingung bereits bei der ersten Uberprufung nicht erfullt und<br />
der nimm();-Befehl wird kein einziges Mal ausgefuhrt.<br />
Die Prozedur sammle wird in der Iterationsanweisung der prozedur laufe bis zur naechsten -<br />
wand und sammle aufgerufen. Diese Prozedur bewirkt, da jedes Mal, wenn der Hamster auf eine<br />
neue Kachel springen kann, er dies auch tut und diese anschlie end " abgrast\. Die Iterationsanweisung<br />
der diesbezuglichen while-Anweisung innerhalb der Prozedur besteht daher aus einer<br />
Blockanweisung mit der Anweisungssequenz vor(); und sammle();.<br />
Achtung Achten Sie darauf, da die Prozedur sammle ganz zu Anfang des Programms einmal<br />
aufgerufen wird. Ohne diese Anweisung ware das Programm nicht korrekt! Es wurde nur bei<br />
solchen Landschaften korrekt arbeiten, bei denen sich auf der Ausgangskachel des Hamsters<br />
keine Korner be nden. Bei den anderen Landschaften wurde der Hamster die Korner auf seiner<br />
Ausgangskachel liegenlassen und damit nicht die komplette Aufgabenstellung erfullen.<br />
10.2.5 Anmerkungen<br />
10.2.5.1 Ubersichtlichkeit<br />
Um eine bessere Ubersichtlichkeit ihres Programmes zu erzielen und potentielle Fehlerquellen<br />
zu vermeiden, berucksichtigen Sie bitte bei der while-Anweisung dasselbe, was bereits bei der if-<br />
Anweisung in Kapitel 9.5.4 erlautert wurde. Benutzen Sie moglichst als Iterationsanweisung die<br />
Blockanweisung. Plazieren Sie dabei die o nende und schlie ende Klammer der Blockanweisung<br />
untereinander und rucken Sie die inneren Anweisungen der Blockanweisung um zwei Spalten<br />
nach rechts ein, wie in folgendem Beispiel, in dem der Hamster bis zur nachsten Mauer lauft<br />
und dabei solange moglich eine Kornerspur legt:<br />
void main()<br />
{<br />
while (vorn_frei())<br />
{<br />
vor();<br />
if (!maul_leer())<br />
{<br />
gib();<br />
}<br />
}<br />
}