Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
9.6. ALTERNATIVANWEISUNG 91<br />
if (vorn_frei())<br />
{<br />
if (korn_da())<br />
{<br />
nimm();<br />
}<br />
else<br />
{<br />
vor();<br />
}<br />
}<br />
Beispiel 4a ist auf den ersten Blick mehrdeutig: Es ist nicht klar, ob der else-Teil zum ersten<br />
if oder zum zweiten if gehort. Dieses ist jedoch in der Hamstersprache eindeutig de niert: In<br />
geschachtelten Auswahlanweisungen gehort ein else-Teil immer zum innersten if.<br />
In Beispiel 4a bildet der else-Teil also den else-Teil der korn da()- und nicht der vorn frei()-<br />
Bedingung. Die Anweisung in Beispiel 4a ist eine bedingte Anweisung, deren true-Anweisung<br />
durch eine Alternativanweisung gebildet wird. Ist die Kachel vor dem Hamster blockiert, d.h. der<br />
boolesche Ausdruck vorn frei() liefert den Wert false, dann ist das Beispiel beendet. Wird<br />
dagegen der Wert true ermittelt, dann wird die (innere) Alternativanweisung ausgefuhrt.<br />
Soll der else-Teil nicht zum inneren sondern zu einem au eren if gehoren, so mussen Klammern<br />
verwendet werden wie in Beispiel 4b. Die Anweisung in Beispiel 4b ist eine Alternativanweisung,<br />
deren true-Anweisung aus einer Blockanweisung besteht, die eine bedingte Anweisung enthalt.<br />
Um Mi verstandnissen bzw. Fehlern vorzubeugen, sollten Sie auch bei den Alternativanweisungen<br />
die true- und false-Anweisung jeweils durch eine Blockanweisung " kapseln\. Nutzen Sie also<br />
anstelle der verkurzten Schreibweise in Beispiel 4a moglichst die etwas langere dafur aber " sicherere\<br />
Schreibweise von Beispiel 4c. Achten Sie auch auf eine ubersichliche Einruckung der<br />
entsprechenden Teile.<br />
9.6.4 Anmerkungen<br />
Schauen Sie sich die folgenden beiden Anweisungen an. bA sei dabei Platzhalter fur einen beliebigen<br />
booleschen Ausdruck, und a1 und a2 seien Platzhalter fur beliebige Anweisungen:<br />
// Anweisung 1<br />
if (bA)<br />
a1;<br />
else<br />
a2;<br />
// Anweisung 2<br />
if (bA)<br />
a1;<br />
if (!bA)<br />
a2;