Select Case in Visual Basic
In Visual Basic l'istruzione Select Case mi permette di eseguire un blocco di codice piuttosto che un altro, in base al valore di una variabile di controllo.
Select Case variabile
Case x
...
Case y
...
Case z
...
Case Else
...
End Select
Le clausole Case identificano i blocchi di codice.
Dove x,y,z sono dei valori della variabile mentre i puntini ... sono il blocco di codice associato.
Come funziona?
Ad esempio, se la variabile è uguale a x, il programma esegue il blocco di codice dentro Case x. Se è uguale a y esegue il blocco Case Y. E via dicendo.
Ogni blocco è eseguito in modo esclusivo. Quindi, se un blocco viene selezionato ed eseguito, gli altri che seguono non sono più considerati.
La selezione termina con la parola End Select.
La clausola Case Else. Alla fine della lista si trova l'istruzione Case Else che indica il blocco finale, quello da eseguire se nessun'altra selezione si verifica. E' comunque facoltativa.
Un esempio
Questa Select usa la variabile voto come controllo
Select Case voto
Case 5
Console.Write("insufficiente")
Case 6
Console.Write("sufficiente")
Case 7
Console.Write("distinto")
Case 8
Console.Write("ottimo")
End Select
Questa Select Case intercetta cinque eventi:
- Se la variabile voto è 5 stampa "insufficiente" sulla console.
- Se la variabile voto è 6 stampa "sufficiente" sulla console.
- Se la variabile voto è 7 stampa "distinto" sulla console.
- Se la variabile voto è 8 stampa "ottimo" sulla console.
- Se la variabile non contiene un valore diverso da 5,6,7,8 non stampa nulla.
Esempio 2 ( valori multipli in una stessa case )
Posso indicare anche valori multipli in una case.
Li elenco uno dopo l'altro separandoli con una virgola
Select Case voto
Case 0,1,2,3,4,5
Console.Write("insufficiente")
Case 6
Console.Write("sufficiente")
Case 7
Console.Write("distinto")
Case 8,9, 10
Console.Write("ottimo")
End Select
In questo caso se la variabile voto è 0,1,2,3,4 o 5, il programma stampa "insufficiente" sulla console.
Se la variabile voto è 8,9,10 il programma stampa "ottimo" sulla console.
Le altre Case sono uguali all'esempio precedente.
Esempio 3 ( raggruppamenti )
Se i valori di controllo sono numerici e contigui tra loro posso indicare il gruppo anziché l'elenco completo.
Per indicare il gruppo scrivo il primo e l'ultimo valore separandoli con un trattino. Ad esempio 0-5 e 8-10.
Select Case voto
Case 0-5
Console.Write("insufficiente")
Case 6
Console.Write("sufficiente")
Case 7
Console.Write("distinto")
Case 8-10
Console.Write("ottimo")
End Select
Esempio 4 ( valori non numerici )
I valori di controllo possono essere di qualsiasi tipo anche non numerico.
In questa case uso delle stringhe come valori di controllo.
Select Case voto
Case "Milano"
Console.Write("nord")
Case "Roma"
Console.Write("centro")
Case "Napoli"
Console.Write("sud")
End Select
Esempio 5 ( Case Else )
Se aggiungo la clausla Case Else alla fine, posso imporre una risposta di default.
La risposta di default viene eseguita quando nessuna selezione precedente è soddisfatta.
Select Case city
Case "Milano"
Console.Write("nord")
Case "Roma"
Console.Write("centro")
Case "Napoli"
Console.Write("sud")
Case Else
Console.Write("città non registrata")
End Select
Ad esempio, la variabile city="Firenze" il programma stampa il messaggio "città non registrata".
E così via.