Le istruzioni condizionali sono uno strumento importantissimo
per il programmatore, perché consentono di decidere le operazioni
da eseguire in funzione del verificarsi o meno di certe condizioni.
In Java esistono tre tipi di istruzioni condizionali:
1. if;
2. operatore ternario;
3. switch.
Listruzione if utilizza unespressione booleana
per decidere se debba essere eseguita una certa istruzione (o un
blocco di più istruzioni).
Il caso più semplice di istruzione if ha la seguente sintassi:
if (espressione) {
istruzioni
}
In questa forma, le istruzioni tra parentesi graffe vengono eseguite
se il valore dellespressione è true, altrimenti il
programma esegue listruzione successiva allif, ignorando
le istruzioni elencate nel blocco.
Se si vogliono eseguire istruzioni differenti in base al valore
dellespressione, si può utilizzare listruzione if
con lopzione else:
if (espressione) {
istruzioni1
} else {
istruzioni2
}
Se lespressione vale true viene eseguito il primo
blocco di istruzioni, altrimenti vengono eseguite le istruzioni
del blocco else.
E possibile annidare più istruzioni if else nella forma:
if (espressione1) {
istruzioni1
} else if (espressione2) {
istruzioni2
} else if (espressione3) {
istruzioni3
}
Non appena il programma incontra il primo if controlla sequenzialmente
ogni espressione, finché non ne trova una che vale true,
dopodiché esegue il blocco di istruzioni relativo a tale espressione
ed esce dallistruzione if, passando alla successiva.
Ad es. se espressione2 vale true, viene eseguito il
blocco istruzioni2 e non viene più valutata né espressione3,
né eventuali espressioni successive ad essa, ma il programma passa
il controllo allistruzione successiva allif.
Loperatore ternario è già stato visto nella lezione
21,
e può essere utilizzato in certi casi al posto dellistruzione
if else per rendere il codice più compatto e leggibile.
Listruzione switch viene utilizzata per eseguire
istruzioni in base al valore di unespressione di tipo intero,
ed ha una sintassi del tipo:
switch(espressione) {
case valore1 : istruzioni1;
break;
case valore2 : istruzioni2;
break;
...
}
Innanzitutto listruzione switch valuta lespressione
ed esegue le istruzioni elencate in corrispondenza dellistruzione
case che fornisce il valore corrispondente a quello assunto
dallespressione.
Al posto dello switch si può anche usare unistruzione
if del tipo:
if (espressione == valore1)
{
istruzioni1;
} else if (espressione == valore2) {
istruzioni2;
} else ...
}
Optare per luna o laltra soluzione non è solo una questione
di gusti.
A parte la maggiore leggibilità di unistruzione switch
rispetto ad unistruzione costituita da if annidate,
altri fattori influenzano le scelte del programmatore.
Infatti le decisioni associate agli if possono essere usate
su range di valori o condizioni, mentre unistruzione switch
può prendere decisioni solo in base ad un solo valore intero, ed
ogni case deve fornire un valore unico.
Possiamo notare anche la presenza dellistruzione break
dopo ogni case: essa serve per terminare listruzione
switch e far proseguire il flusso del programma allistruzione
seguente allo switch.
In mancanza del break vengono eseguite anche le istruzioni
relative ai case successivi a quello che soddisfa la condizione
(in tal caso si usa il termine fall through).
Tecnicamente il break non è necessario dopo lultimo
case, perché il flusso passerà comunque allistruzione
successiva allo switch, ma è buona norma utilizzarlo anche
in questo caso per evitare che ad una successiva aggiunta di case,
ci si dimentichi di aggiungere anche il break.
Esamineremo meglio listruzione break in una delle prossime
puntate del corso.
Infine è possibile specificare delle istruzioni di default
da eseguire nel caso che nessuno dei case elencati corrispondano
ad valore assunto dallespressione; questa opzione può essere
specificata aggiungendo listruzione default dopo lultimo
case.
In questo caso listruzione switch assume la forma:
switch(espressione) {
case valore1 : istruzioni1;
break;
case valore2 : istruzioni2;
break;
...
default : istruzioni;
}
Nella prossima puntata vedremo un esempio di applicazione delle
istruzioni condizionali.
Torna all'indice Generale del corso di Corso di Java di Software Planet