Stefan Ghinea.it | English versionEnglish version | e-mail

  • Cerca nel sito
   myway con Google:
   
   Web Ghinea.it
   
  • Socialnetwork
Web Agency Prato:
Creazione Siti, Indicizzazione, Ottimizzazione
 
  facebook  twitter  youtube 
 
  • ContattamiSkype
Web Agency Prato:
richiesta informazioni
 
My status
Contattami

Lezione C# – L´istruzione switch nel dettaglio

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.

Codice sorgente SwitchNum.cs


using System;
class SwitchNum
{
public static void Main()
{
// creo ed inizializzo una variabile di tipo byte
byte num=0;
// visualizzo un messaggio per l’utente
Console.Write(“Inserisci un numero tra 1-5: “);
// leggo il numero da tastiera. Notate il casting
num=Convert.ToByte(Console.ReadLine());
// Istruzione switch
switch (num)
{
case 1:
Console.WriteLine(“\nHai digitato il numero 1″);
break;
case 2:
Console.WriteLine(“\nHai digitato il numero 2″);
break;
case 3:
Console.WriteLine(“\nHai digitato il numero 3″);
break;
case 4:
Console.WriteLine(“\nHai digitato il numero 4″);
break;
case 5:
Console.WriteLine(“\nHai digitato il numero 5″);
break;
default:
// messaggio di default
Console.WriteLine(“\nNon hai digitato un numero compreso
nell’intervallo”);
break;
}
}
}

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ì:


switch (variabile)
{
case valore1:
case valore2:
case valore3:
// blocco di codice 123
break;
………
default:
// esegue le istruzioni se non c’è corrispondenza con alcun case
break;
}

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.

Codice sorgente SwitchNum.cs


using System;
class SwitchNum
{
public static void Main()
{
// creo ed inizializzo una variabile di tipo byte
byte num=0;
// visualizzo un messaggio per l’utente
Console.Write(“Inserisci un numero tra 1-5: “);
// leggo il numero da tastiera. Notate il casting
num=Convert.ToByte(Console.ReadLine());
// Istruzione switch
switch (num)
{
case 1:
case 3:
case 5:
Console.WriteLine(“\nIl numero è dispari”);
break;
case 2:
case 4:
Console.WriteLine(“\nIl numero è pari”);
break;
default:
// messaggio di default
Console.WriteLine(“\nNon hai digitato un numero compreso
nell’intervallo”);
break;
}
}
}

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:
sbyte, byte, short, ushort, int, uint, long, ulong, char, stringhe. Si conclude qui la trattazione di questa utile istruzione. Nella prossima lezione parleremo delle istruzioni iterative.

   02/10/2010 20:30:27 pm
  • No Related Post
1 Comment »

Un commento a “Lezione C# – L´istruzione switch nel dettaglio”

  1. admin says:

    L’istruzione switch è un’istruzione di controllo che gestisce più selezioni ed enumerazioni trasferendo il controllo a una delle istruzioni case presenti all’interno del corpo

    Lascia un commento

Spam protection by WP Captcha-Free

  • I bannerGhinea.it
minibanner1
minibanner2
minibanner3
minibanner4
  • Sidebar
  • Categories:
  • Abbiamo lanciato a gennaio 2012 un nuovo sito WordPress: tmptecnorestauri.it
    Abbiamo lanciato alla fine di novembre 2011 un nuovo sito WordPress: infortunisticabologna.net
    Un sito amatoriale: www.sorrisodiluna.too.it
    Giochi online: www.mostfun.com
    Sempre classico: www.gianlucabianchi.it
    I siti web della settimana
    WordPress inarrestabile
    La PEC… vola
    Google nemico della memoria?
    Anonymous: nemici pubblici numero uno







    Stefan Ghinea - Consulenze informatiche e soluzioni software
    Via Marchini, 26 - 59100 Prato (PO) - Tel.: 340 2123560; Fax: 0574 027820  E-mail Home page
    © 2010 by GhineaWebSolutions.it