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.

11.4. AUFRUF BOOLESCHER FUNKTIONEN 127<br />

}<br />

}<br />

vor();<br />

boolean links_frei()<br />

{<br />

links_um();<br />

if (vorn_frei())<br />

{<br />

rechts_um();<br />

return true;<br />

}<br />

else<br />

{<br />

rechts_um();<br />

return false;<br />

}<br />

}<br />

void rechts_um()<br />

{<br />

links_um(); links_um(); links_um();<br />

}<br />

An diesem Beispiel konnen sie visuell nachvollziehen, was Sie bezuglich der Auswertungsreihenfolge<br />

von booleschen Ausdrucken in Kapitel 9.2.5 gelernt haben, da der Hamster namlich die<br />

Auswertung bestimmter boolescher Ausdrucke optimiert. Schauen Sie sich dazu die in Abbildung<br />

11.5 geschilderte Ausgangssituation an. Bei der Auswertung der Schleifenbedingung der while-<br />

Anweisung innerhalb der main-Prozedur wird zunachst der Wert des Testbefehls vorn frei<br />

ermittelt. Der Testbefehl liefert den Wert true. Also wird als nachstes der Funktionswert der<br />

Funktion links frei ermittelt, der negiert den Wert des booleschen Ausdrucks der Schleifenbedingung<br />

ergibt. Zur Ermittlung des Funktionswertes wird die Funktion aufgerufen: der Hamster<br />

dreht sich um 90 Grad nach links, testet, ob nun vor ihm frei ist; das ist nicht der Fall, also<br />

dreht er sich wieder um 90 Grad nach rechts und liefert den Wert false. Durch die anschlieende<br />

Negierung ist die Schleifenbedingung insgesamt erfullt, und die Iterationsanweisung wird<br />

ausgefuhrt, d.h. der Hamster hupft eine Kachel nach vorne. Nun wird die Schleifenbedingung<br />

ein weiteres Mal uberpruft. Da dieses Mal aber bereits der Testbefehl vorn frei() den Wert<br />

false liefert, mu die Funktion links frei nicht ein zweites Mal aufgerufen werden. Die Schleifenbedingung<br />

kann nicht mehr erfullt werden. Die Funktion links frei wird dann jedoch fur<br />

die Auswertung der Bedingung der if-Anweisung erneut aufgerufen. Sie liefert den Wert true,<br />

so da die Bedingung erfullt ist und sich der Hamster in die Nische begibt.<br />

Drehen Sie nun einmal die konjugierten Ausdrucke in dem Beispiel um und fuhren Sie das<br />

Programm erneut fur die in Abbildung 11.6 skizzierte Situation aus. Sie werden feststellen, da<br />

der Hamster einmal mehr testet, ob sich links von ihm eine Mauer be ndet.<br />

void main()

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!