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 IF

S’é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

  • THEN est obligatoire sur la forme sur une ligne : il marque la fin de la condition. Si rien ne suit THEN, la ligne ouvre un bloc, qui doit se fermer par ENDIF ou END IF.
  • Sur la forme sur une ligne, toutes les instructions reliées par : après THEN appartiennent à la branche THEN, et toutes celles après ELSE à la branche ELSE.
  • ELSEIF et ELSE IF sont le même mot, avec ou sans THEN. ELSE vient une seule fois, en dernier : un ELSEIF après lui, ou un second ELSE, 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. Écrivez IF 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")   ' pass
Dans le manuel : Contrôle du flux