Referenz - IF ... THEN
Syntax A:
IF Bedingung THEN [:] Anweisungen [ELSE Anweisungen] [:] [END IF]
Syntax B:
IF Bedingung_1 THEN
' Anweisungen
[ELSEIF Bedingung_2 THEN
' Anweisungen]
[ ... ]
[ELSE
' Anweisungen]
END IF
Typ: Anweisung
Kategorie: Programmablauf
IF...THEN führt einen Codeteil nur dann aus, wenn eine Bedingung erfüllt ist.
- 'Bedingung' ist ein numerischer Ausdruck, der entweder wahr/erfüllt (ungleich null) oder falsch/nicht erfüllt (gleich null) sein kann.
- 'Anweisungen' steht für einen beliebigen FreeBASIC-Programmcode, der ausgeführt werden soll, wenn die Bedingung erfüllt wurde.
Mit IF...THEN werden einfache Entscheidungen getroffen. Um eine Variable auf viele verschiedene Möglichkeiten hin zu prüfen, wird bevorzugt SELECT CASE verwendet.
Die Bedingungen werden in der Reihenfolge abgearbeitet, in der sie im Code stehen. Der Code hinter ELSE wird abgearbeitet, wenn keine der vorhergehenden Bedingungen wahr ist.
Folgende Bedingungsstrukturen sind möglich:
- ein einfacher Vergleich wie 'x = 5'
- mehrfache Vergleiche, verbunden durch logische Operatoren, wie 'y <> 0 ANDALSO x \ y = 1'
- jede Variable eines numerischen Datentyps oder jede Zahl, wobei der Wert 0 (null) als FALSE interpretiert wird, alles andere als TRUE.
Der IF...THEN-Block muss mit END IF abgeschlossen werden.
Wenn IF nur als einzeiliger Befehl eingesetzt wird, ist END IF optional; das soll das Portieren von C-Code erleichtern. Alternativ zu END IF kann man auch ENDIF schreiben, also ohne ein Leerzeichen.
Nur in der einzeiligen Version dürfen hinter THEN und ELSE Anweisungen folgen.
Als Block-Anweisung (Syntax B) initialisiert IF...THEN seit FreeBASIC v0.16 einen SCOPE-Block, der mit der Zeile END IF endet. Variablen, die innerhalb eines solchen Blocks deklariert werden, existieren außerhalb nicht mehr.
Beispiel: Einfaches Ratespiel
RANDOMIZE
DIM AS INTEGE x = INT(RND*10)
PRINT "Rate die Zahl von 0 und 9)"
DO
INPUT "Rate..."; y
IF x = y THEN
PRINT "richtig!"
EXIT DO
ELSEIF x > y THEN
PRINT "zu klein!"
ELSE
PRINT "zu groß!"
END IF
LOOP
SLEEP
Unterschiede zu QB:
- Innerhalb eines IF...THEN-Blocks dürfen in QB keine Variablen definiert werden.
- In FreeBASIC muss in einem einzeiligen IF (Syntax A) END IF benutzt werden, wenn direkt hinter dem THEN ein Doppelpunkt (:) folgt.
- Ein einzeiliges IF darf in QB nicht mit END IF enden.
Unterschiede zu früheren Versionen von FreeBASIC:
- Seit FreeBASIC v0.16 wirkt ein IF...THEN-Block wie ein SCOPE-Block
- Seit FreeBASIC v0.15 muss END IF benutzt werden, wenn direkt hinter dem THEN ein Doppelpunkt (:) folgt.
Unterschiede unter den FB-Dialektformen:
- In -lang fb und -lang fblite können Doppelpunkte (:) statt Zeilenumbrüchen verwendet werden, um mehrzeilige Bedingungsstrukturen zu erzeugen.
- Wird in diesen Dialekten nach THEN ein Doppelpunkt oder ein Kommentarzeichen (REM oder ' ) gesetzt, so wird es als mehrzeilige Bedingungsstruktur interpretiert, alles andere wird als einzeiliges IF behandelt.
Siehe auch:
IF (Meta), SELECT CASE, IIF, DO ... LOOP, Ausdrücke und Operatoren, Bedingungsstrukturen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|