Deutsch
Online-Dokumentation

operatoren Erklärung: Mathematik

 

Michael
Wodrich
Operatoren

Operatoren kennt Profan erst seit der Version 6. Vorher wurden mathematische und Verknüpfungs-Operationen über Funktionen erledigt. Die Funktionen existieren aus Kompatibilitätsgründen weiterhin, können aber für zukünfige Versionen von XProfan nicht garantiert werden.

Es gibt folgende Operatoren:

<b>Zuweisung:</b>
Var = AusdruckWertzuweisung

Bei der Wertzuweisung sind alle Variablentypen möglich. Der Ausdruck sollte vom gleichen Typ sein wie die Variable. Einige Werte werden automatisch konvertiert (Int <--> LongInt, Int+LongInt -> Float). Für (String <--> Int) sollte man immer Konvertierungsfunktionen benutzen ( @LINKF:[Int], @LINKF:[Str]$ ).

<b>String:</b>
A$ + B$Strings verknüpfen; alt: @Add$(A$,B$)
A$ = B$Vergleich: Gleichheit; alt: @Equ$(A$,B$)
A$ <> B$Vergleich: Ungleichheit; alt: @NEq$(A$,B$)

Der Datentyp ist hier immer vom Typ String.

<b>Mathematisch:</b>
A% + B%Addition; alt: @Add(A%,B%)
A% - B%Subtraktion; alt: @Sub(A%,B%)
A% * B%Multiplikation; alt: @Mul(A%,B%)
A% / B%Division; alt: @Div(A%,B%)
A% B%ganzzahlige Division: 5 2 = 2 (Rest fällt weg); alt: @Div&(A%,B%)
A% MOD B%Modulo/Teilungsrest: 5 mod 2 = 1 (der Rest der Division); alt: @Mod(A%,B%)
A% ^ B%Potenz; alt: @Pow(A%,B%)

Der Datentyp Integer (<b>%</b>) steht hier stellvertretend für: <b>%</b> (Integer), <b>&</b> (LongInt), <b>!</b> (Float).

<b>Relational:</b>
A% < B%Vergleich: kleiner als (less than); alt: @LT(A%,B%)
A$ < B$Vergleich: kleiner als (less than); alt: @LT$(A$,B$)
A% <= B%Vergleich: kleiner oder gleich (less or equal); (gab es nicht als Funktion)
A$ <= B$Vergleich: kleiner oder gleich (less or equal); (gab es nicht als Funktion)
A% > B%Vergleich: grösser als (greater than); alt: @GT(A%,B%)
A$ > B$Vergleich: grösser als (greater than); alt: @GT$(A$,B$)
A% >= B%Vergleich: grösser oder gleich (greater or equal); (gab es nicht als Funktion)
A$ >= B$Vergleich: grösser oder gleich (greater or equal); (gab es nicht als Funktion)
A% = B%Vergleich: Gleichheit; alt: @Equ(A%,B%)
A% <> B%Vergleich: Ungleichheit; alt: @NEq(A%,B%)

Der Datentyp Integer (<b>%</b>) steht hier stellvertretend für: <b>%</b> (Integer), <b>&</b> (LongInt), <b>!</b> (Float).

<b>Logisch:</b>
A% AND B%logisches UND
A% OR B%logisches ODER
NOT(A%)logisches NICHT (existiert <b>nur</b> als Funktion)

Der Datentyp Integer (<b>%</b>) steht hier stellvertretend für: <b>%</b> (Integer), <b>&</b> (LongInt).

<b>Binär:</b>
A% & B%binäres UND
A% | B%binäres ODER
A% << B%Bits nach links schieben (in Delphi: SHL)
A% >> B%Bits nach rechts schieben (in Delphi: SHR)

Der Datentyp Integer (<b>%</b>) steht hier stellvertretend für: <b>%</b> (Integer), <b>&</b> (LongInt).

Wenn das - auch Parameter trennt (wie etwa bei LINKP:[WINDOW] und den vielen <a href="https://xprofan.com/index.mx?online-dokumentation-rubriken/rub8">Grafik-Befehlen</a>), ist es notwendig Subtraktionen einzuklammern, etwa:
Window a%,(b% - 5) - (c% - 6),500

Anderenfalls kann der Parser durcheinander geraten und es gibt Fehlermeldungen.

Die Operatoren sind in folgende Hierarchiestufen eingeteilt:
1.^
2.MOD AND * / & >> <<
3.OR + - |
4.= > <
5.<> >= <=

Hinweis: Die Hierarchie entspricht in etwa der unter PASCAL und weicht von der BASIC-Hierarchie ab. Die Vergleichsoperatoren (Stufe 4 + 5) sind in BASIC höher eingestuft.

Aus BASIC:
If A% > 6 AND A% <= 20 THEN
<...>
End If

wird in XProfan:
If (A% > 6) AND (A% <= 20)
<...>
EndIf

In PASCAL würde man schreiben:
If (A > 6) AND (A <= 20) THEN BEGIN
<...>;
End;

Klammerung ist wie üblich erlaubt,
etwa:
C% = 5 * (A% + B%)
Ergebnis! = 248 * d% / (e% + f%)

Klammern können beliebig, d.h. bis zum Stack-Überlauf, verschachtelt werden.

<b>Wichtig:</b> Achten Sie auf die Klammersetzung. Version 7.5 stösst auf Fehler, die Version 6.5 noch übersehen hat! Die Fehlermeldung "Zu wenig Parameter" in einer Zeile mit verschachtelten Funktionen/Klammern deutet häufig auf einen Fehler in der Klammersetzung hin!

<b>Achtung:</b> Logisch bedeutet, dass das Ergebnis wahr (1) oder falsch (0) ist, bei binären Funktionen werden die Werte bitweise verknüpft:

logisch: 2 OR 4 ergibt 1, weil mindestens einer der Werte <> 0 (= wahr) ist

binär: @OR(2,4) bzw. 2 | 4 ergibt 6: %0010 OR %0100 = %0110

Für schnelle Berechnungen mit Integer-Werten, z.B. in Schleifen, etc., gibt es in XProfan zusätzlich einige Befehle, die schneller und übersichtlicher sind:

LINKP:[INC] V%erhöht V% um 1
LINKP:[DEC] V%erniedrigt V% um 1
LINKP:[ADD] V%,nerhöht V% um n
LINKP:[SUB] V%,nerniedrigt V% um n

(Hierbei steht <b>V%</b> für eine beliebige Integer- oder Longint-Variable und <b>n</b> für einen beliebigen Ausdruck.)

Für das Zusammenfügen von Strings (Zeichenketten) wird das "+" verwandt:
Text$ = "Du bist " + Str$(Alter%) + " Jahre alt."

zwar funktioniert in einigen Versionen auch:
Text$ = "Du bist ";Str$(Alter%);" Jahre alt."

jedoch ist nur das Pluszeichen als Verknüpfungs-Operator definiert. Es kann deshalb zu fehlerhaften Programmen führen, wenn hier nicht sorgfältig gearbeitet wird.

<b>Hinweis:</b> Die automatische Typumwandlung funktioniert bei einfachen Variablen. Bei Funktionen, die einen numerischen Wert zurückgeben, wird nicht immer automatisch umgewandelt, daher ist hier immer die Funktion @LINKF:[Str]$ zu verwenden! VOR und NACH den Operatoren muss ein Leerzeichen stehen. Da einige Operatorzeichen auch in einem anderen Zusammenhang benutzt werden, können Compiler und Interpreter sonst fehlerhaften Code erzeugen.
 
Programmieren, das spannendste Detektivspiel der Welt.
31.07.2005  
 



Hinweis/ Anmerkung/ Frage zum Hilfethema


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

660 Betrachtungen

Unbenanntvor 0 min.
RICOSCH29.11.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

Michael Wodrich (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie