CodeGym /Corsi /C# SELF /Gestione dei cicli: operatori break e continue

Gestione dei cicli: operatori break e continue

C# SELF
Livello 4 , Lezione 4
Disponibile

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
}
Uso di break in un ciclo while

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
}
Uso di continue in un ciclo for

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);
}
Saltare i numeri pari usando continue

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.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION