CodeGym /Corsi /C# SELF /Ciclo for: introduzione e sfumature d'uso

Ciclo for: introduzione e sfumature d'uso

C# SELF
Livello 4, Lezione 2
Disponibile

1. Introduzione

Immagina di avere un compito: stampare a schermo dieci volte «Ciao!». Certo, potresti scrivere dieci righe con Console.WriteLine("Ciao!"); — ma ormai conosci il ciclo while, quindi te la cavi facile.

Ma c'è anche un altro ciclo — for, che ripete l'azione che vuoi quante volte vuoi. E sa contare da solo!

Ecco un esempio classico:

for (int i = 0; i < 10; i++)
{
    Console.WriteLine("Ciao!");
}
Ciclo for classico — stampa "Ciao!" 10 volte

Cosa fa questo codice? Stampa a schermo la parola «Ciao!» esattamente 10 volte. Senza copiare-incollare e senza farti venire il tunnel carpale.

2. Sintassi del ciclo for

Il ciclo for ha tre parti principali, che si scrivono tra parentesi tonde dopo la parola chiave for:

for (inizializzazione; condizione; modifica)
{
    // Corpo del ciclo
}
Sintassi generale del ciclo for

Vediamo ogni elemento nel dettaglio:

  • Inizializzazione — di solito crei una variabile-contatore, da cui parte il conteggio delle ripetizioni (int i = 0).
  • Condizione — viene controllata prima di ogni iterazione. Se è vera — si esegue il corpo del ciclo. Se è falsa — il ciclo finisce. Per esempio, i < 10.
  • Modifica — l'operatore che scatta dopo ogni iterazione. Di solito aumenta o diminuisce il valore del contatore (i++).

Possiamo anche disegnare uno schema:

3. Confronto tra for e while

Forse ti sarà più chiaro se ti dico che for è solo un altro modo di scrivere il ciclo while.

Prima avevamo il ciclo while:

int i = 0;					// Inizializzazione della variabile per il ciclo
while(i < 10)				// Controllo della condizione per continuare il ciclo
{
    Console.WriteLine(i); 	// Azione utile (corpo del ciclo)
    i++;					// Incremento del contatore
}

Possiamo riscriverlo come ciclo for, semplicemente spostando tutte le parti che gestiscono la logica del ciclo:

for (int i = 0; i < 10; i++)  // Inizializzazione; Controllo condizione; Incremento contatore
{
    Console.WriteLine(i);		// Azione utile (corpo del ciclo)
}

I passi di entrambi i cicli:

  1. L'inizializzazione int i = 0; viene fatta una volta sola prima del ciclo.
  2. Poi viene controllata la condizione i <= 10
  3. Poi l'azione utile del ciclo Console.WriteLine(i);
  4. Poi l'incremento del contatore i++
  5. 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++)
{
    Console.WriteLine(i);
}

Output:

1
2
3
4
5

Nota: se avessi scritto i < 5, l'ultimo valore stampato sarebbe stato 4.

Conto alla rovescia

Vuoi sentirti un astronauta? Facciamo un conto alla rovescia!

for (int i = 5; i > 0; i--)
{
    Console.WriteLine(i);
}
Console.WriteLine("Si parte!");

Output:

5
4
3
2
1
Si parte!

Passo del ciclo diverso da 1

Puoi cambiare il contatore non solo di 1, ma di qualsiasi altro numero:

for (int i = 0; i <= 10; i += 2)
{
    Console.WriteLine(i);
}
// Stampa: 0 2 4 6 8 10

5. Varianti del ciclo for

Più variabili nel ciclo

A volte è comodo tenere d'occhio due variabili insieme. Per esempio, stampiamo i numeri da destra a sinistra e da sinistra a destra:

for (int left = 1, right = 10; left <= 10; left++, right--)
{
    Console.WriteLine($"{left}  {right}");
}

Output:

1  10
2  9
3  8
...
10  1

Ciclo for infinito

Se la situazione è davvero pesante (tipo il tuo progetto è un moto perpetuo in IT), puoi fare un ciclo for "eterno":

for (;;) // niente inizializzazione, niente condizione, niente modifica
{
    Console.WriteLine("Lavorare, lavorare e ancora lavorare!");
}
Ciclo for infinito

Attenzione: un ciclo così finisce solo se nel corpo c'è break, return o throw. Non usarlo senza motivo, altrimenti rischi di evocare il demone antico — "Il processo non risponde".

2
Compito
C# SELF, livello 4, lezione 2
Bloccato
Numeri pari da 2 a 20
Numeri pari da 2 a 20
2
Compito
C# SELF, livello 4, lezione 2
Bloccato
Conto alla rovescia con messaggio
Conto alla rovescia con messaggio
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION