Selezione in C

La selezione è una delle funzioni più importanti e versatili del linguaggio C. Consente di eseguire operazioni diverse a seconda del valore di una o più espressioni. In questo articolo, vedremo come usare la selezione nel linguaggio C, con esempi pratici e spiegazioni dettagliate.

La selezione in C con if-else

La forma più semplice di selezione è quella con if-else. La sintassi è la seguente:

if (condizione) {
// istruzioni da eseguire se la condizione è vera
} else {
// istruzioni da eseguire se la condizione è falsa
}

La condizione è un’espressione che può essere vera o falsa. Se la condizione è vera, si eseguono le istruzioni tra le parentesi graffe dopo if. Se la condizione è falsa, si eseguono le istruzioni tra le parentesi graffe dopo else.

Vediamo un esempio. Supponiamo di voler scrivere un programma che chiede all’utente di inserire un numero e stampa se il numero è pari o dispari.

#include <stdio.h>
int main()
{
    int numero;                      // variabile per memorizzare il numero inserito dall'utente
    printf("Inserisci un numero: "); // stampa un messaggio
    scanf("%d", &numero);            // legge il numero e lo assegna alla variabile
    if (numero % 2 == 0)
    {                                 // verifica se il numero è divisibile per 2
        printf("Il numero è pari\n"); // stampa il risultato
    }
    else
    {
        printf("Il numero è dispari\n"); // stampa il risultato
    }
    return 0; // termina il programma
}

Se eseguiamo il programma e inseriamo, ad esempio, il numero 5, otterremo il seguente output:

Inserisci un numero: 5
Il numero è dispari

Se invece inseriamo il numero 4, otterremo:

Inserisci un numero: 4
Il numero è pari

La selezione in C con switch-case

Un’altra forma di selezione è quella con switch-case. La sintassi è la seguente:

switch (espressione) {
case valore1:
// istruzioni da eseguire se l'espressione vale valore1
break;
case valore2:
// istruzioni da eseguire se l'espressione vale valore2
break;
...
default:
// istruzioni da eseguire se l'espressione non vale nessuno dei valori precedenti
break;
}

L’espressione è un’espressione che può assumere diversi valori. A seconda del valore dell’espressione, si eseguono le istruzioni corrispondenti al case. Il break serve a terminare il blocco di codice e a evitare che vengano eseguite anche le istruzioni successive. Il default serve a gestire i casi in cui l’espressione non assume nessuno dei valori previsti dai case.

Vediamo un esempio. Supponiamo di voler scrivere un programma che chiede all’utente di inserire un mese e stampa il numero di giorni del mese.

#include <stdio.h>

int main()
{
    int mese;                             // variabile per memorizzare il mese inserito dall'utente
    printf("Inserisci un mese (1-12): "); // stampa un messaggio
    scanf("%d", &mese);                   // legge il mese e lo assegna alla variabile

    switch (mese)
    {                                          // inizia la selezione con switch-case
    case 1:                                    // caso in cui il mese vale 1 (gennaio)
    case 3:                                    // caso in cui il mese vale 3 (marzo)
    case 5:                                    // caso in cui il mese vale 5 (maggio)
    case 7:                                    // caso in cui il mese vale 7 (luglio)
    case 8:                                    // caso in cui il mese vale 8 (agosto)
    case 10:                                   // caso in cui il mese vale 10 (ottobre)
    case 12:                                   // caso in cui il mese vale 12 (dicembre)
        printf("Il mese ha 31 giorni\\n");      // stampa il risultato
        break;                                 // termina il caso
    case 4:                                    // caso in cui il mese vale 4 (aprile)
    case 6:                                    // caso in cui il mese vale 6 (giugno)
    case 9:                                    // caso in cui il mese vale 9 (settembre)
    case 11:                                   // caso in cui il mese vale 11 (novembre)
        printf("Il mese ha 30 giorni\\n");      // stampa il risultato
        break;                                 // termina il caso
    case 2:                                    // caso in cui il mese vale 2 (febbraio)
        printf("Il mese ha 28 o 29 giorni\\n"); // stampa il risultato
        break;                                 // termina il caso
    default:                                   // caso in cui il mese non vale nessuno dei valori precedenti
        printf("Mese non valido\\n");           // stampa un messaggio di errore
        break;                                 // termina la selezione con switch-case
    }
    return 0; // termina il programma
}

Se eseguiamo il programma e inseriamo, ad esempio, il numero 2, otterremo il seguente output:

Inserisci un mese (1-12): 2
Il mese ha 28 o 29 giorni

Se invece inseriamo un numero non compreso tra 1 e 12, otterremo:

Inserisci un mese (1-12): 13
Mese non valido

Conclusione

In questo articolo, abbiamo visto come usare la selezione nel linguaggio C, con due forme principali: if-else e switch-case. Abbiamo visto come scrivere la sintassi corretta e come usare le espressioni condizionali. Abbiamo anche visto alcuni esempi pratici di applicazione della selezione a problemi semplici. Spero che questo articolo ti sia stato utile e ti abbia fatto capire meglio come usare la selezione nel linguaggio C.

Grazie per aver letto!

LINK UTILI

Lezioni sul linguaggio C

La mia repository GitHub sul linguaggio C

Pubblicato da Carlo Contardi

Carlo Contardi, docente di informatica e sviluppatore Full Stack, condivide la sua passione per la programmazione e l’informatica attraverso il suo blog Space Coding. Offre preziosi consigli e soluzioni pratiche a chi vuole imparare a programmare o migliorare le proprie abilità. 🚀👨‍💻

Translate »