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)