FOR ... NEXT
GW-Basic, utilisé par PC-Basic
Exécuter une série d'instructions un nombre de fois spécifié dans une boucle.
Syntaxe:
FOR variable=x TO y [STEP z]
.
.
.
NEXT [variable][,variable...]
Commentaires:
La variable est
utilisée comme compteur.
x, y et z sont des expressions numériques.
STEP z spécifie l'incrément du compteur pour chaque boucle.
La
première expression numérique (x) est la valeur initiale du compteur. La
deuxième expression numérique (y) est la valeur finale du compteur.
Les
lignes de programme suivant l'instruction FOR sont exécutées jusqu'à ce que
l'instruction NEXT soit rencontrée. Ensuite, le compteur est incrémenté de la
quantité spécifiée par STEP.
Si STEP n'est pas spécifié, l'incrément est
supposé être 1.
Une vérification est effectuée pour voir si la valeur du
compteur est maintenant supérieure à la valeur finale (y).
S'il n'est pas supérieur, GW-BASIC revient à l'instruction après l'instruction FOR et le processus est répété.
S'il est supérieur, l'exécution se poursuit avec l'instruction suivant l'instruction NEXT.
Il s'agit d'une
boucle FOR-NEXT.
Le corps de la boucle est sauté si la valeur initiale de
la boucle multipliée par le signe de l'étape dépasse la valeur finale multipliée
par le signe de l'étape.
Si STEP est négatif, la valeur finale du
compteur est définie pour être inférieure à la valeur initiale. Le compteur est
décrémenté à chaque fois dans la boucle, et la boucle est exécutée jusqu'à ce
que le compteur soit inférieur à la valeur finale.
Boucles imbriquées :
Les boucles
FOR-NEXT peuvent être imbriquées ; c'est-à-dire qu'une boucle FOR-NEXT peut être
placée dans le contexte d'une autre boucle FOR-NEXT. Lorsque les boucles sont
imbriquées, chaque boucle doit avoir un nom de variable unique comme compteur.
L'instruction NEXT pour la boucle intérieure doit apparaître avant celle de
la boucle extérieure.
Si des boucles imbriquées ont le même point final,
une seule instruction NEXT peut être utilisée pour toutes.
La ou les
variables de l'instruction NEXT peuvent être omises, auquel cas l'instruction
NEXT correspondra à l'instruction FOR la plus récente.
Si une
instruction NEXT est rencontrée avant l'instruction FOR correspondante, un
message d'erreur "NEXT without FOR" est émis et l'exécution est interrompue.
Exemples:
L'exemple suivant imprime les valeurs entières de la variable I de 1 à 10 par pas de z. Pour une exécution plus rapide, I est déclaré comme un entier par le signe %.
10 K=10 20 FOR I%=1 TO K STEP 2 30 PRINT I% 40 NEXT RUN 1 3 5 7 9
Dans l'exemple suivant, la boucle ne s'exécute pas car la valeur initiale de la boucle dépasse la valeur finale. Rien n'est imprimé par cet exemple.
10 R=0Dans l'exemple suivant, la boucle s'exécute 10 fois. La valeur finale de la variable de boucle est toujours définie avant la valeur initiale.
10 S=5 20 FOR S=1 TO S+5 30 PRINT S; 40 NEXT RUN 1 2 3 4 5 6 7 8 9 10