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