Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Kapitel 11<br />
Boolesche Funktionen<br />
11.1 Motivation<br />
Der Hamster hat einen sehr begrenzten Grundvorrat an Befehlen (vor();, links um();, nimm();,<br />
gib();) und Testbefehlen (vorn frei(), maul leer(), korn da()). In Kapitel 8 haben Sie gelernt,<br />
wie mittels der De nition von Prozeduren dem Hamster weitere Befehle beigebracht werden<br />
konnen. In diesem Kapitel werden Sie einen Mechanismus kennenlernen, den Vorrat an<br />
Testbefehlen zu erweitern. Dazu werden sogenannte boolesche Funktionen oder Testfunktionen<br />
eingefuhrt.<br />
Stellen Sie sich vor, Sie mochten einen neuen Testbefehl mauer da() de nieren, der genau dann<br />
den Wert true liefert, wenn sich direkt in Blickrichtung vor dem Hamster eine Mauer be ndet.<br />
Im Prinzip entspricht dies dem booleschen Ausdruck !vorn frei(), denn dieser liefert ja das<br />
gewunschte Ergebnis. Prozeduren konnen Ihnen hier nicht weiterhelfen, denn diese konnen ja<br />
keinen Wert liefern. Was Sie benotigen ist ein Sprachkonstrukt, uber das Sie einen neuen Namen<br />
mauer da fur den neuen Testbefehl einfuhren und das immer dann, wenn Sie den Testbefehl<br />
mauer da() aufrufen, den Wert des booleschen Ausdrucks !vorn frei() liefert.<br />
Etwas komplizierter ist die folgende Situation: der Hamster soll ermitteln, ob sich links von<br />
ihm eine Mauer be ndet oder nicht. Es soll also ein neuer Testbefehl links frei() eingefuhrt<br />
werden. Ein solcher Testbefehl konnte dadurch realisiert werden, da sich der Hamster zunachst<br />
nach links umdreht. Anschlie end kann er mit Hilfe des Testbefehls vorn frei() uberprufen,<br />
ob die Kachel vor ihm frei ist. Falls der Aufruf des Testbefehls vorn frei() den Wert true<br />
liefert, mu auch der Testbefehl links frei() den Wert true liefern, fur den false-Fall gilt<br />
entsprechendes. Zu beachten ist jedoch, da sich der Hamster in beiden Fallen noch wieder nach<br />
rechts umdrehen mu , um in seine Ausgangsposition zuruck zu gelangen.<br />
Beide Beispiele lassen sich mit Hilfe sogenannter boolescher Funktionen realisieren. Bevor wir<br />
deren Syntax und Semantik kennenlernen, wird zunachst die boolesche return-Anweisung eingefuhrt.<br />
119