Articolo originale: C Break and Continue Statements – Loop Control Statements in C Explained

Utilizzando il linguaggio di programmazione C, può capitarti di voler cambiare il comportamento di un loop, e le istruzioni continue e break ti aiutano a saltare iterazioni e uscire dal loop in determinate condizioni.

In questo tutorial, imparerai come alterare le strutture di controllo di un programma con le istruzioni break e continue.

Iniziamo.

Come usare break per uscire da un loop in C

In C, se vuoi uscire da un loop quando si verifica una condizione specifica, puoi usare l'istruzione break.

Come tutte le istruzioni in C, anche l'istruzione break deve terminare con un punto e virgola (;).

Prendiamo un esempio per capire come funziona.

Considera il seguente snippet di codice.

#include<stdio.h>
int main()
{
    int conteggio = 0;
    while(conteggio < 100)
    {
        printf("Il valore del conteggio è %d \n", conteggio);
        conteggio++;
    }
    return 0;
}

In questo esempio, il loop while ripete le istruzioni nel corpo del loop finché conteggio è minore di 100.

Il conteggio parte da 0 e aumenta di 1 a ogni iterazione.

Questo è il flusso normale della struttura di controllo.

Modifichiamolo un po'.

  • Prendiamo un intero num_prefe dall'utente. Ipotizziamo che num_prefe sia il numero preferito dell'utente nell'insieme {0, 1, 2, ..., 99}.
  • Durante ogni iterazione del loop, bisogna verificare se il valore attuale di conteggio sia uguale a num_prefe.
  • Vogliamo uscire dal loop quando conteggio è uguale a num_prefe.

Come possiamo fare?

Dai un'occhiata al seguente snippet di codice:

#include<stdio.h>
int main()
{
    // Prende come input il numero preferito dell'utente
    int num_prefe;
    printf("Inserisci il tuo numero preferito da 0 a 99: ");
    scanf("%d", &num_prefe);
    
    int conteggio = 0;
    while(conteggio < 100)
    {
        printf("\nIl valore del conteggio è %d.", conteggio);
        if (conteggio == num_prefe)
    		break;
        conteggio++;
    }
    return 0;
}
  • Durante ogni iterazione, usiamo if (conteggio == num_prefe) per controllare se conteggio è uguale a num_prefe.  Abbiamo aggiunto un'istruzione break; al corpo dell'istruzione if.
  • Finché conteggio ≠ num_prefe, l'istruzione break; non viene mai raggiunta.
  • Quando conteggio è uguale a num_prefe, l'istruzione break; viene attivata e usciamo dal loop.
  • Il controllo adesso raggiunge la prima istruzione fuori dal loop.

Qui sotto puoi vedere un output di esempio:

image-2

Nota che usciamo dal loop una volta che il conteggio raggiunge 3, che in questo caso è num_prefe.

Nella prossima sezione, vedremo un altro esempio per consolidare questo concetto.

Esempio di istruzione break in C

▶ Considera il seguente esempio:

  • A[10] è un array di 10 interi ed è inizializzato con degli zeri.
  • Vogliamo prendere gli elementi dell'array A da un utente e calcolare la somma degli elementi nell'array.
  • Tuttavia, vogliamo che ogni elemento di A non sia più grande di 20.
  • Una volta che l'utente inserisce un numero maggiore di 20, vogliamo terminare il loop. È qui che l'istruzione break; torna utile.

Guarda il seguente snippet di codice, che fa esattamente questo.

#include <stdio.h>

int main()
{
    int A[10] = {0};
    int somma = 0;
    
    for(int i = 0; i < 10; i++)
    {
        printf("Inserisci un numero: ");
        scanf("%d",&A[i]);
        if (A[i] > 20)
            break;
        
        somma += A[i];
    }
    printf("Somma: %d",somma);
    return 0;
}
  • somma è inizializzata a 0.
  • In ogni passaggio del loop, l'utente deve inserire un numero, che viene aggiunto al valore corrente di somma.
  • Se l'utente inserisce un numero maggiore di 20, usciamo dal loop.
image-3

Nota come il loop termina una volta che l'utente inserisce un numero maggiore di 20 – in questo caso 21. La somma degli altri due numeri (2 e 3) viene stampata sulla console.

Se hai mai utilizzato delle istruzioni switch in C, è probabile che tu abbia usato l'istruzione break; per uscire dalla scaletta dei case non appena viene riscontrata una corrispondenza con l'etichetta del case.

In ogni caso, lo scopo di questo tutorial è mostrare il modo di utilizzare le istruzioni break; e continue; per cambiare il comportamento di un loop.

Come usare continue per saltare delle iterazioni in C

In C, se vuoi saltare delle iterazioni quando si verifica una specifica condizione, puoi usare un'istruzione continue.

A differenza dell'istruzione break, l'istruzione continue non causa l'uscita dal loop. Invece, salta solo le iterazioni per cui la condizione è vera.

Una volta che l'istruzione continue; viene attivata, le istruzioni nel resto del loop vengono saltate e il loop passa all'iterazione successiva.

Esempio di istruzione continue in C

Usiamo l'esempio della sezione precedente, modificandolo un po'.

Diciamo che non vogliamo uscire dal loop quando l'utente inserisce un numero maggiore di 20. Piuttosto, vogliamo ignorare questi specifici input e calcolare la somma degli altri numeri nell'array A.

  • Supponiamo che l'utente inserisca 10 numeri, 1 dei quali maggiore di 20.
  • Il nostro codice dovrebbe calcolare e mostrare la somma dei restanti 9 numeri.

Come possiamo fare?

Possiamo usare l'istruzione continue; per saltare solo le iterazioni per cui l'input dell'utente è maggiore di 20. 🙂

Guarda il codice qui sotto:

#include <stdio.h>

int main()
{
    int A[10] = {0};
    int somma = 0;
    
    for(int i = 0; i < 10; i++)
    {
        printf("Inserisci un numero: ");
        scanf("%d",&A[i]);
        if (A[i] > 20)
            continue;
        
        somma += A[i];
    }
    printf("Somma: %d", somma);
    return 0;
}

Nell'output puoi vedere che il primo input è 21, che è maggiore di 20.

Tuttavia, il loop compie dieci iterazioni. E se sei pronto un altro rapido esercizio, puoi verificare che la somma degli altri numeri (2, 3, 5, 4, 7, 15, 14, 2 e 5) fa proprio 57. ✅

image-4

Conclusione

In questo tutorial, hai imparato come usare le istruzioni break; e continue; per controllare i loop in C.

Ricapitolando, abbiamo visto:

  • Come uscire da un loop in base a delle condizioni specifiche con l'istruzione break;.
  • Come saltare delle iterazioni in base a delle condizioni specifiche con l'istruzione continue;.

Spero che tu abbia trovato utile questo tutorial. Buona programmazione! 😄