
Les conditions doivent être des booléens, on ne peut pas comme en C tester si un entier est différent de 0 juste en mettant "if mon_entier", il faut explicitement dire que l'on veut vérifier que cet entier est différent de 0. Les opérateurs de comparaison sont les suivants :
|
|
= |
: égalité (== en C) |
|
|
/= |
: différent (!= en C) |
|
|
< |
: inférieur strict |
|
|
> |
: supérieur strict |
|
|
<= |
: inférieur ou égal |
|
|
>= |
: supérieur ou égal |
|
|
in |
: appartenance à un intervalle (noté borne_inf..borne_sup) |
|
|
not in |
: non appartenance à un intervalle |
On peut ensuite combiner les résultats obtenus avec les opérateurs suivant :
|
|
not |
: négation |
|
|
and |
: "et" (attention, les deux conditions sont évaluées ! Différent du && du C) |
|
|
or |
: "ou" (attention, les deux conditions sont évaluées ! Différent du || du C) |
|
|
xor |
: "ou exclusif" (équivalent du ^^ en C) |
|
|
and then |
: "et", évalue la 1ère expression (celle de gauche) puis si elle est vrai la seconde et renvoie true si les 2 sont vraies. (équivalent du && en C) |
|
|
or else |
: "ou", évalue la 1ère expression (celle de gauche) puis si elle est fausse la seconde et renvoie true si l'une ou l'autre est vrai (équivalent du || en C) |
if then else if condition then liste d’instructions [elsif condition liste d'instructions] [...] [else liste d'instructions] end if;
switch case expression is when valeur_1 => liste d'instructions [when valeur_2|valeur_3|valeur_4 => listes d'instructions] [...] [when others => listes d'instructions end case; Comme en C, un break est contenu implicitement à la fin des différents cas.
La boucle de base, la boucle infinie (cela peut sembler absurde, mais c'est très utile, surtout en robotique) se présente comme ceci : loop liste d'instructions end loop; Maintenant, si on veut faire une boucle mais en sortir à un moment donné, on peur utiliser l'instruction : exit when condition;
for for indice in [reverse] intervalle loop liste d'instructions end loop; L'intervalle est de la forme début..fin avec début inférieur à fin. Si on veut faire une boucle avec un indice décroissant, il faut utiliser le mot clef reverse, un intervalle du style 5..1 est vide et donc la boucle ne sera jamais exécutée. NOTE: indice n'est pas une vraie variable, il ne faut pas le déclarer en même temps que les autres variables et on ne peut pas le modifier.
while while condition loop liste d'instructions end loop;