Corso Java Base (6): Strutture di controllo

Strutture di controllo

Le istruzioni contenute nei file sorgenti vengono generalmente eseguite dall’alto verso il basso, nell’ordine in cui appaiono.
Le strutture per il controllo del flusso, tuttavia, gestiscono l’esecuzione utilizzando una condizione decisionale consentendo al programma di eseguire particolari blocchi di codice.

Nelle prossime lezioni si affronteranno le strutture per il controllo (if-then, if-then-else, switch), le strutture di loop (for, while, do-while), e le strutture di ramificazione (break, continue e return) supportate dal linguaggio di programmazione Java.

Istruzione if-then

L’istruzione if-then è la più utilizzata per controllare il flusso di esecuzione di un programma.
Questa permette di eseguire un determinato blocco di codice solamente se si verifica una determinata condizione.

Esempio:

int a = 3;
int b = 5;
if(a == b){
   System.out.println(“a == b”);
}
if(a != b){
   System.out.println(“a != b”);
}
if(a > b){
   System.out.println(“a > b”);
}
if(a < b){
   System.out.println(“a < b”);
}
if(a <= b){
   System.out.println(“a <= b”);
}

Come è possibile osservare dall’esempio, il comando if è seguito da un’istruzione contenuta all’interno di parentesi tonde; il verificarsi o meno di questa istruzione, o condizione, determina l’esecuzione, o meno, del blocco di codice contenuto tra le parentesi graffe.

Riferendoci alla prima condizione if dell’esempio:

if(a == b){
   System.out.println(“a == b”);
}

Questa va letta nel seguente modo:

– Viene verificata la condizione relativa al comando if (nel nostro esempio a==b)
– Questa condizione deve restituire un booleano, ovvero deve essere o vera o falsa
– Se la condizione è vera, allora viene eseguito il codice contenuto nel blocco delimitato dalle parentesi graffe (nel nostro esempio System.out.println(“a==b”))
– Se la condizione è falsa allora questo codice non viene eseguito e si procede con l’istruzione successiva.

Costruiamo un secondo esempio, supponiamo di dichiarare due variabili di tipo int a e b, effettuiamo un controllo su di esse e vogliamo che se a è maggiore di b,
venga eseguita la sottrazione a-b, mentre se a è minore o uguale di b, venga eseguita la sottrazione b-a. Questo può essere realizzato con il seguente codice:

int a = 500;
int b = 100;
int risultato;
if( a>b ){
   risultato = a-b;
}
if( a<=b ){
  risultato = b-a;
}

In questo caso, essendo a maggiore di b, viene eseguita l’istruzione relativa al primo if in quanto risulta vera: risultato = a-b;

Istruzione if-then-else

 

ifthenelse

L’istruzione if-then-else fornisce un percorso alternativo di esecuzione quando la condizione di un’istruzione if restituisce false. Più in particolare, si associa la clausola else ad un if; il blocco di codice relativo all’else viene eseguito qualora la condizione relativa all’if risulti falsa.
Spieghiamo meglio riprendendo l’esempio del paragrafo precedente, è possibile ottenere lo stesso risultato utilizzando il seguente codice:

int a = 500;
int b = 100;
int risultato;
if( a>b ){
   risultato = a-b;
}else{
   risultato = b-a;
}

Ovvero si è associata una clausola else, anch’essa con associato un blocco di codice che viene eseguito qualora la condizione relativa all’if non sia soddisfatta, ovvero sia falsa. In altre parole, la clausola else viene utilizzata quando si desidera eseguire un blocco di codice, nel momento in cui la condizione dell’if risulti falsa. E’ facile dedurre che una clausola else deve sempre essere associata ad un if.

Istruzione if-then-else if

Un’altra clausola che può essere associata ad un if è la clausola else-if, la quale permette di verificare una condizione alternativa a quella dell’if al quale è associata.
Come nel caso della clausola else, quindi, anche l’else-if deve sempre essere associata ad un if.
Riprendendo il solito esempio, è possibile ottenere sempre lo stesso risultato scrivendo il seguente codice:

int a = 500;
int b = 100;
int risultato;
if( a>b ){
  risultato = a-b;
} else if( a<=b){
  risultato = b-a;
}

come nei casi precedenti viene eseguito il blocco di codice:
risultato = a-b;

E’ importante sottolineare che le tre clausole if, else-if ed else possono essere utilizzate insieme per verificare delle condizioni.
Utilizziamo il nostro esempio modificandolo come segue:

int a = 500;
int b = 100;
int risultato;
if( a>b ){
   risultato = a-b;
}else if( a<b){
   risultato = b-a;
}else{
   risultato = a+b;
}

Vediamo cosa è cambiato: La prima clausola if rimane invariata, ovvero controlla la condizione se a è maggiore di b.
La successiva clausola else-if controlla se a è minore b. L’ultima clausola else, ovviamente, non controlla nessuna condizione, ma ha un blocco di codice associato che viene eseguito nel caso in cui non siano verificate le precedenti condizioni dell’if e dell’else-if; nel nostro esempio, quindi, solo nel caso in cui a e b siano uguali.

Nella lezione successiva continueremo l’analisi delle strutture di controllo con lo switch e le strutture di loop.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.