If e While

Il costrutto if

Questa condizione, ci permette di prendere semplicidecisioni 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 certoblocco di istruzioni, oppure no. Un’espressionebooleana è un’espressione che come risultatopuò restituire solo valori di tipo boolean,cioè true o false. Essa di solito siavvale di operatori di confronto, e, magari, di operatorilogici. 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, sarebbeeseguita se e solo se la variabile numeroLati avessevalore 3. In quel caso l’espressione booleana inparentesi varrebbe true, e quindi sarebbe eseguital’istruzione che segue l’espressione. Se invecel’espressione risultasse false, sarebbe eseguitadirettamente la prima eventuale istruzione che seguel’istruzione di stampa. Possiamo anche estendere lapotenzialità del costrutto if, mediante laparola 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". Inpratica nell’esempio, se l’espressione booleanaè vera, sarà stampata la stringa "Questoè un triangolo" , se è falsa saràstampata la stringa "Questo non è untriangolo".

Possiamo anche utilizzare dei blocchi di codice, conquesto tipo di sintassi:

 

if (espressione-booleana) {  istruzione1;  ...........;  istruzionek;    } else {  istruzionek+1;  .............;  istruzionen;    }

 

ed anche comporre più costrutti nel seguentemodo

 

 

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  }elsez=7; z=7;    . . . . . .

 

Questi due frammenti di codice, sono equivalenti. Ilsecondo però, è effettivamente piùchiaro, dal momento che si utilizza un blocco di codice inpiù.

 

- Il costrutto while

Questo ciclo, ci permette di iterare uno statement (o uninsieme di statement compresi in un blocco di codice), tantevolte fino a quando una certa condizione booleana èverificata. La sintassi è la seguente:

 

[inizializzazione;]    while (espr. booleana) {  corpo;  [iterazione;]    }

 

Come esempio proponiamo una piccola applicazione chestampa 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 eseguitein fase di runtime. Viene in primo luogo dichiarata edinizializzate a 1 una variabile intera i. Poiinizia il ciclo, in cui è esaminato il valore booleanodell’espressione in parentesi. Siccome iè uguale ad 1, i è anche minoredi 10 e la condizione è verificata. Quindi,verrà eseguito il blocco di codice relativo, nelquale, prima sarà stampato il valore dellavariabile i (ovvero 1), e poi verràincrementata la variabile stessa di un’unità.Terminato il blocco di codice, verrà nuovamentetestato il valore dell’espressione booleana. Durantequesto secondo tentativo, la variabile ivarrà 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 unaunità, la variabile stessa. Questo ragionamento siripete fino a quando la variabile i non assume ilvalore 11. Quando ciò accadrà, il bloccodi codice non verrà eseguito, dal momento che,l’espressione booleana non sarà verificata. Ilprogramma quindi eseguirà le istruzioni successive alblocco di codice e quindi terminerà.