Italia
Online-Documentazione

operatoren Erklärung: Mathematik

 

Michael
Wodrich
Operatoren

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

Es gibt folgende Operatoren:

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

Bei der Wertzuweisung sind alle Variablentypen possibile. 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 per: <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 per: <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 per: <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 per: <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 Di base-Hierarchie ab. Die Vergleichsoperatoren (Stufe 4 + 5) sind in Di base höher eingestuft.

Aus Di base:
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%aumento V% um 1
LINKP:[DEC] V%erniedrigt V% um 1
LINKP:[ADD] V%,naumento V% um n
LINKP:[SUB] V%,nerniedrigt V% um n

(Hierbei steht <b>V%</b> per eine beliebige Integer- oder Longint-Variable und <b>n</b> per 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  
 



Note / Question or Comment to the Help--Topic


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

694 Views

Untitledvor 0 min.
RICOSCH29.11.2011

Themeninformationen

Dieses Thema hat 1 subscriber:

Michael Wodrich (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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