06.08.2013 Aufrufe

PDF-Datei (ca. 1 MByte)

PDF-Datei (ca. 1 MByte)

PDF-Datei (ca. 1 MByte)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!