Next: Logische Operatoren, Previous: Arithmetische Operatoren, Up: Operatoren [Contents][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]

Next: Logische Operatoren, Previous: Arithmetische Operatoren, Up: Operatoren [Contents][Index]