1. Introduzione
Immaginate di avere il compito di stampare a schermo per dieci volte «Ciao!». Certo, potreste scrivere dieci righe con System.out.println("Ciao!"); — ma ormai conoscete il ciclo while, quindi ve la caverete senza problemi.
Ma c’è anche un altro ciclo — for, che ripete l’azione necessaria per il numero di volte richiesto. E sa contare da solo!
Ecco un esempio tipico:
for (int i = 0; i < 10; i++)
{
System.out.println("Ciao!");
}
Che cosa fa questo codice? Stampa a schermo la parola «Ciao!» esattamente 10 volte. Senza copia‑incolla e senza dolore al polso.
2. Sintassi del ciclo for
Il ciclo for è composto da tre parti principali, che si scrivono tra parentesi tonde dopo la parola chiave for:
for (inizializzazione; condizione; aggiornamento)
{
// Corpo del ciclo
}
for
Vediamo in dettaglio ciascun elemento:
- Inizializzazione — di solito la creazione della variabile contatore con cui si tiene il conteggio delle ripetizioni (int i = 0).
- Condizione — un controllo prima di ogni iterazione. Se è vera — si esegue il corpo del ciclo. Se è falsa — il ciclo termina. Ad esempio, i < 10.
- Aggiornamento — l’operatore che scatta dopo ogni iterazione. Di solito incrementa o decrementa il valore del contatore (i++).
Si può raffigurare con uno schema:
3. Confronto tra for e while
Forse vi sarà più chiaro se dico che for è semplicemente un altro modo di scrivere un ciclo while.
Ecco un ciclo while:
int i = 0; // Inizializzazione della variabile per il ciclo
while(i<10) // Verifica della condizione di prosecuzione del ciclo
{
System.out.println(i); // Azione utile (corpo del ciclo)
i++; // Incremento del contatore
}
Possiamo riscriverlo come un ciclo for, semplicemente spostando tutte le azioni che governano la logica del ciclo:
for (int i = 1; i <= 10; i++) // Inizializzazione; Verifica della condizione; Incremento del contatore
{
System.out.println(i); // Azione utile (corpo del ciclo)
}
Passi di esecuzione di entrambi i cicli:
- L’inizializzazione int i = 0; viene eseguita 1 volta prima del ciclo.
- Poi viene eseguito il controllo della condizione i <= 10
- Poi l’azione utile del ciclo System.out.println(i);
- Poi l’incremento del contatore i++
- Poi si torna al passo 2.
4. Esempi d’uso del ciclo for
L’esempio più semplice
Stampiamo i numeri da 1 a 5:
for (int i = 1; i <= 5; i++)
{
System.out.println(i);
}
Output:
1
2
3
4
5
Nota: se aveste scritto i < 5, l’ultimo valore stampato sarebbe 4.
Conto alla rovescia
Volete sentirvi astronauti? Facciamo un conto alla rovescia!
for (int i = 5; i > 0; i--)
{
System.out.println(i);
}
System.out.println("Si parte!");
Output:
5
4
3
2
1
Si parte!
Passo del ciclo diverso da 1
Si può modificare il contatore non solo di 1, ma anche di qualsiasi altro numero:
for (int i = 0; i <= 10; i += 2)
{
System.out.println(i);
}
// Stamperà: 0 2 4 6 8 10
5. Varianti del ciclo for
Più variabili nel ciclo
A volte è comodo tenere traccia di due variabili contemporaneamente. Per esempio, stampiamo i numeri da destra a sinistra e da sinistra a destra:
for (int left = 1, right = 10; left <= 10; left++, right--)
{
System.out.println(left + " " + right);
}
Output:
1 10
2 9
3 8
...
10 1
Ciclo for infinito
Se il caso è davvero disperato (per esempio, il vostro progetto — moto perpetuo nell’IT), si può fare un ciclo for «eterno»:
for (;;) // né inizializzazione, né condizione, né aggiornamento
{
System.out.println("Lavorare, lavorare e ancora lavorare!");
}
Attenzione: un ciclo del genere terminerà solo se nel corpo c’è break, return o throw. Non usatelo senza motivo, altrimenti rischiate di svegliare un antico demone — «Il processo non risponde».
GO TO FULL VERSION