Programmare in C# – I cicli
In alcune situazioni c’è la necessità di ricorrere a dei cicli o istruzioni di iterazione. In C#, questi possono essere costruiti grazie a quattro tipi di cicli: while, do-while, for e foreach. Le istruzioni di iterazione possono essere utilizzate per creare cicli per fare in modo che le istruzioni incorporate siano eseguite un determinato numero di volte, in base ai criteri di terminazione del ciclo.
Il ciclo while e do-while
L’istruzione while
esegue un’istruzione o un blocco di istruzioni mentre un’espressione booleana specificata restituisce true
. Poiché tale espressione viene valutata prima di ogni esecuzione del ciclo, un ciclo while
viene eseguito zero o più volte. Questo comportamento è diverso dal ciclo do, che viene eseguito una o più volte.
In qualsiasi punto all’interno del blocco while
è possibile uscire dal ciclo usando l’istruzione break.
È possibile passare direttamente alla valutazione dell’espressione while
tramite l’istruzione continue. Se l’espressione restituisce true
, l’esecuzione continua con la prima istruzione nel ciclo. In caso contrario, l’esecuzione continua con la prima istruzione dopo il ciclo.
Si può uscire da un ciclo while
anche usando l’istruzione goto, return o throw.
Esempio:
using System;
class Loop
{
public static void Main()
{
int NumIntero = 0;
while (NumIntero < 5)
{
Console.Write("{0} ", NumIntero);
NumIntero++;
}
Console.WriteLine();
}
}
Nel codice visto sopra sopra usiamo il costrutto while, che significa che il codice all’interno delle sue parentesi graffe continua ad essere eseguito fino a quando la condizione risulta vera (il ciclo si interromperà, quindi, quando la condizione diventa falsa). Nel nostro esempio, all’interno del while viene incrementata la variabile numerica NumIntero fino a quando essa vale 4; successivamente la condizione di controllo (NumIntero < 5) non è più verificata e il ciclo viene terminato.
Ora vediamo un esempio con il costrutto do-while:
using System;
class Loop
{
public static void Main()
{
int NumIntero= 0;
do {
Console.WriteLine(NumIntero);
NumIntero++;
}
while (NumIntero< 5);
}
}
Il costrutto do-while di C# è molto simile tranne che viene valutata la condizione while alla fine invece che all’inizio: di conseguenza l’istruzione all’interno del do verrà eseguita almeno una volta.
Il ciclo foreach
Vediamo il ciclo foreach in C# il quale consente di creare un’iterazione del contenuto di un array. In altre parole il ciclo si ripete per tanti quanti sono gli elementi del vettore.
Ecco un esempio:
using System;
class Loop
{
public static void Main()
{
int[] variabile = new int[]{1,2,3};
foreach (int b in variabile)
{
System.Console.WriteLine(b);
}
}
}
In questo caso vengono scorsi tutti gli elementi che fanno parte dell’array variabile, composto da 3 elementi di tipo intero. Vengono passati di volta in volta alla variabile “b” tutti i valori senza specificare una condizione, in quanto la “condizione implicita” che determina la conclusione del ciclo foreach è l’aver scorso tutti gli elementi.
Se l’istruzione foreach
viene applicata a null
, viene generata una NullReferenceException. Se la raccolta di origine dell’istruzione foreach
è vuota, il corpo del ciclo foreach
non viene eseguito e viene ignorato.
Il ciclo for
Il ciclo for e molto simile al while con la differenza che la variabile usata in questione viene incrementata ad ogni passaggio.
for
esegue un’istruzione o un blocco di istruzioni mentre un’espressione booleana specificata restituisce true
.
In un punto qualsiasi all’interno del blocco dell’istruzione for
è possibile uscire dal ciclo usando l’istruzione break o passare all’iterazione successiva nel ciclo con l’istruzione continue. Si può uscire da un ciclo for
anche usando l’istruzione goto, return o throw.
I cicli for di C# consentono dunque di ripetere una data operazione sulla base del valore di una data variabile di controllo.
Si usa in questo modo:
for (int a = 0; a < 5; a++)
{
System.Console.WriteLine(a);
}
Il fulcro del codice è rappresentato dalle istruzioni all’interno della parentesi:
(int a = 0; a < 5; a++)
La prima parte è un’espressione, viene assegnato alla prima variabile “a” un valore (in questo caso il valore 0), dopo il punto e virgola si mette la condizione (in questo caso a < 5) e nella parte finale si indica che la variabile deve essere incrementata ad ogni iterazione. Il codice contenuto nel corpo del ciclo viene eseguito quindi fino a quando la condizione risulterà vera.