06.08.2013 Aufrufe

PDF-Datei (ca. 1 MByte)

PDF-Datei (ca. 1 MByte)

PDF-Datei (ca. 1 MByte)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

104 KAPITEL 10. WIEDERHOLUNGSANWEISUNGEN<br />

Test Testen wir das Programm einmal fur die Landschaft in Abbildung 10.4 (links) (siehe auch<br />

Abbildung 10.5 (a)). Die Schleifenbedingung der ersten while-Anweisung wird insgesamt viermal<br />

uberpruft. Die ersten drei Male liefert sie den Wert true, d.h. der vor();-Befehl innerhalb der<br />

Iterationsanweisung wird dreimal ausgefuhrt. Bei der vierten Uberprufung steht der Hamster<br />

inzwischen vor der Mauer (siehe Abbildung 10.5 (b)), so da der Testbefehl vorn frei() nun<br />

den Wert false liefert. Damit ist die erste while-Anweisung des Hamsterprogramms beendet.<br />

Als nachste Anweisung folgt nun der links um();-Befehl. Nach seiner Ausfuhrung ergibt sich die<br />

Situation in Abbildung 10.5 (c). Nun folgt eine zweite while-Anweisung. Die Schleifenbedingung<br />

dieser while-Anweisung wird nun wiederholt ausgewertet, zweimal liefert sie den Wert true, so<br />

da der Hamster zweimal den Befehl vor(); ausfuhrt. Dann steht ervor einer Mauer, genauer<br />

gesagt in einer Ecke (siehe Abbildung 10.5 (d)), die Schleifenbedingung ist nicht mehr erfullt.<br />

Damit ist die while-Anweisung und { weil dies die letzte Anweisung des Hauptprogrammes war<br />

{ auch das gesamte Programm beendet, und zwar korrekt: Der Hamster steht in einer Ecke.<br />

######<br />

# #<br />

#<br />

#<br />

#<br />

><br />

o o #<br />

#<br />

#<br />

# o #<br />

# #####<br />

######<br />

# #<br />

#<br />

#<br />

#<br />

o o #<br />

> #<br />

#<br />

# o #<br />

# #####<br />

######<br />

# #<br />

# o o #<br />

#<br />

#<br />

^ #<br />

#<br />

# o #<br />

# #####<br />

######<br />

#<br />

#<br />

#<br />

o o #<br />

# #<br />

# #<br />

# o #<br />

# #####<br />

^<br />

(a) (b) (c) (d)<br />

Abbildung 10.5: Test von Beispiel 2<br />

Uberprufen Sie bitte selbstandig, da das Programm auch fur die anderen vorgegebenen Landschaften<br />

aus Abbildung 10.4 korrekt arbeitet. Insbesondere ist die Abbildung rechts interessant.<br />

Hier be ndet sich der Hamster bereits zu Anfang in einer Ecke.<br />

Verbesserung Sie haben sicher schon festgestellt, da die beiden while-Anweisungen des Programmes<br />

identisch sind. Aus Grunden der Ubersichtlichkeit bietet es sich also an, eine Prozedur<br />

laufe bis zur naechsten wand zu de nieren und diese zweimal aufzurufen. Damit sieht das<br />

Programm dann folgenderma en aus:<br />

void main()<br />

{<br />

laufe_bis_zur_naechsten_wand();<br />

links_um();<br />

laufe_bis_zur_naechsten_wand();<br />

}<br />

void laufe_bis_zur_naechsten_wand()<br />

{<br />

while (vorn_frei())<br />

{<br />

vor();

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!