Boolesche Operatoren - Cinderella Dokumentation
Description: The user's guide to the Interactive Geometry Software Cinderella

Zum Inhalt

# Boolesche Operatoren

Bedingte Verzweigungen können stark vom Ergebnis einer booleschen Abfrage abhängen. In diesem Abschnitt beschreiben wir alle Arten solcher Abfragen sowie die verschiedenen Möglichkeiten, boolesche Werte zu verarbeiten.

### Infix-Operatoren

#### Testen auf Gleichheit: `<expr1> == <expr2>`

Beschreibung: Dieser Operator prüft, ob zwei Ausdrücke denselben Wert ergeben. Das Ergebnis dieses Operators ist entweder `true` oder `false`.

#### Testen auf Ungleichheit: `<expr1> != <expr2>`

Beschreibung: Dieser Operator prüft, ob zwei Ausdrücke nicht denselben Wert ergeben. Das Ergebnis dieses Operators ist entweder `true` oder `false`. Es ist die logische Negation von `<expr1> == <expr2>`.

#### Größer als: `<expr1> > <expr2>`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr1>` größer als der Ausdruck `<expr2>` ist. Er gibt einen `<bool>`-Wert zurück. Der Vergleich ist nur in zwei Fällen verfügbar: Wenn beide Ausdrücke reelle Zahlen sind, dann ist die Ordnung die übliche Ordnung reeller Zahlen. Wenn beide Ausdrücke Strings sind, dann ist die Ordnung die lexikographische (Wörterbuch-)Ordnung. In allen anderen Fällen (wenn die Werte nicht vergleichbar sind) wird der Wert `____` zurückgegeben.

#### Kleiner als: `<expr1> < <expr2>`

Beschreibung: Dieser Operator ist ähnlich wie >, prüft aber auf kleiner als.

#### Größer oder gleich: `<expr1> >= <expr2>`

Beschreibung: Dieser Operator ist ähnlich wie >, prüft aber auf größer oder gleich.

#### Kleiner oder gleich: `<expr1> <= <expr2>`

Beschreibung: Dieser Operator ist ähnlich wie >, prüft aber auf kleiner oder gleich.

##### Fuzzy-Vergleiche: `~=`, `~!=`, `~<`, `~>`, `~>=`, `~<=`

Beschreibung: CindyScript bietet eine Fuzzy-Variante für jeden Vergleichsoperator. Diese Version prüft, ob die Bedingung bis zu einer Epsilon-Grenze erfüllt ist. So prüft der Test `a~=0`, ob die Variable `a` zwischen `+epsilon` und `-epsilon` liegt. Der kleine Wert Epsilon ist auf `0.0000000001` gesetzt. Dieser Operator ist manchmal sehr nützlich, um Ungenauigkeiten zu umgehen, die in rein numerischen Berechnungen unvermeidbar sind.

Die genaue Semantik der exakten und Fuzzy-Operatoren kann aus dem folgenden Diagramm abgelesen werden. Hier zeigt das Bild für jeden Operator, für welchen Bereich von `b` (in rot markiert) der Operator zu true ausgewertet wird.

#### Logisches und: `<bool1> & <bool2>`

Beschreibung: Logisches und von zwei booleschen Werten, definiert durch die folgende Wahrheitstabelle:

`A` | `B` | `A & B`
--- | --- | ---
`false` | `false` | `false`
`false` | `true` | `false`
`true` | `false` | `false`
`true` | `true` | `true`

Wenn eines der beiden Argumente kein boolescher Ausdruck ist, gibt der Operator `___` zurück.

#### Logisches oder: `<bool1> % <bool2>`

Beschreibung: Logisches oder von zwei booleschen Werten, definiert durch die folgende Wahrheitstabelle:

`A` | `B` | `A % B`
--- | --- | ---
`false` | `false` | `false`
`false` | `true` | `true`
`true` | `false` | `true`
`true` | `true` | `true`

Wenn eines der beiden Argumente kein boolescher Ausdruck ist, gibt der Operator `___` zurück.

#### Logisches nicht: `!<bool>`

Beschreibung: Logisches nicht eines booleschen Wertes, definiert durch die folgende Wahrheitstabelle:

`A` | `!A` |
`false` | `true` |
`true` | `false` |

Wenn das Argument kein boolescher Ausdruck ist, gibt der Operator `____` zurück.

### Funktionale Operatoren

#### Logisches und: `and(<bool1>,<bool2>)`

Beschreibung: `and(x,y)` ist äquivalent zu `x & y`.

#### Logisches oder: `or(<bool1>,<bool2>)`

Beschreibung: `or(x,y)` ist äquivalent zu `x % y`.

#### Logisches nicht: `not(<bool>)`

Beschreibung: `not(x)` ist äquivalent zu `!x`.

#### Logisches Exklusiv-Oder: `xor(<bool1>,<bool2>)`

Beschreibung: Logisches Exklusiv-Oder von zwei booleschen Werten, definiert durch die folgende Wahrheitstabelle:

`A` | `B` | `xor(A,B)`
--- | --- | ---
`false` | `false` | `false`
`false` | `true` | `true`
`true` | `false` | `true`
`true` | `true` | `false`

Wenn eines der beiden Argumente kein boolescher Ausdruck ist, gibt der Operator `___` zurück.

### Typ-Prädikate

Die folgenden Prädikate prüfen, ob der Ausdruck `<expr>` zu einer bestimmten Klasse von Objekten gehört. Die Prädikate sind wichtig beim Definieren von Funktionen, deren Verhalten vom Typ der Eingabeausdrücke abhängt. Darüber hinaus sind diese Argumente sehr nützlich zum Debuggen, da sie verwendet werden können, um Assertions zur Typisierung der Werte in einem Programm zu testen.

#### Ist eine ganze Zahl: `isinteger(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine ganze Zahl ist.

#### Ist eine reelle Zahl: `isreal(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine reelle Zahl ist. Beachten Sie, dass ganze Zahlen auch reelle Zahlen sind.

#### Ist eine komplexe Zahl: `iscomplex(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine komplexe Zahl ist. Beachten Sie, dass reelle Zahlen auch komplexe Zahlen sind.

#### Ist gerade: `iseven(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine gerade ganze Zahl ist.

#### Ist ungerade: `isodd(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine ungerade ganze Zahl ist.

#### Ist eine Liste: `islist(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine Liste ist.

#### Ist eine Matrix: `ismatrix(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` die Form einer Matrix hat. Das bedeutet, dass die Einträge der Liste selbst Listen sind, alle von gleicher Länge. Wenn es n Einträge gibt, jeweils von Länge m, repräsentiert der Ausdruck eine n × m Matrix.

#### Ist ein Zahlenvektor: `isnumbervector(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine Liste ist, deren Einträge alle Zahlen sind (ganz, reell oder komplex).

#### Ist eine Zahlenmatrix: `isnumbermatrix(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine Matrix ist, deren Einträge alle Zahlen sind (ganz, reell oder komplex).

#### Ist ein String: `isstring(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` ein String ist.

#### Ist ein geometrisches Element: `isgeometric(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` ein geometrisches Element darstellt.

#### Ist ausgewählt: `isselected(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` ein geometrisches Element darstellt und ausgewählt ist. Bei einem geometrischen Element können Sie auch die Eigenschaft .selected verwenden, um dies zu überprüfen.

#### Ist ein Punkt: `ispoint(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` einen geometrischen Punkt darstellt.

#### Ist eine Linie: `isline(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine geometrische Linie darstellt.

#### Ist ein Kreis: `iscircle(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` einen geometrischen Kreis darstellt.

#### Ist ein Kegelschnitt: `isconic(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` einen geometrischen Kegelschnitt darstellt.

#### Ist eine Masse: `ismass(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine CindyLab-Masse darstellt.

#### Ist eine Sonne: `issun(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine CindyLab-Sonne darstellt.

#### Ist eine Feder: `isspring(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` eine CindyLab-Feder darstellt.

#### Ist undefiniert: `isundefined(<expr>)`

Beschreibung: Dieser Operator prüft, ob der Ausdruck `<expr>` ein undefiniertes Element (`___`) zurückgibt.

Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten