Switch case in C è un costrutto a selezione multipla, e si basa dunque sul confronto tra il risultato di un’espressione e un insieme di valori costanti.

Abbiamo già spiegato il costrutto nella lezione precedente, adesso facciamo degli esempi pratici per capire meglio il funzionamento.

Esempio di Switch Case in C

Ecco un esempio di switch case in C che chiede l’inserimento di un numero compreso tra zero e quattro. Se si inserisce un numero compreso tra 0 e 4 si ha un messaggio con la conferma del numero inserito. Altrimenti il programma restituisce il messaggio non compreso.

Utilizzeremo l’istruzione break che provoca dunque l’uscita immediata dallo switch, come avevamo accennato nel precedente tutorial.

Ecco dunque l’esempio completo:

#include <stdio.h>

int main() { 
    int a; 
    printf("Inserisci un numero compreso tra zero e quattro:\n"); 
    scanf("%d", &a); 
    
    switch (a) { 	
        case 0: 
            printf("Il numero è zero\n"); 
            break;
        case 1: 
            printf("Il numero è uno\n"); 
            break; 
        case 2: 
            printf("Il numero è due\n"); 
            break; 
        case 3: 
            printf("Il numero è tre\n"); 
            break; 
        case 4: 
            printf("Il numero è quattro\n"); 
            break; 
        default: 
            printf("Numero non compreso\n"); 
            break; 
    } 
    return 0; 
}

In questo esempio, l’utente inserisce un numero che viene confrontato con una serie di valori tramite lo statement switch. A seconda del numero inserito, verrà visualizzato un messaggio appropriato.

Secondo esempio di Switch Case in C

Controlliamo che un carattere inserito da tastiera è una vocale.

#include <stdio.h>
#include <ctype.h>

int main() {
    char carattere;
    printf("Inserisci un carattere: ");
    scanf(" %c", &carattere); // Nota: lo spazio prima di %c nel formato di scanf ignora eventuali spazi bianchi precedenti

    // Converte il carattere inserito in minuscolo per semplificare il confronto
    carattere = tolower(carattere);

    switch (carattere) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            printf("Il carattere inserito è una vocale.\n");
            break;
        default:
            printf("Il carattere inserito è una consonante.\n");
            break;
    }

    return 0;
}

In questo secondo esempio, l’utente inserisce un carattere e lo statement switch determina se è una vocale (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) o una consonante. Il carattere viene convertito in minuscolo utilizzando la funzione tolower() della libreria ctype.h per semplificare il confronto. Infine, viene visualizzato un messaggio appropriato a seconda del risultato.

Conclusioni

In questa lezione abbiamo realizzato due esempi.

Nel primo esempio, abbiamo utilizzato lo statement switch in C per gestire le decisioni multiple basate su un numero inserito dall’utente. Attraverso una serie di case, abbiamo confrontato il numero inserito con una serie di valori costanti (da 0 a 4) e abbiamo eseguito un blocco di istruzioni corrispondente a seconda del caso. Inoltre, abbiamo incluso un caso default per gestire eventuali valori non previsti. L’utilizzo del break ha garantito l’uscita immediata dallo switch dopo l’esecuzione del blocco corretto. Questo esempio illustra chiaramente come lo statement switch possa semplificare la gestione di diverse alternative in un programma, migliorandone la leggibilità e la manutenibilità.

Nel secondo esempio, abbiamo utilizzato lo statement switch per determinare se un carattere inserito dall’utente è una vocale o una consonante. Dopo aver convertito il carattere in minuscolo per uniformare il confronto, abbiamo confrontato il carattere con una serie di case corrispondenti alle vocali (‘a’, ‘e’, ‘i’, ‘o’, ‘u’). Se il carattere inserito corrisponde a una delle vocali, viene visualizzato un messaggio indicante che è una vocale. Altrimenti, viene eseguito il blocco di istruzioni sotto il caso default, che indica che il carattere inserito è una consonante. Questo esempio dimostra l’efficacia dello statement switch nel gestire diverse alternative in base ai valori di una variabile, fornendo una soluzione chiara e concisa per determinare la natura di un carattere.

In entrambi gli esempi, l’utilizzo dello statement switch ha contribuito a migliorare la struttura e la chiarezza del codice, fornendo un modo efficiente per gestire decisioni multiple in base ai valori delle variabili.

Alcuni link utili

Corso linguaggio C

Indice argomenti linguaggio C

Strutture di selezione

Esempi di selezione in C

Media per riga e per colonna

Somma elementi diagonale principale di una matrice

Sommare elementi cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C