Nächste: , Vorige: , Nach oben: Operatoren   [Inhalt][Index]

7.4 Logische Operatoren

Operator: and

Ist der logische Operator der Konjunktion. and ist ein N-ary-Operator. Die Operanden sind boolesche Ausdrücke und das Ergebnis ist ein boolescher Wert.

Der Operator and erzwingt die Auswertung aller oder einen Teil der Operanden. Die Operanden werden in der Reihenfolge ausgewertet, in der sie auftreten. and wertet nur so viele Operanden aus, wie nötig sind, um das Ergebnis des Ausdrucks zu bestimmen. Hat irgendein Argument den Wert false, ist das Ergebnis false und die weiteren Argumente werden nicht ausgewertet.

Die Optionsvariable prederror kontrolliert das Verhalten von and für den Fall, dass ein Operand nicht zu true oder false ausgewertet werden kann. and gibt eine Fehlermeldung aus, wenn prederror den Wert true hat. Andernfalls werden Operanden akzeptiert, die nicht zu true oder false ausgewertet werden können und das Ergebnis ist ein boolescher Ausdruck.

and ist nicht kommutativ, da aufgrund von nicht ausgewerteten Operanden die Ausdrücke a and b und b and a ein unterschiedliches Ergebnis haben können.

Beispiele:

(%i1) n:2;
(%o1)                           2
(%i2) integerp(n) and evenp(n);
(%o2)                         true
(%i3) not(a=b) and 1=1 and integerp(2);
(%o3)                         true
(%i4) not(a=b) and 1=1 and oddp(2);
(%o4)                         false
(%i5) a and b;
(%o5)                        a and b
(%i6) prederror:true$
(%i7) a and b;

Unable to evaluate predicate a
 -- an error. To debug this try: debugmode(true);

Da and nur so viele Operanden auswertet wie notwendig sind, um das Ergebnis festzustellen, führt der syntaktische Fehler im zweiten Operanden nicht zu einer Fehlermeldung, das das Ergebnis bereits mit dem ersten Operanden feststeht.

(%i8) a=b and sin(2,2);
(%o8)                         false
Operator: or

Ist der logische Operator der Disjunktion. or ist ein N-ary-Operator. Die Operanden sind boolesche Ausdrücke und das Ergebnis ist ein boolescher Wert.

Der Operator or erzwingt die Auswertung aller oder einen Teil der Operanden. Die Operanden werden in der Reihenfolge ausgewertet, in der sie auftreten. or wertet nur so viele Operanden aus wie nötig sind, um das Ergebnis des Ausdrucks zu bestimmen. Hat irgendein Operand den Wert true, ist das Ergebnis true und die weiteren Operanden werden nicht ausgewertet.

Die Optionsvariable prederror kontrolliert das Verhalten von or für den Fall, dass ein Operand nicht zu true oder false ausgewertet werden kann. or gibt eine Fehlermeldung, wenn prederror den Wert true hat. Andernfalls werden Operanden akzeptiert, die nicht zu true oder false ausgewertet werden können und das Ergebnis ist ein boolescher Ausdruck.

or ist nicht kommutativ, da aufgrund von nicht ausgewerteten Operanden die Ausdrücke a or b und b or a ein unterschiedliches Ergebnis haben können.

Beispiele:

(%i1) n:2;
(%o1)                           2
(%i2) oddp(n) or evenp(n);
(%o2)                         true
(%i3) a=b or not(1=1) or integerp(2);
(%o3)                         true
(%i4) a or b;
(%o4)                        a or b
(%i5) prederror:true$
(%i6) a or b;

Unable to evaluate predicate a
 -- an error. To debug this try: debugmode(true);

Da or nur so viele Operanden auswertet wie notwendig sind, um das Ergebnis festzustellen, führt der syntaktische Fehler im zweiten Operanden nicht zu einer Fehlermeldung, da das Ergebnis bereits mit dem ersten Operanden feststeht.

(%i7) integerp(2) or sin(2,2);
(%o7)                         true
Operator: not

Ist die logische Negation. not ist ein Prefix-Operator. Der Operand ist ein boolescher Ausdruck und das Ergebnis ein boolescher Wert.

Der Operator not erzwingt die Auswertung des Operanden. Die Optionsvariable prederror kontrolliert das Verhalten von not für den Fall, dass der Operand nicht zu true oder false ausgewertet werden kann. not gibt eine Fehlermeldung, wenn prederror den Wert true hat. Andernfalls wird ein Operand akzeptiert, der nicht zu true oder false ausgewertet werden kann, und das Ergebnis ist ein boolescher Ausdruck.

Beispiele:

(%i1) not integerp(2);
(%o1)                         false
(%i2) not (a=b);
(%o2)                         true
(%i3) not a;
(%o3)                         not a
(%i4) prederror:true$
(%i5) not a;

Unable to evaluate predicate a
 -- an error. To debug this try: debugmode(true);

Nächste: , Vorige: , Nach oben: Operatoren   [Inhalt][Index]