Syntaxe
Exécute un bloc d'instructions seulement si une condition est vraie, avec des branches ELSEIF et ELSE facultatives. La première branche vraie s'exécute, les autres sont sautées.
IF <condition> THEN <statement> [: <statement>…] [ELSE <statement> [: <statement>…]]
IF <condition> [THEN]
<statements>
[ELSEIF <condition> [THEN]
<statements>]…
[ELSE IF <condition> [THEN]
<statements>]…
[ELSE
<statements>]
ENDIF
END IFS’écrit aussi : THEN, ELSEIF, ELSE, ENDIF, END IF, ELSE IF
Les éléments
| <condition> | N'importe quelle expression. 0, une chaîne vide, FALSE et NULL sont faux ; tout le reste est vrai. Dans une condition, = compare et n'affecte jamais. |
|---|---|
| <statement> | Une instruction de la forme sur une ligne. Plusieurs peuvent suivre THEN ou ELSE, séparées par :. |
| <statements> | Les lignes d'une branche de la forme en bloc. |
À savoir
THENest obligatoire sur la forme sur une ligne : il marque la fin de la condition. Si rien ne suitTHEN, la ligne ouvre un bloc, qui doit se fermer parENDIFouEND IF.- Sur la forme sur une ligne, toutes les instructions reliées par
:aprèsTHENappartiennent à la branche THEN, et toutes celles aprèsELSEà la branche ELSE. ELSEIFetELSE IFsont le même mot, avec ou sansTHEN.ELSEvient une seule fois, en dernier : unELSEIFaprès lui, ou un secondELSE, est une erreur de compilation.- Un IF sur une ligne ne peut pas contenir un autre IF sur une ligne :
IF x = 1 THEN IF y = 2 THEN …compile, mais le programme ne démarre pas. ÉcrivezIF x = 1 AND y = 2 THEN …ou un bloc. - Sur la forme sur une ligne, la condition ne doit pas contenir de chaîne qui renferme
THEN:IF a$ = "X THEN Y" THEN …compile, mais le programme ne démarre pas. Rangez d'abord le texte dans une variable, ou passez à la forme en bloc. - Un IF en bloc ne crée pas de portée : une variable créée à l'intérieur reste lisible après
ENDIF.
Exemple
score = 75IF score >= 90 Console("A")ELSEIF score >= 70 THEN Console("B") ' BELSE Console("C")ENDIFIF score > 50 THEN Console("pass") ELSE Console("fail") ' passDans le manuel : Contrôle du flux