L’istruzione switch ci consente di modificare il flusso del programma in base ai valori (finiti) che può assumere una variabile. La sintassi è questa:
La scelta del costrutto case da eseguire, non è dettato da una condizione come nell’istruzione if ma da un discriminante rappresentato dal valore che assume la variabile nel costrutto switch . Qualora venisse rilevata una corrispondenza con il valore esplicito di un cotrutto case, verrà eseguito il codice relativo al suo interno. Per rendere il concetto più semplice, facciamo ricorso al solito programmino che sicuramente ci farà capire molto più della teoria. Scriviamo un programma che legge un numero intero da tastiera compreso, ad esempio, tra 1 e 5 e che ci stampi un messaggio.
Nel listato non c’è molto da dire, però l’istruzione che compare alla riga numero 11 è degna di piccolo commento. L’istruzione (metodo) Console.ReadLine() ci consente di leggere da tastiera del testo fino a quando non viene incontrato il carattere di fine linea (carriage return o line feed). Ebbene, alla richiesta di inserimento del numero, digiteremo soltanto un carattere (un numero tra 1 e 5) e successivamente, tramite il tasto invio, confermeremo tale richiesta. Il carattere digitato però dovrà essere convertito (casting) in un tipo byte perché dovrà essere memorizzato in una variabile (num) di questo tipo. L’istruzione (metodo) Convert.ToByte(..) esegue questa esplicita conversione affinchè la successiva istruzione switch possa manipolare il dato inserito. Notate che l’istruzione switch è composta da cinque costrutti case più uno di default qualora si sia digitato un numero (carattere) non compreso nell’intervallo richesto. Non vi resta che copiare il listato ed eseguirlo tramite la normale prassi. Esecuzione di uno stesso blocco di codice per più di un case. A volte si ha l’esigenza di far eseguire lo stesso blocco di codice per più clausole case. L’istruzione switch cambia così:
Il blocco di codice 123, verrà eseguito solo se il valore della variabile assumerà uno dei tre valori corrispondenti ai primi tre case. Modifichiamo il codice del programma precedente in modo tale che ci notifichi se il numero da noi inserito è pari o dispari.
Sono stati raggruppati, nell’istruzione switch, quei casi (case) in cui il numero inserito è dispari e quei casi in cui è pari. Compilate il listato e lanciatelo. Un’ultima nota riguarda i tipi di dato che questa istruzione può gestire. Nella seguente tabella, sono riassunti i tipi di dato che si possono gestire:
|