Istruzioni in alternativa

In questa pagina si introducono le istruzioni in alternativa (else), che sono una estensione delle istruzioni condizionali. Consideriamo un facile esempio: dato il valore di una variabile, stampare il messaggio La variabile e' positiva se la variabile è maggiore oppure uguale a zero, altrimenti stampare Valore negativo. Usando le istruzioni condizionali, questo risulta abbastanza facile. Il programma NoElse.java risolve questo problema.

/*
  Esecuzioni diverse a seconda di una condizione
*/

class NoElse {
  public static void main(String[] args) {
    int a=-3;

    if( a>=0 ) {
      System.out.println("La variabile e' positiva");
    }

    if( a<0 ) {
      System.out.println("Valore negativo");
    }
  }
}

Il simbolo >= indica "maggiore o uguale", per cui la condizione a>=0 è verificata solo se la variabile ha valore maggiore o uguale a zero (per confronto: la condizione a>0 è vera solo se a è maggiore di zero, ed è false se a vale zero).

In questo programma, si può notare come le due condizioni delle due istruzioni condizionali sono esattamente l'una l'opposto dell'altra, per cui una condizione è vera se e solo se l'altra è falsa. In questo caso, si esegue una sequenza di istruzioni se la condizione è vera, un'altra se è falsa. Situazioni di questo genere, in cui occorre eseguire una sequenza o un'altra a seconda se una condizione è vera o falsa, si presentano molto spesso nella programmazione. Per questa ragione, le istruzioni condizionali sono state estese, in questo modo:

if( condizione ) {
  istruzione1
  istruzione2
  ...
}
else {
  istruzioneA
  istruzioneB
  ...
}

La prima parte coincide con le istruzioni condizionali già viste in precedenza. Per prima cosa si valuta la condizione, e si vede se è vera o falsa. Nel primo caso si procede come al solito, ossia si eseguono le istruzioni istruzione1, istruzione2, ... . Se la condizione è falsa, si eseguono invece le istruzioni istruzioneA, istruzioneB, ... . In entrambi i casi, si prosegue poi con la istruzione che segue tutto il blocco, ossia la istruzione che viene dopo l'ultima parentesi graffa chiusa nello schema di sopra.

Tradotta in italiano, questa istruzione equivale a:

se la condizione e' vera
allora esegui istruzione1, istruzione2, ecc.
altrimenti esegui istruzioneA, istruzioneB, ecc

Il programma Else.java fa la stessa cosa del programma visto sopra, ma usa una istruzione condizionale con else invece di due istruzioni condizionali separate.

/*
  Esecuzioni diverse a seconda di una condizione
*/

class Else {
  public static void main(String[] args) {
    int a=-3;

    if( a>=0 ) {
      System.out.println("La variabile e' positiva");
    }
    else {
      System.out.println("Valore negativo");
    }
  }
}

Questo programma stampa "La variabile e' positiva" se il valore di a è maggiore o uguale a zero, altrimenti stampa "Valore negativo". Se ci fossero state altre istruzioni sotto il blocco condizionale, sarebbero state eseguite in ogni caso.