1. Introduzione
Capita spesso che non ti serva scorrere tutte le iterazioni di un ciclo fino alla fine, ma vuoi uscirne prima — tipo appena hai trovato l’elemento che cercavi. In altri casi vuoi saltare una parte del lavoro e passare subito al prossimo step (per esempio, hai letto dei dati e vuoi saltare la loro elaborazione). Questo è proprio il controllo del flusso dentro il ciclo.
Gli operatori break e continue in C# servono proprio a questo. Vediamo insieme come funzionano e a cosa possono servire nella pratica.
2. Operatore break: "Stop, macchina!"
Teoria e sintassi
L’operatore break si usa per uscire immediatamente dal ciclo, ovunque tu sia nel suo corpo. Appena il programma arriva a break, il ciclo si ferma subito e l’esecuzione continua dalla prima riga di codice dopo il ciclo.
while (condizione)
{
if (qualche-condizione)
{
break;
}
// resto del codice del ciclo
}
Funziona uguale anche per for e do-while:
for (int i = 0; i < 10; i++)
{
if (qualche-condizione)
{
break;
}
// resto del codice del ciclo
}
Esempio 1: verifica se un numero è primo
Un numero è primo se è divisibile solo per 1 e per se stesso. Dobbiamo controllare se un numero è primo: cicliamo su tutti i possibili divisori da 2 a n-1. Se scopriamo che il nostro numero è divisibile per un divisore, non serve controllare oltre — il numero non è primo! Possiamo chiudere il ciclo.
Esempio:
int number = 111;
bool trovato = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
trovato = true;
Console.WriteLine("Trovato divisore " + i );
break; // Fermiamo il ciclo, non serve cercare altro!
}
}
if (!trovato)
{
Console.WriteLine("Divisore non trovato - il numero è primo.");
}
Esempio 2: validazione dell’input utente
Scriviamo una piccola app, tipo un questionario interattivo per raccogliere dati:
while (true)
{
Console.Write("Inserisci la tua età: ");
string input = Console.ReadLine();
int age;
if (int.TryParse(input, out age) && age > 0)
{
Console.WriteLine($"Ottimo! La tua età: {age}");
break; // Dati inseriti correttamente — è ora di uscire dal ciclo!
}
else
{
Console.WriteLine("Errore! Inserisci un’età positiva valida.");
}
}
Perché serve:
A volte serve ciclare all’infinito (o quasi), finché l’utente non inserisce dati validi. Appena succede quello che ci interessa — usiamo break e usciamo dal ciclo.
3. Operatore continue: "Avanti il prossimo!"
Teoria e sintassi
A differenza di break, l’operatore continue non termina tutto il ciclo, ma interrompe solo l’iterazione corrente: tutto quello che viene dopo continue nel corpo del ciclo NON viene eseguito — si passa subito alla prossima iterazione.
for (int i = 0; i < 10; i++)
{
if (condizione)
{
continue;
}
// questa parte viene eseguita solo se continue non è stato chiamato
}
Esempio 3: saltare i numeri pari
Immagina di dover stampare solo i numeri dispari in un intervallo. I pari vanno saltati.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // se il numero è pari — saltiamo tutto quello sotto!
}
Console.WriteLine("Numero dispari: " + i);
}
Cosa succede:
Quando i = 2, 4, 6... il ciclo trova continue e passa subito all’iterazione successiva, senza eseguire Console.WriteLine.
Visualizzazione step by step:
| i | i % 2 == 0 | Azione |
|---|---|---|
| 1 | false | stampa, niente continue |
| 2 | true | continue, niente stampa |
| 3 | false | stampa, niente continue |
| 4 | true | continue, niente stampa |
| ... | ... | ... |
Gli operatori break e continue si usano davvero spesso. Praticamente in ogni secondo ciclo. Ti piacerà lavorarci.
GO TO FULL VERSION