5. Sprachelemente / Operatoren | |||||||
|
|||||||
5.4 Logische Operatoren und Kurzauswertungsoperatoren
Für alle Boolschen Typen sowie modulare Typen und eindimensionale Reihungstypen, deren Komponententyp ein Boolescher Typ ist, sind die logischen Operatoren and (logisches UND) or (logisches ODER) xor (logisches exklusives ODER) vordefiniert. Vergleich Boolscher Typen Beispiel:
Vergleich modularer Typen Für modulare Typen werden die Vergleiche bitweise durchgeführt. Der Bitwert "1" steht für den Booleschen Wert "True" und der Bitwert "0" für den Booleschen Wert "False" Jedes Bit des einen Operanden wird mit dem gleichwertigen Bit des anderen Operanden verglichen. In dem Zielwert werden an den Stellen, an denen der Vergleich "True" ergibt, die Bitwerte auf "1" gesetzt, an den anderen Stellen auf "0". Am deutlichsten wird dieses, wenn die Werte zur Basis 2 notiert werden, da die Bitwerte dann einzeln gesetzt werden können. Beispiel:
Reihungstypen mit dem Komponententyp BOOLEAN Für Reihungstypen wird der Vergleich komponentenweise durchgeführt, wobei die Ergebnisreihung die Grenzen des linken Operanden hat. Jede Komponente der einen Reihung wird mit der entsprechenden Komponente der anderen Reihung verglichen. In der Zielreihung wird dann die entsprechende Komponente auf den Ergebniswert gesetzt. Statt mehrere Reihungen zu definieren, um diese vergleichen zu können, kann man eine Reihung auch direkt mit einem Aggregat vergleichen. Beispiel:
Die Kurzauswerteoperatoren Die Kurzauswertungsoperatoren and then und or else sind Sonderformen der logischen Operatoren. Bei ihnen werden nicht notwendigerweise alle Elemente eines Ausdrucks einem Vergleich unterzogen. Der linke Operand wird bei and then und or else immer zuerst ausgewertet. Wenn dadurch das Ergebnis schon feststeht, wird auf die Auswertung des rechten Operanden verzichtet. Beispiel 1:
Beispiel 2:
Beispiel 3:
|
|||||||
|