Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
102 KAPITEL 10. WIEDERHOLUNGSANWEISUNGEN<br />
Es mu die Aufgabenstellung fur alle sich aus der Landschaftcharakterisierung ergebenden<br />
moglichen Ausgangssituationen korrekt und vollstandig losen.<br />
Es darf fur keine sich aus der Landschaftcharakterisierung ergebenden moglichen Ausgangssituation<br />
zu einem Laufzeitfehler fuhren.<br />
Es mu nach endlicher Zeit fur alle sich aus der Landschaftcharakterisierung ergebenden<br />
moglichen Ausgangssituationen enden, es sei denn, eine Nicht-Terminierung des Programms<br />
wird in der Aufgabenstellung explizit erlaubt.<br />
10.2.4 Beispiele<br />
10.2.4.1 Beispiel 1<br />
Das Hamsterprogramm fur das oben skizzierte Problem, da der Hamster irgendwo in einer<br />
Landschaft steht und bis zur nachsten Mauer laufen soll, sieht folgenderma en aus:<br />
void main()<br />
{<br />
while (vorn_frei())<br />
{<br />
vor();<br />
}<br />
}<br />
Uberprufen wir einmal, ob das Programm fur die Landschaft in Abbildung 10.1 (links) korrekt<br />
arbeitet (siehe auch Abbildung 10.3 (links)).<br />
#######<br />
#<br />
#<br />
# # o #<br />
#<br />
#<br />
> # o #<br />
# o #<br />
# # o #<br />
# ######<br />
#######<br />
#<br />
#<br />
# # o #<br />
#<br />
#<br />
> # o #<br />
# o #<br />
# # o #<br />
# ######<br />
#######<br />
#<br />
#<br />
# # o #<br />
#<br />
#<br />
> # o #<br />
# o #<br />
# # o #<br />
# ######<br />
Abbildung 10.3: Typische Hamsterlandschaften zu Beispiel 1<br />
Zunachst wird der Testbefehl vorn frei() ausgewertet. Er liefert den Wert true. Also ist die<br />
Schleifenbedingung erfullt. D.h. als nachstes wird die Iterationsanweisung ausgefuhrt. Dieses ist<br />
eine Blockanweisung, die als einzige Anweisung den Befehl vor(); enthalt. Der Hamster hupft<br />
eine Kachel nach vorne (siehe Abbildung 10.3 (Mitte)). Nach der Abarbeitung der Iterationsanweisung<br />
wird erneut die Schleifenbedingung uberpruft. Der Testbefehl vorn frei() liefert<br />
auch dieses Mal den Wert true, so da der vor();-Befehl ein zweites Mal ausgefuhrt wird und<br />
sich die Situation gema Abbildung 10.3 (rechts) ergibt. Wiederum wird nun die Schleifenbedingung<br />
uberpruft. Inzwischen steht der Hamster jedoch vor einer Mauer, so da der Testbefehl