Switch Case

17 marzo 2006

Il costrutto switch-case serve a eseguire codice diverso a fronte di valori diversi assunti da una espressione. Ad esempio risulta utile quando dobbiamo impostare il comportamento del programma in seguito alla scelta di un’opzione da parte di un utente.

La sintassi del costrutto switch-case è la seguente:

switch(<espressione intera>)
{
	case (<valore costante 1>):
		<sequenza di istruzioni 1>
		break;
	
	case (<valore costante 2>)
		<sequenza di istruzioni 2>
		break;

	...

	case (<valore costante N>)
		<sequenza di istruzioni N>
		break;
	
	default:	
		<sequenza di istruzioni N+1>
}

Esaminiamo il comportamento del costrutto:

  1. valuta il valore dell’espressione intera passata come parametro all’istruzione switch;
  2. rimanda lo svolgimento del programma al blocco in cui il parametro dell’istruzione case ha lo stesso valore di quello dell’istruzione switch;
  3. se il blocco individuato termina con un’istruzione break allora il programma esce dallo switch. Altrimenti, vengono eseguiti anche i blocchi successivi finchè un’istruzione break non viene individuata oppure non si raggiunge l’ultimo blocco dello switch.
  4. se nessun blocco corrisponde ad un valore uguale a quello dell’istruzione switch allora viene eseguito il blocco default, se presente.

Vediamo un paio di esempi per comprendere meglio quanto detto:

bool freddo, molto_freddo, caldo, molto_caldo;

switch (temperatura)
{
	case(10):
		freddo = true;
		molto_freddo = false;
		caldo = false;
		molto_caldo = false
		break;

	case(2):
		freddo = true;
		molto_freddo = true;
		caldo = false;
		molto_caldo = false;
		break;

	case(28):
		freddo = false;
		molto_freddo = false;
		caldo = true;
		molto_caldo = false;
		break;

	case(40):
		freddo = false,
		molto_freddo = false;
		caldo = true;
		molto_caldo = true;
		break;

	default:
		freddo = false;
		molto_freddo = false;
		caldo = false;
		molto_caldo = false;
}

Nell’esempio viene valutato il valore costante temperatura passato come parametro a switch. A secondo del valore che tale costante assume viene poi eseguito il relativo blocco di istruzioni. Se, invece, nessuno dei blocchi ha un valore uguale a quello passato a switch, verrà eseguito il blocco default.

Si noti, che nel caso seguente:

	...
	
	case(28):
		freddo = false;
		molto_freddo = false;
		caldo = true;
		molto_caldo = false;
	
	case(40):
		freddo = false,
		molto_freddo = false;
		caldo = true;
		molto_caldo = true;
		break;
	...

se il valore della temperatura fosse di 28 gradi, oltre ad eseguire (giustamente) il blocco corrispondente, poiché manca l’istruzione break alla fine di tale blocco, il programma continuerebbe ad eseguire anche le istruzioni del blocco successivo (quello con la temperatura uguale a 40 gradi)! Quindi il valore finale delle variabili diventerebbe:

freddo = false;
molto_freddo = false;
caldo = true;
molto_caldo = true;

Tutte le lezioni

1 ... 27 28 29 ... 53

Se vuoi aggiornamenti su Switch Case inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Switch Case

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy