Java Reference
In-Depth Information
Kapitel 11
Boolesche Funktionen
11 .
Boolesche Funktionen, die in diesem Kapitel vorgestellt werden, sind dazu geeignet, neue Testbefeh-
le zu definieren. Abschnitt 1 motiviert zunächst die Einführung boolescher Funktionen. In Abschnitt
2 wird danach die boolesche return-Anweisung erläutert, die für die Definition boolescher Funktio-
nen (Abschnitt 3) notwendig ist. In Abschnitt 4 werden Sie kennenlernen, wie boolesche Funktionen
aufgerufen werden und an welchen Stellen eines Programms sie verwendet werden dürfen. Das Pro-
blem der Seiteneffekte von booleschen Funktionen wird in Abschnitt 5 diskutiert. Anschließend
folgen in Abschnitt 6 einige Beispielprogramme, an denen die Definition und Verwendung von boo-
leschen Funktionen verdeutlicht werden, und in Abschnitt 7 werden einige Übungsaufgaben gestellt,
durch deren Bearbeitung Sie den Umgang mit booleschen Funktionen einüben können.
11.1 Motivation
Der Hamster hat einen sehr begrenzten Grundvorrat an Befehlen ( gib(); , nimm(); , vor(); ,
linksUm(); ) und Testbefehlen ( vornFrei() , maulLeer() , kornDa() ). In Kapitel 8 haben Sie ge-
lernt, wie mittels der Definition von Prozeduren dem Hamster weitere Befehle beigebracht werden
können. In diesem Kapitel werden Sie einen Mechanismus kennenlernen, den Vorrat an Testbefehlen
zu erweitern. Dazu werden sogenannte boolesche Funktionen oder Testfunktionen eingeführt.
Stellen Sie sich vor, Sie möchten einen neuen Testbefehl mauerDa() definieren, der genau dann den
Wert true liefert, wenn sich direkt in Blickrichtung vor dem Hamster eine Mauer befindet. Im Prin-
zip entspricht dies dem booleschen Ausdruck !vornFrei() , denn dieser liefert ja das gewünschte
Ergebnis. Prozeduren können Ihnen hier nicht weiterhelfen, denn diese können ja keinen Wert lie-
fern. Was Sie benötigen, ist ein Sprachkonstrukt, über das Sie einen neuen Namen mauerDa für den
neuen Testbefehl einführen und das immer dann, wenn Sie den Testbefehl mauerDa() aufrufen, den
Wert des booleschen Ausdrucks !vornFrei() liefert.
Etwas komplizierter ist die folgende Situation: Der Hamster soll ermitteln, ob sich links von ihm
eine Mauer befindet oder nicht. Es soll also ein neuer Testbefehl linksFrei() eingeführt werden.
Ein solcher Testbefehl könnte dadurch realisiert werden, dass sich der Hamster zunächst nach links
umdreht. Anschließend kann er mit Hilfe des Testbefehls vornFrei() überprüfen, ob die Kachel
vor ihm frei ist. Falls der Aufruf des Testbefehls vornFrei() den Wert true liefert, muss auch
der Testbefehl linksFrei() den Wert true liefern, für den false -Fall gilt entsprechendes. Zu
beachten ist jedoch, dass sich der Hamster in beiden Fällen noch wieder nach rechts umdrehen
muss, um in seine Ausgangsposition zurückzukehren.
Beide Beispiele lassen sich mit Hilfe sogenannter boolescher Funktionen realisieren. Bevor wir de-
ren Syntax und Semantik kennenlernen, wird zunächst die boolesche return-Anweisung eingeführt.
Search WWH ::




Custom Search