Cicli for
L'istruzione for specifica una variabile contatore, una condizione di test e un'operazione per l'aggiornamento del contatore. La condizione viene verificata prima di ciascuna iterazione del ciclo. Se il test ha esito positivo, il codice presente nel ciclo verrà eseguito. In caso di esito negativo, il codice presente nel ciclo non verrà eseguito e il programma continuerà dalla prima riga di codice successiva al ciclo. La variabile contatore viene aggiornata dopo ciascuna iterazione, prima che inizi l'iterazione successiva.
Utilizzo di cicli for
Se la condizione del ciclo risulta sempre falsa, il ciclo non verrà mai eseguito. Se invece risulta sempre vera, verrà eseguito un ciclo infinito. Mentre il primo caso può a volte risultare utile, si consiglia di evitare la creazione di cicli infiniti. A tale scopo, durante la scrittura di condizioni di ciclo è necessario prestare la massima attenzione. Nell'esempio che segue, il ciclo for viene utilizzato per inizializzare gli elementi di una matrice con la somma degli elementi precedenti:
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]);
}
L'output del programma è il seguente:
0: 0
1: 1
2: 3
3: 6
4: 10
5: 15
6: 21
7: 28
8: 36
9: 45
Nell'esempio descritto di seguito sono presenti due cicli. Il blocco di codice del primo ciclo non viene mai eseguito, mentre il secondo ciclo è un ciclo infinito.
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;
}