Navigation: BlitzBasic >>> Blitz2D >>> Funktionen >>> Grundwissen Für Berechnungen und Vergleiche gibt es diverse Operatoren. Im Gegensatz zu Funktionen, wo Parameter hinter dem Funktionsnamen in Klammern stehen, stehen Operatoren zwischen zwei Parametern, die sie miteinander verknüpfen und einen Rückgabewert liefern.

Berechnungen

Ebenso wie man Zeichenketten zusammenfügen und in einer Stringvariablen speichern kann, kann man auch mit Integer- oder Floatwerte rechnen.

OprationBeispiel
AddierenPrint 6 + 3
SubtrahierenPrint 6 - 3
MultiplizierenPrint 6 * 3
DividierenPrint 6 / 3
PotenzierenPrint 6 ^ 3

Dazu kommen noch viele mathematische Funktionen, die jedoch erst später erklärt werden.

Vergleiche

Eine Gleichung hat als Rückgabewert entweder True(Wahr) oder False(Falsch), je nachdem ob die Gleichung richtig oder Falsch ist.

OprationBeispiel
GleichPrint 6 = 3
GrößerPrint 6 > 3
Größer oder GleichPrint 6 >= 3
KleinerPrint 6 < 3
Kleiner oder GleichPrint 6 <= 3
UngleichPrint 6 <> 3

Mit dem Rückgabewert eines Vergleichs kann man auch rechnen, dabei wird für True der Wert 1 und für False der Wert 0 verwendet. Es kann aber auch jede Berechnung als Vergleich verwendet werden. Dabei wird nur ein Ergebnis von 0 als False und jedes andere Ergebnis als True bewertet.

weitere Operatoren

Mod

Mit Mod kann man den ganzzahligen Rest einer Division von zwei Integerzahlen ermitteln. So lässt sich auch überprüfen, ob eine Zahl durch eine andere teilbar ist. (wenn Zahl1 Mod Zahl2 als Ergebnis 0 hat)

Schiebeoperatoren Shl, Shr, Sar

Zum Verständnis der Schiebeoperatoren ist es erforderlich, das Binärsystem zu verstehen, das jedoch erst später behandelt wird. Zunächst reicht es zu wissen, dass Schiebeoperatoren sehr schnell Zahlen mit 2 Multiplizieren oder dividieren können.

Shl multipliziert die linke Zahl so oft mit Zwei, wie die rechte Zahl angibt.

Tatsächlich werden dabei die Bits der Ausgangszahl so oft nach links verschoben, wie nach Shl angegeben wird. Das Bit an Position 31 dient zur kennzeichnung von negativen Zahlen, daher wird es von Shl nicht verändert. Es wird bei also jeweils rechts ein 0-Bit herein geschoben und das Bit an Position 30 geht verloren.
Beispiel:
Bits313029282726252423222120191817161514131211109876543210
Ausgangszahl (27153)00000000000000000110101000010001
nach Shl 3 (217224)00000000000000110101000010001000
27153 Shl 3 = 27153 * 2³ = 27153 * 8 = 217224

Shr dividiert die linke Zahl so oft durch Zwei, wie die rechte Zahl angibt, jedoch funktioniert das nur korrekt, wenn die linke Zahl positiv ist. Dieser Fehler entsteht dadurch, dass Shr alle Bits, einschließlich des Negativ-Bit (Bit31) verschiebt. Darum sollte möglichst immer Sar anstelle von Shr verwendet werden, sonst führt das verschieben von Bits in Variablen zu unerwünschten Auswirkungen, dei aber keine Fehlermeldung Sar dividiert die linke Zahl so oft durch Zwei, wie die rechte Zahl angibt, mit Sar geht das jedoch auch mit negativen Zahlen.

Logische Operatoren And, Or, Xor

Um mit logischen Operatoren zu rechnen, ist auch die Kenntnis des Binärsystems erforderlich. Aber man kann logische Operatoren auch zum Verknüpfen mehrerer Vergleiche verwenden.

OperatorBeschreibungBeispiel
Andergibt Wahr(True), wenn beide Ausrücke wahr sind(A%<5) And (A%>3) ;ergibt nur True, wenn A%=4 ist
Orergibt Wahr, wenn mindestens einer der Ausdrücke wahr ist (oder beide(A%<5) Or (A%>3) ;ergibt immer True
Xorergibt nur wahr wenn einer, aber nicht beide Ausdrücke wahr sind(A%<5) Xor (A%>3) ;ergibt nur False, wenn A%=4 ist

Zusammenfassung

OprationBeispiel
ganzahliger DivisionsrestPrint 9 Mod 5 (ergibt 4)
Bitweise links verschiebenPrint 8 Shl 3 (ergibt 64)
Bitweise rechts verschiebenPrint 8 Shr 3 (ergibt 1)
Aritmetisches rechts verschiebenPrint 8 Sar 3 (ergibt 1)
Logisches undPrint 8 And 3 (ergibt 0)
Logisches oderPrint 8 Or 3 (ergibt 11)
Logisches exklusiv oderPrint 8 Xor 3 (ergibt 11)

If-Then-Else

If führt nachfolgende Anweisungen nur dann aus, der angegebene Vergleich True(ungleich 0) ergibt. Es können aber auch mit Else weitere Anweisungen angegeben werden, die nur ausgeführt werden, wenn der Vergleich hinter If False(gleich 0) ergibt. If ist eine Blockanweisung, das heißt, dass innerhalb eines If-Blocks beliebig viele andere Anweisungen und auch weitere If-Blöcke stehen können. Durch die Verschachtelung von If-Blöcken kann ein Programm schnell sehr unübersichtlich werden, darum ist es sinnvoll, die enthaltenen Anweisungen mit Tabs einzurücken und längere Anweisungsteile in Funktionen auszulagern.

Syntax(Einzeilig): If {Vergleich} [[Then][ {Anweisungen}][Else[If {Vergleich}] [{Anweisungen}]]|Endif | End If]

Syntax(mehrzeilig): 
If {Vergleich} [Then]
[{Anweisungen}]
[Else
[{Anweisungen}]]
Endif | End If

IF {Vergleich}

Ein If-Block beginnt immer mit If und einem Vergleich. Der Vergleich wird berechnet und je nach Ergebnis werden nachfolgende Anweisungen ausgeführt.

Then {Anweisungen}

Then nach dem Vergleich ist nicht erforderlich, sollte aber zur Verbesserung der Übersicht besonders bei verschachtelten If-Blöcken angegeben werden. Auch die Anweisungen hinter Then sind nicht erforderlich, dadurch ist beispielsweise auch folgender IF-Block gültig:

If {Vergleich} Else {Anweisungen} ;Die Anweisungen werden nur ausgeführt wenn der Vergleich False ergibt

Elseif | Else If {Vergleich} {Anweisungen}

Mit Elseif (oder Else If) kann ein weiterer Vergleich angegeben werden, der nur geprüft wird, wenn der Vergleich hinter If False ergibt. Es ist sowohl die Schreibweise "Elseif" als auch "Else If" zulässig, jedoch sollte Elseif wegen der Verwechslungsgefahr bevorzugt verwendet werden.

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.