La structure if .. then .. else
 Une instruction conditionnelle à la forme:

if condition let action else action alternative

 Scriptol utilise soit le mot-clé let quand l'action est une instruction unique ou ":" quand c'est une bloc d'instructions.
Si le bloc d'instructions démarre sur la ligne suivante, la fin de ligne termine la condition, et le ":" devient optionnel.

Exemple de structure if complète if nom = "pussycat"
  print "c'est un chat"
  print "il semble blessé"
else
  print "c'est une autre animal"
/if


Le bloc else est optionnel. Donc une structure "if" est une condition suivie par une ou plusieurs instructions (qui peuvent être d'autre if) et terminée par /if.
Le symbole "/" est un raccourci pour "fin", et est utilisé pour terminer toute structure de contrôle. "/if" signifie "fin de la structure if".

La condition peut être une comparaison comme ci-dessus, ou toute sorte de test. Le test "in" déja vu, un test booléen, ou autre chose qui s'évaluer comme une valeur booléenne, vrai ou faux.

Tout sur une ligne:: if a = b :  print "hello"; /if


Une instruction


Souvent l'instruction "if" est utilisée pour exécuter sous condition une instruction unique, comme break, print, etc... et la syntaxe devrait être simplifiée alors. Et aussi, quand une instruction termine le traitement, il ne semble pas naturel que le code ajoute quelque chose après.
Par exemple:
if condition : break; /if ou
if condition : return; /if

Le /if semble inutile puisqu'on ne l'atteint pas, aussi Scriptol permet de le supprimer, grâce à la syntaxe d'instruction unique qui utilise le mot-clé "let".
Le mot "let" signifie Last, Execute, Terminate (dernier, exécute, termine).
L'instruction let est toujours la dernière partie d'une structure de contrôle. Quand "let" est suivi d'un mot-clé (break, print, ...) il peut être omis, (pas à la fin d'un while). Quand la condition est suivie par let plutôt que par : ou une fin de ligne, cela signifie que le corps de la structure est une instruction unique, et ne peut avoir plus d'une instruction.
Cette règle s'applique à toutes les structures de contrôle sauf "do" qui n'a pas de condition au début.

Syntaxe:
if condition let instruction
if
condition let instruction; else instruction

Exemples de if mono-instruction: if x < 10 break
if (x + y) = 0 print "un peu de texte"
if a < 10 print "moins"; else print "plus"



If composite

Nous venons d'étudier la forme la plus simple de la structure de contrôle if. En fait, c'est dans Scriptol une structure très puissante qui peut accomplir plusieurs comparaisons ou autres sortes de tests dans des blocs alternatifs, et convient pour le pattern-matching.

Supposons que l'on veut comparer une variable (number, text, array) à
plusieurs valeurs, la structure if peut avoir cette forme:
if variable | expression
= valeur1: instructions
= valeur2: instructions
= valeur3: instructions
else instructions
/if

 La variable ou l'expression est comparée avec les valeurs successives de la structure et selon l'opérateur indiqué et si le résultat est la valeur booléenne vrai, le bloc d'instruction en face est exécuté.
Seules les instructions qui suivent la valeur correspondant à la variable seront traitées, donc le bloc d'instruction s'achève avec la condition suivante, ou else ou /if.
Si aucune valeur ne convient, les instructions suivant else seront traitées.
On peut aussi tester si la variable est inférieure ou supérieure à une valeur, et ainsi de suite.

Exemple de structure if composite if a
< 10 : print "moins"
= 10 : print "égal"
> 10 : print "plus"
/if


On peut aussi tester si la valeur est dans un tableau:

Exemple de structure if composite utilisant in if a
in array(1,2,3): print "premier"
in array(4,5,6): print "second"
in array(7,8) : print "troisième"
else print "autre"
/if


On peut utiliser ces opérateurs et les mêler dans une structure if:
=, <, >, <=, >=, !=, <>, in, match.


 Exercices

1) Un tableau contient le nom de quatre fruits: orange, kiwi, poire, prune.
Soit la variable de texte a. Quand a contient le texte "kiwi", ou "y", afficher "oui", sinon afficher "non".
Définir la structure de contrôle, la mettre dans la fonction "test" et appeler la fonction successivement avec les valeurs "cerise", "n", "kiwi", "y".

Réponse