FOR / NEXT
DESCRIPTION.
L'instruction FOR débute une boucle d'instructions pour tous qui sera exécutée un nombre de fois défini.
L'instruction NEXT indique la fin de la boucle d'instructions pour tous.
SYNTAXE.
FOR variable = debut TO fin STEP pas : ... : NEXT variable
FOR variable = debut TO fin : ... : NEXT variable
FOR variable = debut TO fin
...
...
...
NEXT variable
FOR variable = debut TO fin STEP pas
...
...
...
NEXT variable
REMARQUES.
variable doit être un identifiant d'une variable de type numérique quelconque. variable ne doit pas être déclarée avant son utilisation pour une boucle pour tous, mais elle peut être déjà existante, dans ce cas, la valeur de variable sera modifiée et restera modifiée à la sortie de la boucle pour tous.
Bien que cela ne soit pas conseillé, l'identifiant de la variable témoin (variable) peut être omis à la suite de l'instruction NEXT., sauf si une ou des instructions composées EXIT FOR sont présentent dans le bloc d'instructions.
debut, fin et pas doivent être une valeur de type numérique :
- debut est la première valeur que prendra variable ;
- fin est la dernière valeur que prendra variable ;
- pas est l'intervalle entre deux valeurs de variable.
Rappel : une boucle d'instructions :
- pour tous, est exécutée au moins une fois et pour toutes les valeurs données ;
- tant que, ne sera exécutée que si et tant qu'une expression est vraie, elle peut ne pas être exécutée ;
- faire tant que, est exécutée au moins une fois et jusqu'à ce qu'une expression soit vraie.
Si une boucle d'instructions pour tous ne doit exécuter qu'une seule instruction pour toutes les valeurs, on peut condenser la boucle sur une seule ligne : FOR variable = debut TO fin STEP pas : ... : NEXT ou FOR variable = debut TO fin : ... : NEXT.
debut et fin sont obligatoires, mais pas est optionnel. Si pas est omis, sa valeur par défaut est 1.
Si fin est supérieur à debut, pas doit être négatif.
FOR kvaleur = 3 TO 1 STEP -1 : PRINT STR$( kvaleur ) ; " " ; : NEXT kvaleur
retourne : 3, 2 1
Si la valeur de variable + pas est supérieure à fin, le programme sortira de la boucle pour tous sans exécuter une dernière fois le bloc d'instruction, et variable sera affectée avec la valeur variable + pas.
FOR kvaleur = 0 TO 11 STEP 4 : PRINT STR$( kvaleur ) ; " " ; : NEXT kvaleur
PRINT kvaleur
retourne : 0 4 8 12
kvaleur n'a pas pris la valeur 11, mais est bien égale à 12 à la sortie de la boucle pour tous.
Les instructions à l'intérieur d'une boucle pour tous, FOR / NEXT seront exécutées au moins une fois, même si la valeur de variable est supérieur à debut, dès l'entrée dans le bloc d'instructions.
kvaleur = 7
FOR kvaleur = 1 TO 3 : PRINT STR$( kvaleur ) ; " " ; : NEXT kvaleur
PRINT kvaleur
retourne : 1 2 3 4
kvaleur a été affectée avec la valeur 1 à l'entrée de la boucle pour tous, et sa valeur précédente, 7, n'a pas été prise en compte.
Les lignes d'instructions composant le bloc de la boucle pour tous multiligne doivent être indentées, c'est-à-dire mise en retrait.
Il ne faut jamais utiliser d'instruction GOTO, saut inconditionnel sans retour, pour sortir prématurément d'une boucle pour tous, on utilisera l'instruction composée EXIT FOR qui est prévue à cet effet.
Si besoin, plusieurs boucles pour tous, FOR / NEXT peuvent être imbriquées. Dans ce cas, on pourra préciser quelle boucle d'instructions on souhaite quitter avec l'instruction composée EXIT FOR en indiquant l'identifiant de la variable à sa suite. Si il n'y a aucune référence à une variable, l'instruction EXIT FOR fera quitter la boucle d'instruction dans la quelle elle est présente.
FOR klongeur = 4 TO 8
PRINT "Longueur : " ; klongeur ; " et " ;
FOR klargeur = 2 TO 6
PRINT "Largeur : " ; klargeur
FOR khauteur = 3 TO 9
kvolume = klongeur * klargeur * khauteur
IF kvolume > 50 THEN EXIT FOR klargeur
PRINT kvolume ;
NEXT khauteur
NEXT klargeur
NEXT klongeur
PRINT klongeur ; klargeur ; khauteur
END
Étant donné qu'une seule pile est utilisée, vous ne pouvez pas utiliser une boucle d'instructions pour tous FOR / NEXT pour définir les éléments du tableau de données LOCAL ou PRIVATE dans une procédure et/ou fonction personnalisée.
Voir l'instruction composée REPEAT / UNTIL pour créer une boucle faire tant que.
Voir l'instruction composée WHILE / ENDWHILE pour créer une boucle tant que.
EXEMPLE.
INPUT "Quelle table de multiplication " ; ksaisie
FOR kfois = 1 TO 9
PRINT STR$( ksaisie ) ; " x " ; STR$( kfois ) ; " = " ; STR$( ksaisie * kfois )
NEXT kfois
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.