Documentation MCS32
c)
Si le nombre de fois à effectuer la boucle est déjà connu en écrivant le programme, il est
recommandé d'utiliser la structure FOR, dans un autre cas, utiliser les structures WHILE ou
REPEAT.
L'instruction FOR
L'instruction FOR permet l'exécution répétée d'une ou plusieurs instructions tandis qu'une
variable (index) parcourt pas à pas un domaine de valeurs.
La syntaxe de l'instruction FOR est la suivante :
FOR <Compteur>=<Début> TO <Fin> [STEP <Incrément>]
<Instructions>
NEXT <Compteur>
<Compteur>doit être une variable locale de type octet , entier ou entier long. <Début>, <Fin> et
<Incrément> sont des expressions dont le type est compatible avec celui de <Compteur> . Les
expressions <Début>, <Fin> et <Incrément> sont calculées avant l'exécution de la boucle.
La valeur <Début> est affectée à <Compteur> au début de la boucle. A chaque boucle la valeur
<Incrément> est ajoutée à <Compteur>, jusqu'à ce que <Compteur> atteigne ou dépasse <Fin>,
et la boucle s' arrête.
Par exemple :
FOR a%=0 TO 15
OUT(IO1)=1<<a%
NEXT a%
A chaque NEXT, le multitâche temps réel passe automatiquement à la tâche suivante.
L'instruction WHILE
L'instruction WHILE permet l'exécution répétée d'une ou plusieurs instructions selon la valeur
d'une expression.
La syntaxe de l'instruction WHILE est la suivante :
WHILE <Expression> DO
<Instructions>
END WHILE
Dans cette instruction, si la valeur de <Expression> est FAUX avant la structure WHILE, on
n'entre pas dans la boucle. Tant que <Expression> est VRAIE <Instructions> sont exécutées.
Par exemple :
VEL%(X)=100
STTA(X=2000)
WHILE
MOVE_S(X)
IF POS_S(X) >1000 THEN VEL%(X)=50 ' Vitesse lente à la moitié
END WHILE
A chaque END WHILE, le multitâche temps réel passe automatiquement à la tâche suivante.
L'instruction REPEAT
L'instruction REPEAT permet l'exécution répétée d'une ou plusieurs instructions selon la valeur
d'une expression.
La syntaxe de l'instruction REPEAT est la suivante :
REPEAT
<Instructions>
UNTIL <Expression>
R342
EX
Les boucles
DO
' Vitesse rapide à 100 %
' Start absolu en position 2000
' Tant que le moteur est en mouvement
' de la distance
' Fin de boucle
- 85 -
SERAD S.A.