Programmiersprache Pascal
Logische Operatoren
Folgende logische Operatoren stehen in Standard und Extended Pascal zur
Verfügung:
AND logisches AND (Und, Konjunktion)
OR logisches OR (Oder, Disjunktion)
NOT logisches NOT (Nicht, Negation)
AND und OR sind binäre Operatoren, NOT ist
unär.
Eine ganze Reihe von Pascal-Systemen verfügt über einen weiteren
binären logischen Operator:
XOR exklusives OR (exklusives Oder, Antivalenz)
Dies trifft z.B. auf Turbo Pascal, Delphi, XL Pascal und Pascal++ zu.
Die Wirkung der logischen Operatoren ist wie folgt:
x y | NOT x | x AND y | x OR y | x XOR y
------------+-------+---------+--------+--------
True True | False | True | True | False
True False | False | False | True | True
False True | True | False | True | True
False False | True | False | False | False
------------------------------------------------
Bemerkung:
Die Antivalenz läßt sich mit Hilfe der anderen Operatoren
ausdrücken, so daß ein Fehlen des Operators XOR in den
Sprachstandards kein echtes Problem darstellt:
FUNCTION xor(x, y: BOOLEAN) : BOOLEAN;
BEGIN
xor := NOT x = y;
END;
Beispiel:
VAR i, j, k : INTEGER;
FUNCTION fct(i, j: INTEGER): BOOLEAN; EXTERNAL;
IF ( ( k > 0 ) AND fct(i, j) ) THEN
BEGIN ... END;
Achtung:
Besitzt im obigen Beispiel die Variable k einen negativen Wert,
so gibt es folgende Möglichkeiten:
-
die Funktion fct wird ausgeführt, obwohl der von ihr
gelieferte Funktionswert im konkreten Fall bedeutungslos ist
-
die Funktion fct wird nicht ausgeführt, da wegen
k < 0 sofort feststeht, daß die Bedingung
( k > 0 ) AND fct(i, j) nicht erfüllt sein kann
Die 2. Variante ("Shortcut"-Version)
-
spart Rechenzeit
-
kann im Vergleich zur 1. Variante zu abweichendem Programmverhalten
führen, wenn die Funktion fct nicht nebenwirkungsfrei
arbeitet,
d.h. wenn sie z.B. die Werte von globalen Variablen verändert,
Dateien öffnet oder schließt, Speicherplatz anfordert oder
freigibt, usw.
Siehe auch: Shortcut-Operatoren
P. Böhme, 06.09.1996