Ciclo For
Un ciclo permette di eseguire un blocco di codice tante volte quanto desideriamo. Esistono diversi tipi di cicli. In C#, se vogliamo eseguire un blocco di codice un numero specifico di volte, utilizziamo il for loop.
Il modello (sintassi) di un ciclo for è il seguente:
for(initiation; condition; operation) {
// code to execute
}
Consideriamo un esempio in cui utilizziamo questa sintassi:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Nota
i++è equivalente ai = i + 1. Incrementa il valore della variabile di1. Allo stesso modo,i--decrementa il valore di1.
int i = 0rappresenta la parte di inizializzazione. L'inizializzazione avviene quando il ciclo inizia. All'inizio del ciclo, viene creata una nuova variabile temporanea chiamataie inizializzata con il valore0.i < 10è la condizione. La condizione viene verificata a ogni iterazione (ripetizione) del ciclo. Il ciclo continua a eseguire il blocco di codice racchiuso finché la condizione è vera.i++è l'operazione da eseguire dopo ogni iterazione. L'operazione è solitamente un incremento o un decremento. Poiché il valore diiviene incrementato dopo ogni iterazione, la condizionei < 10diventa falsa dopo 10 iterazioni e il ciclo si interrompe.
È importante comprendere che tutti e tre i componenti del ciclo for — initialization, condition e operation — sono opzionali. È possibile ometterne uno qualsiasi, ma ciò potrebbe modificare il comportamento del ciclo.
Anche se non è consigliato, è possibile dichiarare la variabile del ciclo all'esterno del ciclo stesso e lasciare vuota la parte di initialization. In questo modo il ciclo funzionerà comunque, ma è necessario prestare attenzione perché potrebbe portare a risultati imprevisti se non gestito correttamente.
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Possiamo anche rimuovere la parte di operation e inserirla alla fine del blocco di codice del ciclo. Il ciclo si comporterà come prima, poiché la variabile i viene comunque incrementata dopo ogni iterazione.
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Nota che nel codice sopra abbiamo comunque inserito un punto e virgola (;) nella sintassi del ciclo dove era previsto int i = 0. Questo punto e virgola deve essere sempre presente, sia che si crei o meno una variabile di ciclo.
È anche possibile rimuovere la condizione del ciclo, ma ciò fa sì che il ciclo venga eseguito all'infinito se non viene terminato manualmente (approfondiremo questo aspetto nei capitoli successivi).
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Nota
Abbiamo comunque incluso entrambi i punti e virgola nella sintassi del ciclo
for(;;), questi sono essenziali altrimenti il compilatore mostrerà errori.
Poiché il valore di i cambia a ogni iterazione, possiamo sfruttarlo a nostro vantaggio. Per comprenderlo, osserviamo un semplice programma che visualizza il valore di i a ogni iterazione:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Nota che termina a 9 perché inizia con la cifra 0. Il numero totale di iterazioni è stato dieci. Possiamo modificare l'inizializzazione, la condizione e l'operazione per visualizzare i dieci numeri pari da 2 a 20.
Nota
I numeri pari sono quelli divisibili per
2. Ad esempio 2, 4, 6, 8, 10, ecc. I numeri pari includono anche il numero0, ma in questi esempi considereremo solo i numeri pari maggiori di0.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Nota
i += 2è una forma abbreviata per scriverei = i + 2. Questa sintassi è valida anche per altri operatori, ad esempioi -= 2,i *= 2,i /= 2,i %= 2ecc.
Il ciclo inizia da 0 e incrementa il valore di i di 2 ad ogni iterazione. Abbiamo modificato la condizione in i <= 20 affinché il ciclo si fermi a 20.
La logica sopra era solo per comprendere il funzionamento del ciclo for. Possiamo utilizzare una logica molto più semplice per stampare i primi dieci numeri pari:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
In questo caso la condizione è molto più semplice. Ad esempio, se vogliamo i primi 27 numeri pari, dovremmo sapere qual è il 27° numero pari per poter formare la condizione con il metodo precedente, tuttavia in questo caso basta semplicemente modificare la condizione in i <= 27:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 1.59
Ciclo For
Scorri per mostrare il menu
Un ciclo permette di eseguire un blocco di codice tante volte quanto desideriamo. Esistono diversi tipi di cicli. In C#, se vogliamo eseguire un blocco di codice un numero specifico di volte, utilizziamo il for loop.
Il modello (sintassi) di un ciclo for è il seguente:
for(initiation; condition; operation) {
// code to execute
}
Consideriamo un esempio in cui utilizziamo questa sintassi:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Nota
i++è equivalente ai = i + 1. Incrementa il valore della variabile di1. Allo stesso modo,i--decrementa il valore di1.
int i = 0rappresenta la parte di inizializzazione. L'inizializzazione avviene quando il ciclo inizia. All'inizio del ciclo, viene creata una nuova variabile temporanea chiamataie inizializzata con il valore0.i < 10è la condizione. La condizione viene verificata a ogni iterazione (ripetizione) del ciclo. Il ciclo continua a eseguire il blocco di codice racchiuso finché la condizione è vera.i++è l'operazione da eseguire dopo ogni iterazione. L'operazione è solitamente un incremento o un decremento. Poiché il valore diiviene incrementato dopo ogni iterazione, la condizionei < 10diventa falsa dopo 10 iterazioni e il ciclo si interrompe.
È importante comprendere che tutti e tre i componenti del ciclo for — initialization, condition e operation — sono opzionali. È possibile ometterne uno qualsiasi, ma ciò potrebbe modificare il comportamento del ciclo.
Anche se non è consigliato, è possibile dichiarare la variabile del ciclo all'esterno del ciclo stesso e lasciare vuota la parte di initialization. In questo modo il ciclo funzionerà comunque, ma è necessario prestare attenzione perché potrebbe portare a risultati imprevisti se non gestito correttamente.
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Possiamo anche rimuovere la parte di operation e inserirla alla fine del blocco di codice del ciclo. Il ciclo si comporterà come prima, poiché la variabile i viene comunque incrementata dopo ogni iterazione.
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Nota che nel codice sopra abbiamo comunque inserito un punto e virgola (;) nella sintassi del ciclo dove era previsto int i = 0. Questo punto e virgola deve essere sempre presente, sia che si crei o meno una variabile di ciclo.
È anche possibile rimuovere la condizione del ciclo, ma ciò fa sì che il ciclo venga eseguito all'infinito se non viene terminato manualmente (approfondiremo questo aspetto nei capitoli successivi).
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Nota
Abbiamo comunque incluso entrambi i punti e virgola nella sintassi del ciclo
for(;;), questi sono essenziali altrimenti il compilatore mostrerà errori.
Poiché il valore di i cambia a ogni iterazione, possiamo sfruttarlo a nostro vantaggio. Per comprenderlo, osserviamo un semplice programma che visualizza il valore di i a ogni iterazione:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Nota che termina a 9 perché inizia con la cifra 0. Il numero totale di iterazioni è stato dieci. Possiamo modificare l'inizializzazione, la condizione e l'operazione per visualizzare i dieci numeri pari da 2 a 20.
Nota
I numeri pari sono quelli divisibili per
2. Ad esempio 2, 4, 6, 8, 10, ecc. I numeri pari includono anche il numero0, ma in questi esempi considereremo solo i numeri pari maggiori di0.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Nota
i += 2è una forma abbreviata per scriverei = i + 2. Questa sintassi è valida anche per altri operatori, ad esempioi -= 2,i *= 2,i /= 2,i %= 2ecc.
Il ciclo inizia da 0 e incrementa il valore di i di 2 ad ogni iterazione. Abbiamo modificato la condizione in i <= 20 affinché il ciclo si fermi a 20.
La logica sopra era solo per comprendere il funzionamento del ciclo for. Possiamo utilizzare una logica molto più semplice per stampare i primi dieci numeri pari:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
In questo caso la condizione è molto più semplice. Ad esempio, se vogliamo i primi 27 numeri pari, dovremmo sapere qual è il 27° numero pari per poter formare la condizione con il metodo precedente, tuttavia in questo caso basta semplicemente modificare la condizione in i <= 27:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Grazie per i tuoi commenti!