Operatoren: Unterschied zwischen den Versionen

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „ == Allgemeines == Unter Operatoren versteht man spezielle Zeichen, die angeben, wie mit Werten bzw. Variablen verfahren werden soll. === Zuweisungs-Operato…“)
 
Keine Bearbeitungszusammenfassung
Zeile 25: Zeile 25:


==== indirekte Zuweisungs-Operatoren ====
==== indirekte Zuweisungs-Operatoren ====
Die Sprache lässt auch eine indirekte Zuweisung zu. Eine Funktion liefert ein Ergebnis zurück. Werden jedoch mehrere Ergebnisse aus einer Funktion benötigt, kann die Funktion entweder ein Array mit den Ergebnissen zurückgeben, oder bestimmte Parameter werden [[by reference]] übergeben:
nErgebnis := BerechneWas(nWert1, nWert2, @nSteuer, @nBestand)
Die Variablen nSteuer und nBestand werden [[by reference]] übergeben, während die Variablen nWert1 und nWert2 [[by value]] übergeben werden.
Eine Übergabe [[by value]] übergibt eine Kopie des Variablen-Inhalts, während eine Übergabe [[by reference]] eine Referenz auf die Variable übergibt, d.h. die aufgerufene Funktion kann den Inhalt der Variablen verändern.
Arrays und Objekte werden [[by reference]] übergeben.
In unserem Beispiel kann die Funktion BerechneWas() den beiden Variablen nSteuer und nBestand neue Werte zuweisen.




=== Vergleichs-Operatoren ===
=== Vergleichs-Operatoren ===
Ein Vergleichsoperator vergleicht zwei Variablen miteinander und liefert entweder [[TRUE]] oder [[FALSE]] als Ergebnis zurück.
'A' > 'B' => [[FALSE]]
Es werden die bekannten mathematischen Vergleichs-Operatoren unterstützt:
=
>
<
>=
<=
Als weiteren Vergleichs-Operator gibt es noch
==
Hiermit wird auf vollständige Gleichheit verglichen, auch in Abhängig von [[SET EXACT]] bzw. [[SET LEXICAL]]. Wenn zwei Strings mit = verglichen werden, endet der Vergleich mit dem Ende des ersten Strings. Tritt bis zu dieser Stelle keine Abweichung auf, werden beide Strings als gleich angesehen:
cEins := "abcdef"
cZwei := "abcdefg"
cEins = cZwei => [[TRUE]]
cZwei = cEins => [[FALSE]]
cEins == cZwei => [[FALSE]]
Der Vergleich cEins = cZwei vergleicht nur die ersten sechs Zeichen von cEins mit cZwei, da cEins nur eine Länge von sechs Zeichen hat. Da die ersten sechs Byte in beiden Variablen identisch sind, liefert der Verleich ein [[TRUE]].
Der Vergleich cZwei = cEins vergleicht neben den ersten sechs Zeichen auch das siebte Zeichen von cZwei, das in cEins nicht mehr vorhanden ist. Daher ist dieser Vergleich [[FALSE]].
Der Vergleich cEins == cZwei erzwingt einen Vergleich beider Strings in der vollständigen Länge beider Strings und liefert daher ebenfalls [[FALSE]].
Für den Einsatz des einfachen Vergleichs gelten folgende Regeln:
ist cZwei (der Wert auf der rechten Seite) ein leerer String, ergibt der Vergleich [[TRUE]]
ist cZwei länger als cEins, werden nur die Zeichen von cEins mit den korrespondieren Stellen von cZwei verglichen





Version vom 20. April 2016, 13:09 Uhr

Allgemeines

Unter Operatoren versteht man spezielle Zeichen, die angeben, wie mit Werten bzw. Variablen verfahren werden soll.


Zuweisungs-Operatoren

direkte Zuweisungs-Operatoren

Der klassische Zuweisungsoperator ist das

=

Da das Gleichheitszeichen aber auch zu den Vergleichs-Operatoren gehört, sollte man zur besseren Lesbarkeit des Codes den Zuweisungs-Operator

:=

verwenden werden.

Der Zuweisungs-Operator kann auch mit mathematische Operatoren verknüpft werden:

nTag *= 365


indirekte Zuweisungs-Operatoren

Die Sprache lässt auch eine indirekte Zuweisung zu. Eine Funktion liefert ein Ergebnis zurück. Werden jedoch mehrere Ergebnisse aus einer Funktion benötigt, kann die Funktion entweder ein Array mit den Ergebnissen zurückgeben, oder bestimmte Parameter werden by reference übergeben:

nErgebnis := BerechneWas(nWert1, nWert2, @nSteuer, @nBestand)

Die Variablen nSteuer und nBestand werden by reference übergeben, während die Variablen nWert1 und nWert2 by value übergeben werden.

Eine Übergabe by value übergibt eine Kopie des Variablen-Inhalts, während eine Übergabe by reference eine Referenz auf die Variable übergibt, d.h. die aufgerufene Funktion kann den Inhalt der Variablen verändern.

Arrays und Objekte werden by reference übergeben.

In unserem Beispiel kann die Funktion BerechneWas() den beiden Variablen nSteuer und nBestand neue Werte zuweisen.


Vergleichs-Operatoren

Ein Vergleichsoperator vergleicht zwei Variablen miteinander und liefert entweder TRUE oder FALSE als Ergebnis zurück.

'A' > 'B' => FALSE

Es werden die bekannten mathematischen Vergleichs-Operatoren unterstützt:

=
>
<
>=
<=

Als weiteren Vergleichs-Operator gibt es noch

==

Hiermit wird auf vollständige Gleichheit verglichen, auch in Abhängig von SET EXACT bzw. SET LEXICAL. Wenn zwei Strings mit = verglichen werden, endet der Vergleich mit dem Ende des ersten Strings. Tritt bis zu dieser Stelle keine Abweichung auf, werden beide Strings als gleich angesehen:

cEins := "abcdef"
cZwei := "abcdefg"
cEins = cZwei => TRUE
cZwei = cEins => FALSE
cEins == cZwei => FALSE

Der Vergleich cEins = cZwei vergleicht nur die ersten sechs Zeichen von cEins mit cZwei, da cEins nur eine Länge von sechs Zeichen hat. Da die ersten sechs Byte in beiden Variablen identisch sind, liefert der Verleich ein TRUE.

Der Vergleich cZwei = cEins vergleicht neben den ersten sechs Zeichen auch das siebte Zeichen von cZwei, das in cEins nicht mehr vorhanden ist. Daher ist dieser Vergleich FALSE.

Der Vergleich cEins == cZwei erzwingt einen Vergleich beider Strings in der vollständigen Länge beider Strings und liefert daher ebenfalls FALSE.

Für den Einsatz des einfachen Vergleichs gelten folgende Regeln:

ist cZwei (der Wert auf der rechten Seite) ein leerer String, ergibt der Vergleich TRUE
ist cZwei länger als cEins, werden nur die Zeichen von cEins mit den korrespondieren Stellen von cZwei verglichen


mathematische Operatoren

Zeichen-Operatoren