Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
90 KAPITEL 9. AUSWAHLANWEISUNGEN<br />
Hamster ein Korn im Maul, so legt er eines ab. Der links um();-Befehl gehort nicht mehr<br />
zur Alternativanweisung und wird in beiden Fallen ausgefuhrt. Beispiel 2a ist zwar syntaktisch<br />
korrekt, statt der Verwendung der Leeranweisung sollte jedoch sinnvollerweise die Bedingung<br />
negiert werden, wie in Beispiel 2b. Beispiel 2b ist semantisch aquivalent zu Beispiel 2a.<br />
// Beispiel 3<br />
if (vorn_frei())<br />
vor();<br />
else if (korn_da())<br />
nimm();<br />
else if (!maul_leer())<br />
gib();<br />
else<br />
links_um();<br />
Beispiel 3 zeigt, da die false-Anweisung selbst wieder eine zusammengesetzte Anweisung, insbesondere<br />
also auch wieder eine Alternativanweisung sein darf. Auswahlanweisungen lassen sich<br />
dadurch schachteln. Wenn der Testbefehl vorn frei() den Wert true liefert, dann wird die<br />
true-Anweisung, also der Befehl vor(); ausgefuhrt, und das Beispiel ist beendet. Wenn die Kachel<br />
vor dem Hamster allerdings durch eine Mauer blockiert ist, d.h. die Auswertung der ersten<br />
Bedingung den Wert false ergibt, dann wird die false-Anweisung ausgefuhrt. Hierbei handelt es<br />
sich wieder um eine Alternativauswahl. Liefert der Testbefehl korn da() den Wert true, dann<br />
wird der Befehl nimm(); als true-Anweisung ausgefuhrt, und das Beispiel ist beendet. Liefert<br />
jedoch auch diese zweite Bedingung den Wert false, dann wird der zweite else-Teil " aktiv\.<br />
Wiederum handelt es sich bei der false-Anweisung um eine Alternativanweisung. Liefert der<br />
boolesche Ausdruck !maul leer den Wert true, dann legt der Hamster ein Korn ab, ansonsten<br />
dreht er sich um 90 Grad nach links. Insgesamt la t sich feststellen, da der Hamster unabhangig<br />
von der Situation, in der er sich gerade be ndet, beim Aufruf von Beispiel 3 immer genau einen<br />
Grundbefehl ausfuhrt.<br />
// Beispiel 4a<br />
if (vorn_frei())<br />
if (korn_da())<br />
nimm();<br />
else<br />
vor();<br />
// Beispiel 4b<br />
if (vorn_frei())<br />
{<br />
if (korn_da())<br />
nimm();<br />
}<br />
else<br />
vor();<br />
// Beispiel 4c