Questa condizione, ci permette di prendere semplici decisioni basate
su valori immagazzinati. In fase di runtime, la Java Virtual Machine
testa un’espressione booleana, e a seconda che essa risulti vera o
falsa esegue un certo blocco di istruzioni, oppure no.
Un’espressione booleana è un’espressione che come risultato può
restituire solo valori di tipo boolean, cioè true o false. Essa di
solito si avvale di operatori di confronto, e, magari, di operatori
logici. La sintassi è la seguente:
if (espressione-booleana) istruzione;
per esempio:
if (numeroLati==3)
System.out.println("Questo è un triangolo");
Nell’esempio, l’istruzione di stampa, sarebbe eseguita se e solo se
la variabile numeroLati avesse valore 3. In quel caso l’espressione
booleana in parentesi varrebbe true, e quindi sarebbe eseguita
l’istruzione che segue l’espressione. Se invece l’espressione
risultasse false, sarebbe eseguita direttamente la prima eventuale
istruzione che segue l’istruzione di stampa. Possiamo anche
estendere la potenzialità del costrutto if, mediante la parola
chiave else:
if (espressione-booleana) istruzione1;
else istruzione2;
per esempio:
if (numeroLati==3)
System.out.println("Questo è un triangolo");
else
System.out.println("Questo non è un triangolo");
Se if potremmo tradurlo con "se", else potremmo tradurlo con
"altrimenti". In pratica nell’esempio, se l’espressione booleana è
vera, sarà stampata la stringa "Questo è un triangolo", se è falsa
sarà stampata la stringa "Questo non è un triangolo".
Possiamo anche utilizzare dei blocchi di codice, con questo tipo di
sintassi:
if (espressione-booleana) {
istruzione1;
...........;
istruzionek;
} else {
istruzionek+1;
.............;
istruzionen;
}
ed anche comporre più costrutti nel seguente modo
if (espressione-booleana) {
istruzione1;
...........;
istruzionek;
} else if (espressione-booleana){
istruzionek+1;
.............;
istruzionej;
} else if (espressione-booleana){
istruzionej+1;
.............;
istruzioneh;
} else {
istruzioneh+1;
.............;
istruzionen;
}
Possiamo anche annidare questi costrutti:
. . . . . .
if (x!=0) if (x!=0){
if (y<10) if (y<10)
z=5; z=5;
else }else
z=7; z=7;
. . . . . .
Questi due frammenti di codice, sono equivalenti. Il secondo però, è
effettivamente più chiaro, dal momento che si utilizza un blocco di
codice in più.
- Il costrutto while
Questo ciclo, ci permette di iterare uno statement (o un insieme di
statement compresi in un blocco di codice), tante volte fino a
quando una certa condizione booleana è verificata. La sintassi è la
seguente:
[inizializzazione;]
while (espr. booleana) {
corpo;
[iterazione;]
}
Come esempio proponiamo una piccola applicazione che stampa i primi
dieci numeri:
class WhileDemo {
public static void main(String args[]) {
int i=1;
while (i<=10) {
System.out.println(i); //la variabile i
// prima di essere stampata viene
//convertita in stringa
i++;
}
}
}
Seguiamo in sequenza le istruzioni che sarebbero eseguite in fase di
runtime. Viene in primo luogo dichiarata ed inizializzate a 1 una
variabile intera i. Poi inizia il ciclo, in cui è esaminato il
valore booleano dell’espressione in parentesi. Siccome i è uguale ad
1, i è anche minore di 10 e la condizione è verificata. Quindi,
verrà eseguito il blocco di codice relativo, nel quale, prima sarà
stampato il valore della variabile i (ovvero 1), e poi verrà
incrementata la variabile stessa di un’unità. Terminato il blocco di
codice, verrà nuovamente testato il valore dell’espressione booleana.
Durante questo secondo tentativo, la variabile i varrà 2. Quindi,
anche in questo caso, sarà eseguito di nuovo il blocco di codice.
Verrà allora stampato il valore della variabile i (ovvero 2), ed
incrementata nuovamente di una unità, la variabile stessa. Questo
ragionamento si ripete fino a quando la variabile i non assume il
valore 11. Quando ciò accadrà, il blocco di codice non verrà
eseguito, dal momento che, l’espressione booleana non sarà
verificata. Il programma quindi eseguirà le istruzioni successive al
blocco di codice e quindi terminerà.