|
|
Costrutto switch
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 esegute le istruzioni associate
al case fino all'istruzione break che causa un'uscita forzata dal costrutto.
E' 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
|