Blitz2D: RechnenUndVergleichen
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
BearbeitenEbenso wie man Zeichenketten zusammenfügen und in einer Stringvariablen speichern kann, kann man auch mit Integer- oder Floatwerte rechnen.
Opration | Beispiel |
Addieren | Print 6 + 3 |
Subtrahieren | Print 6 - 3 |
Multiplizieren | Print 6 * 3 |
Dividieren | Print 6 / 3 |
Potenzieren | Print 6 ^ 3 |
Dazu kommen noch viele mathematische Funktionen, die jedoch erst später erklärt werden.
Vergleiche
BearbeitenEine Gleichung hat als Rückgabewert entweder True(Wahr) oder False(Falsch), je nachdem ob die Gleichung richtig oder Falsch ist.
Opration | Beispiel |
Gleich | Print 6 = 3 |
Größer | Print 6 > 3 |
Größer oder Gleich | Print 6 >= 3 |
Kleiner | Print 6 < 3 |
Kleiner oder Gleich | Print 6 <= 3 |
Ungleich | Print 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
BearbeitenMod
BearbeitenMit 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
BearbeitenZum 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:
Bits | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Ausgangszahl (27153) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
nach Shl 3 (217224) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
- 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
BearbeitenUm 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.
Operator | Beschreibung | Beispiel |
And | ergibt Wahr(True), wenn beide Ausrücke wahr sind | (A%<5) And (A%>3) ;ergibt nur True, wenn A%=4 ist |
Or | ergibt Wahr, wenn mindestens einer der Ausdrücke wahr ist (oder beide | (A%<5) Or (A%>3) ;ergibt immer True |
Xor | ergibt nur wahr wenn einer, aber nicht beide Ausdrücke wahr sind | (A%<5) Xor (A%>3) ;ergibt nur False, wenn A%=4 ist |
Zusammenfassung
BearbeitenOpration | Beispiel |
ganzahliger Divisionsrest | Print 9 Mod 5 (ergibt 4) |
Bitweise links verschieben | Print 8 Shl 3 (ergibt 64) |
Bitweise rechts verschieben | Print 8 Shr 3 (ergibt 1) |
Aritmetisches rechts verschieben | Print 8 Sar 3 (ergibt 1) |
Logisches und | Print 8 And 3 (ergibt 0) |
Logisches oder | Print 8 Or 3 (ergibt 11) |
Logisches exklusiv oder | Print 8 Xor 3 (ergibt 11) |
If-Then-Else
BearbeitenIf 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}
BearbeitenEin If-Block beginnt immer mit If und einem Vergleich. Der Vergleich wird berechnet und je nach Ergebnis werden nachfolgende Anweisungen ausgeführt.
Then {Anweisungen}
BearbeitenThen 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}
BearbeitenMit 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.