Switch case in C++

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;
	float b;
	char operatore;
	float ris;

	cout <<"Qual e' il primo operando?"<<endl;
	cin >> a;
	cout <<"Qual e' il secondo operando?"<<endl;
	cin >> b;
	cout <<"Qual e' l'operatore(+, -, * o /)?"<<endl;
	cin >> operatore;

	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 <<"undefined"<<endl;
		break;
		default: cout <<"undefined"<<endl;
                system ("pause");
	}
	cout <<a<<operatore<<b<<"="<<ris<<endl;
	system ("pause");
}

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 <<"undefined"<<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 diro' 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";
        break;
    }
return 0;
}

Chiaramente questi sono solo alcuni semplici esempi di switch case in C++.

Alcuni link utili:

If else in C++

Casting in C++

Variabili in C++

Tutorial C++

Successione di Fibonacci in C++


Autore dell'articolo: cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *