Boucles for
L'instruction for spécifie une variable compteur, une condition de test et une action qui met à jour le compteur. Immédiatement avant chaque itération de la boucle, la condition est testée. Si le test est positif, le code à l'intérieur de la boucle est exécuté. Dans le cas contraire, ce code n'est pas exécuté et le programme continue à partir de la première ligne de code qui suit immédiatement la boucle. Après l'exécution de la boucle, la variable compteur est mise à jour avant l'itération suivante.
Utilisation de boucles for
Si la condition n'est jamais remplie, la boucle ne s'exécute jamais. En revanche, si la condition est toujours vérifiée, il se crée une boucle sans fin. Si le premier cas peut s'avérer parfois utile, les boucles sans fin sont presque toujours problématiques. Soyez donc prudent lorsque vous écrivez vos conditions de boucle. Dans cet exemple, la boucle for sert à initialiser les éléments d'un tableau avec la somme des éléments précédents.
var sum = new Array(10); // Creates an array with 10 elements
sum[0] = 0; // Define the first element of the array.
var iCount;
// Counts from 0 through one less than the array length.
for(iCount = 0; iCount < sum.length; iCount++) {
// Skip the assignment if iCount is 0, which avoids
// the error of reading the -1 element of the array.
if(iCount!=0)
// Add the iCount to the previous array element,
// and assign to the current array element.
sum[iCount] = sum[iCount-1] + iCount;
// Print the current array element.
print(iCount + ": " + sum[iCount]);
}
Le résultat généré par ce programme est le suivant :
0: 0
1: 1
2: 3
3: 6
4: 10
5: 15
6: 21
7: 28
8: 36
9: 45
L'exemple suivant comporte deux boucles. Le bloc de code de la première boucle n'est jamais exécuté tandis que la seconde boucle est une boucle sans fin.
var iCount;
var sum = 0;
for(iCount = 0; iCount > 10; iCount++) {
// The code in this block is never executed, since iCount is
// initially less than 10, but the condition checks if iCount
// is greater than 10.
sum += iCount;
}
// This is an infinite loop, since iCount is always greater than 0.
for(iCount = 0; iCount >= 0; iCount++) {
sum += iCount;
}