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. Non appena viene individuata un'espressione corrispondente si esegue il blocco di istruzioni associato. Se non si trova nessuna corrispondenza verrà eseguito il blocco associato alla parola chiave default. La presenza di un caso di default è comunque opzionale.

È 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