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
Somma elementi diagonale principale di una matrice
Sommare elementi cornice esterna
Ricerca elementi in una matrice