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

7.3 Relationale Operatoren

Operator: <
Operator: <=
Operator: >=
Operator: >

Die Symbole <, <=, >= und > sind die relationalen Operatoren "kleiner als", "kleiner als oder gleich", "größer als oder gleich" und "größer als". Die Namen dieser Operatoren sind jeweils: "<", "<=", ">=" und ">". Diese können dort eingesetzt werden, wo der Name des Operators benötigt wird.

Die relationalen Operatoren sind binäre Operatoren. Ausdrücke wie a < b < c werden von Maxima nicht erkannt und generieren eine Fehlermeldung.

Relationale Ausdrücke werden von den Funktionen is und maybe sowie den Funktionen if, while und unless zu booleschen Werten ausgewertet. Relationale Ausdrücke werden ansonsten nicht zu booleschen Werten ausgewertet oder vereinfacht. Jedoch werden die Operanden eines booleschen Ausdruckes ausgewertet, wenn die Auswertung nicht mit dem Quote-Operator ' unterdrückt ist.

Wenn ein relationaler Ausdruck mit den Funktionen is oder if nicht zu true oder false ausgewertet werden kann, wird das Verhalten der Funktionen von der Optionsvariablen prederror kontrolliert. Hat prederror den Wert true, wird von is und if ein Fehler erzeugt. Hat prederror den Wert false, hat is den Rückgabewert unknown und if gibt einen konditionalen Ausdruck zurück, der teilweise ausgewertet ist.

Die Funktion maybe verhält sich immer so, als ob prederror den Wert false hat, und die Schleifenanweisungen while sowie unless verhalten sich immer so, als ob prederror den Wert true hat.

Relationale Operatoren werden nicht auf die Elemente von Listen oder Matrizen sowie auf die beiden Seiten einer Gleichung angewendet.

Siehe auch die Operatoren = und # sowie die Funktionen equal und notequal.

Beispiele:

Relationale Ausdrücke werden von einigen Funktionen zu booleschen Werten ausgewertet.

(%i1) [x, y, z] : [123, 456, 789];
(%o1)                    [123, 456, 789]
(%i2) is (x < y);
(%o2)                         true
(%i3) maybe (y > z);
(%o3)                         false
(%i4) if x >= z then 1 else 0;
(%o4)                           0
(%i5) block ([S], S : 0, for i:1 while i <= 100 do S : S + i, 
             return (S));
(%o5)                         5050

Relationale Ausdrücke werden ansonsten nicht zu booleschen Werten ausgewertet oder vereinfacht, jedoch werden die Operanden eines relationalen Ausdruckes ausgewertet.

(%i1) [x, y, z] : [123, 456, 789];
(%o1)                    [123, 456, 789]
(%i2) [x < y, y <= z, z >= y, y > z];
(%o2)    [123 < 456, 456 <= 789, 789 >= 456, 456 > 789]
(%i3) map (is, %);
(%o3)               [true, true, true, false]

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