Costrutto condizionale If e Else If in Java

Contenuto0.1 Le condizioni booleane1 Costrutto if in Java1.1 Esempio di un costrutto if1.2 Istruzione IF annidata2 Istruzione if-else in Java2.1 Esempio di istruzione if-else3 Istruzione If-Else-If in Java3.1 Esempio di […]

Avatar di gbfactory
gbfactory 25 Gennaio 2021

I costrutti condizionali sono delle strutture con una o più condizioni che devono essere valutate e testate dal programma, insieme a delle istruzionni che verranno eseguire nel caso la condizione è vera e altre da eseguire nel caso la condizione è falsa.

Ecco come potremmo rappresentare un costrutto condizionale in semplice italiano prima di passare al codice in Java:

SE condizione_1
  -> codice da eseguire SE la condizione 1 è VERA
SE INVECE condizione_2
  -> codice da eseguire SE la condizione 2 è VERA
ALTRIMENTI
  -> codice da eseguire SE nessuna delle precedenti condizioni è 
     vera

In Java esistono due costrutti condizionali, if-else e switch. In questa sezione della guida ci concentreremo sul primo, if-else, e procederemo con lo switch nella prossima sezione.

Le condizioni booleane

All'interno di un costrutto if, tutte le condizioni specificate devono essere booleane, quindi di tipo boolean, risultati in true o false. Alcuni esempi:

int a = 10;
int b = 30;

if (a == b) // Espressione booleana
if (a) // Espressione NON booleana

Costrutto if in Java

Un costrutto if consiste di un'espressione booleana seguita da uno o più istruzioni.

if (espressione_booleana) {
  // Codice da eseguire se l'espressione booleana è vera.
}

Se l'espresssione booleana è vera, le istruzioni all'interno delle parentesi graffe verranno eseguite. In caso contrario, si continuerà con l'esecuzione normale del codice dopo la chiusura della graffa.

Diagramma di flusso if
Diagramma di flusso del costrutto if

Esempio di un costrutto if

public class EsempioIf {
  public static void main(String args[]) {
    int numero = 80;

    if (numero > 0) {
      System.out.println("Questo numero è maggiore di 0");
    }
  }
}

Istruzione IF annidata

In Java è consentito inserire dei costrutti if all'interno di altri costrutti if, questa procedura prende il nome di costrutti if annidati. Si possono annidare anchei costrutti else-if. Ecco un semplice esempio:

if (condizione_1) {
  // Codice da eseguire se la condizione 1 è vera
  
  if (condizione_2) {
    // Codice da eseguire se la condizione 2 è vera
  }
}

Istruzione if-else in Java

Un costrutto if può essere seguito da una dichiarazione else opzionale, che viene eseguita nel caso l'espressione booleana risulti falsa.

if (condizione) {
  // Codice da eseguire se la condizione è vera
} else {
  // Codice da eseguire se la condizione NON è vera
}

Le istruzioni contenute all'interno del corpo dell'istruzione if (delimitato dalle parentesi graffe) vengono eseguire solamente se la condizione specificata è vera. Se la condizione è falsa vengono eseguite le istruzioni contenute nel corpo dell'else.

Diagramma di flusso if else
Digramma di flusso del costrutto if-else

Infine è opportuno precisare che solamente una istruzione else può essere presente.

Esempio di istruzione if-else

public class EsempioIfElse {
  public static void main(String args[]) {
    int numero = 80;

    if (numero > 0) {
      System.out.println("Questo numero è maggiore di 0");
    } else {
      System.out.println("Questo numero è minnore di 0");
    }
  }
}

Istruzione If-Else-If in Java

L'istruzione if-else-if viene utilizzata quando è necessario controllare più condizioni. In questo costrutto non abbiamo solo un "if" e un "else", ma possiamo avere più "else if". Ecco come appare:

if (condizione_1) {
  // Codice da eseguire se la condizione 1 è vera
} else if (condizione_2) {
  // Codice da eseguire se la condizione 2 è vera
} else if (condizione_3) {
  // Codice da eseguire se la condizione 3 è vera
} else {
  // Codice da eseguire se nessuna delle condizioni è vera
}

Le istruzioni if sono valutate in successione, non appena una condizione viene soddisfatta, il codice contenuto in quel blocco viene eseguito mentre il resto viene ignorato.

Se nessuna delle condizioni risulti vera, viene eseguito il codice all'interno del blocco else finale, se presente.

Esempio di if-else-if

public class EsempioIfElseIf {
  public static void main(String args[]) {
    boolean condizione_1 = true;
    boolean condizione_2 = true;
    boolean condizione_3 = false;

    if (condizione_1) {
      // Questo codice viene eseguito perché la c_1 è vera
    } else if (condizione_2) {
      // Questo blocco non viene eseguito anche se c_2 è vera
    } else if (condizione_3) {
      // Questo blocco non viene eseguito perché c_3 è falsa
    }
  }
}

Blocchi di istruzioni

Come abbiamo visto, quando una condizione è vera, il programma esegue l'istruzione o il blocco di istruzioni che segue. Solitamente queste istruzioni vengono delimitate da parentesi graffe, ma se l'istruzione da eseguire è solamente una, le parentesi possono essere omesse.

if (condizione) {
  System.out.println("La condizione è vera");
}

if (condizione)
  System.out.println("La condizione è vera");

Nonostante i due snippet sopra sono equivalenti, è sempre meglio utilizzare le parentesi graffe per garantire una maggiore leggibilità del codice.

Nella sezione successiva della guida vedremo il costrutto condizionale switch, che ha la stessa funzione di un else-if-else con else finale.