Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 12 di 112
  • livello avanzato
Indice lezioni

If-else e switch-case, combinare più condizioni

Come più condizioni a cascata passando da un un if-else multiplo all'uso dello switch-case.
Come più condizioni a cascata passando da un un if-else multiplo all'uso dello switch-case.
Link copiato negli appunti

Ripartendo da quanto detto nella lezione precedente, è possibile combinare più condizioni a cascata determinando l'esecuzione del blocco di codice più vicino alla prima condizione vera oppure il blocco associato all'ultimo else nel caso in cui tutte le condizioni siano false.

Il seguente è un esempio di uso di questa forma di if:

if (x%2 == 0) {
	messaggio = x + " è pari";

} else if (x%2 == 1) {
 	messaggio = x + " è dispari";

} else {
	messaggio = x + " non è un numero";
}

L'if..else if...else non è altro che una forma compatta di if...else annidati, come possiamo vedere dal seguente codice equivalente all'esempio precedente:

if (x%2 == 0) {

	messaggio = x + " è pari";
	} else {

		if (x%2 == 1) {
			messaggio = x + " è dispari";
 	} else {

 		messaggio = x + " non è un numero";
 	}
}

Switch...case

Quando siamo di fronte a diverse alternative, anche un if a cascata può risultare difficile da leggere. In questi casi possiamo ricorrere all'istruzione switch, il cui schema sintattico è:

switch (espressione) {

	case espressione1:
		istruzioni1;
	break;

	case espressione2:
		istruzioni2;
	break;

	// ...
	default:

		istruzioni4;
	break;
}

L'espressione di riferimento dello switch viene confrontata in sequenza con le espressioni dei vari case default

È importante però inserire l'istruzione break al termine del blocco di istruzioni per evitare la prosecuzione con il caso successivo.

Il seguente codice mostra l'esempio di if a cascata visto in precedenza implementato con uno switch:

switch (x%2) {
	case 0:
		messaggio = x + " è pari";
		break;

	case 1:
		messaggio = x + " è dispari";
		break;
	default:
		messaggio = x + " non è un numero";
		break;
}

Talvolta possiamo decidere di non mettere l'istruzione break in corrispondenza di uno o più case perchè vogliamo eseguire uno stesso blocco di codice per un gruppo di valori. Il seguente è un esempio del genere:

switch (voto) {

	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		giudizio = "insufficiente";
		break;
	case 6:
		giudizio = "sufficiente";
		break;

	case 7:
		giudizio = "discreto";
		break;
	case 8:
		giudizio = "buono";
		break;

	case 9:
		giudizio = "ottimo";
		break;
	case 10:
		giudizio = "eccellente";
		break;

	default:
		messaggio = "non classificato";
		break;
}

In questo caso i voti dall'uno al cinque eseguiranno tutti la stessa istruzione.

Ti consigliamo anche