FlooidArt Blog

another developers weblog

[C#] L’istruzione Switch

Posted by Andrea Turri On November - 16 - 2009

L’istruzione switch ci consente di modificare il flusso del programma in base ai valori (finiti) che può assumere una variabile.

La sintassi è questa:

switch (variabile)
{
        case valore1:
        // esegue le istruzioni in base al valore del primo case
        break;
        case valore2:
        // esegue le istruzioni in base al valore del secondo case
        break;
        .........
       case valore n:
       // esegue le istruzioni in base al valore del ennesimo case
       break;
       default:
       // esegue le istruzioni se non c’è corrispondenza con alcun case
       break;
}

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.

1 using System;
2 class SwitchNum
3      {
4          public static void Main()
5            {
6              // creo ed inizializzo una variabile di tipo byte
7              int num=0;
8              // visualizzo un messaggio per l'utente
9             Console.Write("Inserisci un numero tra 1 e 5: ");
10            // leggo il numero da tastiera. Notate il casting
11            num=Convert.ToInt32(Console.ReadLine());
12            // Istruzione switch
13            switch (num)
14             {
15                case 1:
16                         Console.WriteLine("\nHai digitato il numero 1");
17                break;
18                case 2:
19                         Console.WriteLine("\nHai digitato il numero 2");
20                break;
21                case 3:
22                         Console.WriteLine("\nHai digitato il numero 3");
23                break;
24                case 4:
25                         Console.WriteLine("\nHai digitato il numero 4");
26                break;
27                case 5:
28                         Console.WriteLine("\nHai digitato il numero 5");
29                break;
30               default:
31                     // messaggio di default
32                    Console.WriteLine("\nNon hai digitato un numero compreso
33                     tra 1 e 5");
34                break;
35               }
36           }
37     }

Nell’esempio non c’è molto da dire, però l’istruzione che compare alla riga numero 11 è degna di un 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 int perché dovrà essere memorizzato in una variabile (num) di questo tipo.

L’istruzione (metodo): Convert.ToInt32(..) 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.

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:

  • sbyte
  • byte
  • short
  • ushort
  • int
  • uint
  • long
  • ulong
  • char
  • stringhe

Leave a Reply

About Me

There is something about me..

Twitter

    Photos

    B_ingresso01A_ingressoA_ascensore02Ascensore01ok06ok05ok03okok01180912Palco_02