Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
9.2. BOOLESCHE OPERATOREN UND AUSDRUCKE 81<br />
9.2.4 Eigenschaften<br />
9.2.4.1 Prioritat<br />
Von den drei booleschen Operatoren hat ! die hochste, && die zweithochste und || die niedrigste<br />
Prioritat. Durch Klammersetzung (runde Klammern) kann die Prioritat beein u t werden, d.h.<br />
in runde Klammern gesetzte boolesche Ausdrucke werden immer zuerst berechnet.<br />
Im booleschen Ausdruck maul leer() || !vorn frei() && korn da() wird daher zunachst<br />
der Wert des Testbefehls vorn frei() ermittelt. Dieser wird negiert. Anschlie end wird dieser<br />
Wert mit dem Wert des Testbefehls korn da() konjugiert und schlie lich wird der Wert des<br />
Testbefehls maul leer() mit dem konjugierten Wert disjungiert. Der boolesche Ausdruck ist<br />
also aquivalent mit dem Ausdruck maul leer() || ((!vorn frei()) && korn da()).<br />
Im booleschen Ausdruck !(korn da() && maul leer()) wird aufgrund der Klammersetzung<br />
zunachst die Konjunktion der Werte der booleschen Ausdrucke korn da() und maul leer()<br />
ermittelt und dieser Wert dann negiert.<br />
9.2.4.2 Assoziativitat<br />
Alle drei booleschen Operatoren sind linksassoziativ.<br />
Der Ausdruck korn da() || vorn frei() || maul leer() ist aquivalent zu (korn da() ||<br />
vorn frei()) || maul leer(), d.h. es wird zunachst der Wert von korn da() ermittelt und<br />
disjunktiv mit dem Wert von vorn frei() verknupft. Dieser Wert wird anschlie end mit dem<br />
Wert von maul leer() disjungiert.<br />
9.2.5 Auswertungsreihenfolge<br />
Der Hamster ist ein sehr faules Lebewesen, d.h. er erspart sich unnotige Tests. Stellen Sie sich<br />
vor, der Hamster soll den Wert des booleschen Ausdrucks vorn frei() || korn da() ermitteln.<br />
Bisher sind wir davon ausgegangen, da er zunachst den Wert des Testbefehls vorn frei()<br />
und anschlie end den Wert des Testbefehls korn da() ermittelt und diese beiden Werte disjungiert.<br />
Stellen Sie sich nun vor, der Testbefehl vorn frei() liefert den Wert true. Gema der<br />
Wahrheitstabelle liefert dann aber die Disjunktion unabhangig von dem Wert des Testbefehls<br />
korn da() den Wert true. Also kann sich der Hamster die Ermittelung des Wertes des Testbefehls<br />
korn da() ersparen, was er auch tut.<br />
Ahnlich verhalt es sich mit der Konjunktion. Liefert der Testbefehl vorn frei den Wert false,<br />
dann kann sich der Hamster bei der Auswertung des Ausdrucks vorn frei() && (!korn -<br />
da() || maul leer()) die Berechnung der anderen Operationen sparen, weil der boolesche<br />
Gesamtausdruck auf jeden Fall den Wert false liefert.<br />
Im Moment spielt die Auswertungsreihenfolge boolescher Ausdruckefur Ihre Hamsterprogramme<br />
noch keine Rolle, aber in Kapitel 11.5 werden wir Situationen kennenlernen, wo der Beachtung<br />
dieser Auswertungsreihenfolge eine gro e Bedeutung zukommt. Insbesondere gilt daher in der<br />
Hamstersprache fur boolesche Operatoren das Kommutativgesetz nur, was die Wertlieferung<br />
betri t.