IF … THEN … ELSEIF … ELSE … ENDIF
- Last UpdatedNov 13, 2023
- 2 minute read
IF-THEN-ELSE-ENDIF exécute plusieurs instructions en fonction de l'état d'une expression. La syntaxes est la suivante :
IF <Boolean_expression> THEN
[instructions];
[ { ELSEIF
[instructions] } ];
[ ELSE
[instructions] ];
ENDIF;
Où expression_Booleenne est une expression pouvant s'évaluer comme un booléen.
En fonction du type de données renvoyé par l'expression, l'expression est évaluée comme ayant un état vrai ou faux conformément au tableau suivant :
|
Type de données |
Ëvaluation |
|---|---|
|
Boolean, Discrete |
Utilisation directe (pas d'évaluation nécessaire). |
|
Integer |
Une valeur = 0 est évaluée fausse. |
|
Float, Real |
Une valeur = 0 est évaluée fausse. |
|
Double |
Une valeur = 0 est évaluée fausse. |
|
String, Message |
Non évaluable. L'utilisation d'une expression qui renvoie un type chaîne dans expression_Booleenne génère une erreur de validation du script. |
|
Time |
Non évaluable. L'utilisation d'une expression qui renvoie un type Time dans expression_Booleenne génère une erreur de validation du script. |
|
ElapsedTime |
Non évaluable. L'utilisation d'une expression qui renvoie un type ElapsedTime (temps écoulé) dans expression_Booleenne génère une erreur de validation du script. |
|
Object |
Utilisation d'une expression renvoyant un type Object. La validation réussit mais pendant l'exploitation, l'objet est converti au type Boolean. Si le type n'est pas convertible à Boolean, alors une exception d'exécution est déclenchée. |
Le premier bloc d'instructions est exécuté si expression_Booleenne est évalué à True. Optionnellement, un second bloc d'instructions peut être défini après le mot-clé ELSE. Ce bloc est exécuté si expression_Booleenne est évalué à False.
Pour décider entre plusieurs alternatives, une clause ELSEIF facultative peut être utilisée aussi souvent que nécessaire. La clause ELSEIF permet de simuler les instructions « switch. » existant dans d'autres langages de programmation. Par exemple :
IF valeur == 0 Then
Message = "Valeur vaut zéro";
ELSEIF valeur > 0 Then
Message = "Value is positive";
ELSEIF value < 0 Then
Message = "Valeur négative";
ELSE
{Par défaut. Ne se produit jamais dans cet exemple};
ENDIF;
L'approche suivante imbrique un seconde instruction IF à l'intérieur de la précédente et nécessite une clause ENDIF supplémentaire :
IF (X1 == 1) THEN
X1 = 5;
{ ELSEIF <X1 == 2> THEN
X1 = 10;
ELSEIF X1 == 3 THEN
X1 = 20 ;
ELSEIF X1 == 4 THEN
X1 = 30 };
IF X1 == 99 THEN
X1 = 0;
ENDIF;
ENDIF;
Voir Scripts d'exemple pour d'autres idées d'utilisation de ce type de structure de contrôle.