Costrutto switch
{gspeech style=2}
Nonostante if-else-if consenta di realizzare dei test multipli è da considerare una struttura poco elegante e di difficile lettura.
L’istruzione ufficiale per eseguire un test multiplo è lo switch. In tal caso il valore di una variabile viene confrontato con una lista di costanti che possono essere di di tipo intero o char, quando si verifica l’uguaglianza si esegue il blocco di istruzioni corrispondenti. Sintassi:
switch(variabile)
{
case: costante1:istruzioni-1;break;
case: costante2:istruzioni-2; break;
..
case: costante-n:istruzioni-n; break;
default:istruzioni;
}
La parte default è opzionale, se è presente viene eseguita nel caso in cui non si verifichi alcuna corrispondenza.
Se non è presente la clausola di default e non ci sono corrispondenze, non viene eseguita alcuna azione.
Quando viene trovata una corrispondenza sono eseguite le istruzioni associate al case fino all’istruzione break che causa un’uscita forzata dal costrutto. È bene specificare quanto segue:
1) I test eseguiti nello switch possono verificare solo uguaglianze, a differenza di quelli eseguiti nell’if-else-if che possono verificare condizioni di qualsiasi tipo.
2) Non possono esserci due case con lo stesso valore di costante nello stesso switch. Possono invece avere lo stesso valore due case collocati in due switch diversi.
Un tipico esempio dell’uso di switch lo abbiamo nelle operazioni gestite tramite un bancomat.
char ch;
cout<<“1.prelievo\n”;
cout<<“2.lista movimenti\n”;
cout<<“3.saldo\n”;
cin>>ch;
switch(ch)
{
case ‘1’:prelievo();break;
case ‘2’:lista();break;
case ‘3’:saldo();break;
default:cout<<“nessuna opzione selezionata”;
}//end switch
{/gspeech}
Commento all'articolo