|
![]() ![]() ![]() ![]() ![]() |
![]() | 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 |