06.08.2013 Aufrufe

PDF-Datei (ca. 1 MByte)

PDF-Datei (ca. 1 MByte)

PDF-Datei (ca. 1 MByte)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

130 KAPITEL 11. BOOLESCHE FUNKTIONEN<br />

Die folgende boolesche Funktion links frei() produziert beispielsweise immer einen Seiteneffekt;<br />

denn nach ihrer Ausfuhrung hat der Hamster eine andere Blickrichtung als vorher.<br />

boolean links_frei()<br />

{<br />

links_um();<br />

return vorn_frei();<br />

}<br />

Genauso wie die drei vorde nierten Testbefehle keine Zustandsanderungen bewirken, also niemals<br />

Seitene ekte produzieren, sollten auch boolesche Funktionen in der Regel keine Seitene ekte<br />

hervorrufen, d.h. sollten zur Berechnung eines zu liefernden Wertes innerhalb einer Funktion<br />

Zustandsanderungen notwendig sein, so sollten diese vor dem Verlassen der Funktion wieder<br />

ruckgangig gemacht werden. Seitene ektfreie Funktionen fuhren zu besser lesbaren und weniger<br />

fehleranfalligenden Programmen. De nieren Sie eine boolesche Funktion links frei also immer<br />

folgenderma en:<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 />

Wenn Sie { aus welchem Grund auch immer { dennoch seitene ektproduzierende Funktionen<br />

de nieren, sollten Sie auf jeden Fall durch einen Kommentar darauf hinweisen.<br />

In Kapitel 9.6.4 wurde bereits erwahnt, da die folgenden beiden Anweisungen nicht unbedingt<br />

semantisch aquivalent sein mussen. Dabei sei bA Platzhalter fur einen beliebigen booleschen<br />

Ausdruck, und a1 und a2 seien Platzhalter fur beliebige Anweisungen:<br />

// Anweisung 1<br />

if (bA)

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!