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
|
|