|
Während in der mathematischen Notation A und
B nur die Werte TRUE und FALSE annehmen können,
gibt es in Oberon auch noch die Möglichkeit, daß die Evaluation
einer der Operanden entweder undefiniert ist oder zu einem
Laufzeitfehler führt.
| |
Beispiel: Was passiert bei der Bewertung von (j > 0) & (i MOD j = 0) falls j = 0? Hier würde die Bewertung des rechten Operanden des &-Operators zu einem Laufzeitfehler führen. | |
Oberon (und viele andere Programmiersprachen) lassen dies
zu. Sie bewerten bei & und OR zunächst den linken
Operanden und betrachten den rechten Operanden dann und nur
dann, wenn das Resultat tatsächlich davon abhängt.
Das wird als Kurzschlußbewertung bezeichnet.
| |
Interpretation von A & B: IF A THEN result := B; (* B wird bewertet *) ELSE result := FALSE; (* B bleibt unbewertet *) END; | |
Interpretation von A OR B: IF A THEN result := TRUE; (* B bleibt unbewertet *) ELSE result := B; (* B wird bewertet *) END; | |
Entsprechend verlieren diese Operatoren die
Eigenschaft der Kommutativität in Oberon.
|
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005 |