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.

108 KAPITEL 10. WIEDERHOLUNGSANWEISUNGEN<br />

void main()<br />

{<br />

while (vorn_frei())<br />

{<br />

links_um();<br />

}<br />

}<br />

######<br />

# # #<br />

# #<br />

#<br />

#<br />

o o #<br />

> # #<br />

o o #<br />

# o # # #<br />

# #####<br />

Abbildung 10.6: Endlosschleifen<br />

Die Ausfuhrung des Programms wird niemals enden. Da sich um den Hamster herum keine<br />

Mauern be nden und der Hamster bei der Ausfuhrung der Iterationsanweisung die Kachel nie<br />

verla t, wird die Schleifenbedingung immer den Wert true liefern.<br />

Eine while-Anweisung, deren Schleifenbedingung immer den Wert true liefert, wird Endlosschleife<br />

genannt. Da eine Endlosschleife niemals endet, endet auch niemals das Programm, in<br />

dem die Schleife aufgerufen wird. Derartige Endlos-Programme sind im allgemeinen fehlerhaft,<br />

es sei denn, in der Aufgabenstellung wird dies explizit erlaubt. Endlosschleifen treten hau g auf,<br />

weil bestimmte Anweisungen innerhalb der Iterationsanweisung vergessen werden. Uberprufen<br />

Sie deshalb Ihre Programme, ob Situationen moglich sind, die zu einer Endlosschleife fuhren<br />

konnen. Ergreifen Sie Ma nahmen, die diesen Fehlerfall beseitigen.<br />

Im obigen Beispiel werden Sie relativ schnell merken, da sich das Programm in einer Endlosschleife<br />

be ndet; der Hamster dreht sich namlich fortwahrend im Kreis. Das mu aber nicht<br />

immer der Fall sein. Im folgenden Programm hat der Programmierer innerhalb der Iterationsanweisung<br />

der while-Schleife der main-Prozedur den Befehl vor(); vergessen. Be ndet sich der<br />

Hamster anfangs nicht vor einer Mauer, sammelt er zunachst alle Korner ein. Danach werden<br />

jeweils abwechselnd die beiden Schleifenbedingungen uberpruft, ohne das der Hamster irgendwas<br />

fur Sie Sichtbares tut; vorn frei() liefert immer den Wert true, bedingt also die Endlosschleife,<br />

und korn da() liefert immer den Wert false, da der Hamster ja bereits anfangs alle Korner<br />

gefressen hat.<br />

void main()<br />

{<br />

while (vorn_frei())<br />

{<br />

// sammle<br />

while (korn_da())<br />

{

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!