In quest’articolo parleremo dello switch case in C++.
Il costrutto switch consente di realizzare una selezione a più vie, cioè una selezione multipla.
La struttura sintattica è questa:
switch (espressione) {
case <valore1>:
istruzioni1;
break;
case <valore2>:
istruzioni2;
break;
….
default:
istruzioni;
}
In fase di esecuzione si valuta espressione e viene confrontata con valore1. Se i due valori sono uguali allora si esegue il codice specificato dopo i due punti corrispondenti. La parola chiave break causa l’uscita immediata dallo switch, quindi il controllo viene trasferito alla fine del blocco, cioè alla prima istruzione che segue lo switch.
Se espressione non è uguale a valore1 allora si confronta espressione con valore2. Di conseguenza, se sono uguali si esegue il codice specificato dopo i due punti e dopo si uscirà dallo switch con l’istruzione break.
E così via.
Nel caso in cui nessuna delle condizioni è verificata si esegue ciò che è indicato nella parola riservata default.
Esempio di switch case in C++
Facciamo un semplice esempio: realizziamo una calcolatrice usando lo switch case in C++.
Quindi verrà utilizzata una variabile di tipo char operatore, la quale verrà confrontata di volta in volta con il simbolo immesso (+, -, * o /). Se nessuno dei valori è uguale alla variabile operatore allora si avrà in output il messaggio “undefined”.
Controlliamo inoltre se il secondo operando è uguale a zero, perchè ricordiamo non è possibile dividere un numero per zero.
#include <iostream>
using namespace std;
int main () {
float a, b, ris;
char operatore;
cout << "Qual e' il primo operando?" << endl;
cin >> a;
cout << "Qual e' l'operatore(+, -, * o /)?" << endl;
cin >> operatore;
cout << "Qual e' il secondo operando?" << endl;
cin >> b;
switch (operatore) {
case '+': ris = a + b;
break;
case '-': ris = a - b;
break;
case '*': ris = a * b;
break;
case '/': if (b != 0) {
ris = a / b;
}
else {
cout <<"Non si puo' dividere per zero!";
}
break;
default: cout <<"Il carattere non e' riconosciuto";
}
cout << a << operatore << b << " = " << ris;
return 0;
}
Potevamo anche creare una variabile che quando si verifica una condizione undefined esca. Ad esempio inizializziamo errore=0 e poi aggiungiamo:
case '/': if (b != 0) {
ris = a / b;
}
else {
cout << "Non si puo' dividere per zero!" << endl;
errore = 1;
}
E anche qui:
default: cout << "undefined" << endl;
errore = 1;
E infine:
if (errore == 0)
cout << a << operatore << b << "=" << ris << endl;
Facciamo un altro esempio di switch case in C++.
Esempio 2
Realizziamo un semplicissimo programma che preso in input un numero intero compreso tra 1 e 12, restituisca il mese per esteso.
Ad esempio se inserisco 1, il programma mi restituirà Gennaio.
Allego il listato completo che potete provare.
#include <iostream>
using namespace std;
int main() {
int numero;
cout << "Inserisci un numero che va da 1 a 12. Ti dirò il mese corrispondente." << endl;
cin >> numero;
switch (numero) {
case 1:
cout << "Gennaio";
break;
case 2:
cout << "Febbraio";
break;
case 3:
cout << "Marzo";
break;
case 4:
cout << "Aprile";
break;
case 5:
cout << "Maggio";
break;
case 6:
cout << "Giugno";
break;
case 7:
cout << "Luglio";
break;
case 8:
cout << "Agosto";
break;
case 9:
cout << "Settembre";
break;
case 10:
cout << "Ottobre";
break;
case 11:
cout << "Novembre";
break;
case 12:
cout << "Dicembre";
break;
default:
cout << "Il numero inserito non corrisponde a nessun mese";
}
return 0;
}
Chiaramente questi sono solo alcuni semplici esempi di switch case in C++.
Alcuni link utili:
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++