Corso di Java

Istruzioni di salto

 

Java supporta tre istruzioni di salto:
- break
- continue
- return

Alle prime due istruzioni può essere associata un’etichetta (label), che non è altro che un identificatore posto prima di un’istruzione e seguito dal carattere “due punti” ( : ), con una sintassi del tipo:

etichetta: istruzione;

L’istruzione break, già vista in azione all’interno dell’istruzione switch (vedi lezione 25), può essere utilizzata nelle due forme, con o senza etichetta, in base alle specifiche esigenze dell’algoritmo che si sta implementando.
In precedenza abbiamo visto che il comando break termina l’esecuzione del corpo dell’istruzione switch trasferendo il controllo all’istruzione immediatamente successiva allo switch.
La forma non etichettata dell’istruzione break può essere utilizzata anche per teminare cicli for, while o do-while; mentre la forma etichettata permette non solo di terminare il ciclo, ma anche di terminare l’istruzione etichettata con la label indicata nell’istruzione break.
L’uso di break con etichetta può portare facilmente a confusione ed errori, per cui è bene ridurre al minimo il suo utilizzo; il solo caso in cui è consigliabile è quello in cui occorre gestire una serie di cicli annidati.

L’istruzione continue viene utilizzata per saltare l’iterazione corrente di un ciclo for, while o do-while.
Nella forma senza etichetta salta alla fine del corpo più interno del ciclo e valuta l’espressione booleana che controlla il ciclo: se vale true rientra nel ciclo, altrimenti il ciclo viene terminato.
Nella forma con etichetta provoca la terminazione di un ciclo più esterno etichettato con la label specificata.



Al fine di chiarire quanto esposto sinora, di seguito è riportato un semplice esempio con break e continue in entrambe le forme:

class JumpTest {
    public static void main(String[] args) {
      int dividendo = 7;
       int quanti = 0;
       int limite = 5;

       System.out.println("Prova di break e continue senza label:");
       for (int i = 1; i <= 100; i++) {
             if (i%dividendo != 0)
                    continue;
             System.out.println(i + " e' divisibile per " + dividendo);
             quanti++;
             if (quanti == limite)
                    break;
       }

       System.out.println();
       System.out.println("Prova di break e continue con label:");

       fuori:
       for (int i = 1; i <= 100; i++) {
       System.out.println("--- Iterazione #" + i);
       for (int j = 1; j <= 10; j += 2) {
             if (j >= i)
              continue fuori;
                    System.out.println(j + " e' minore del limite.");
             if ((i - j) > limite) {
             System.out.println("i - j = " + (i-j) + " > " + limite);
             break fuori;
             }
             }
             }
        System.exit(0);
    }
}


Compilato ed eseguito questo codice, non dovrebbe essere difficile esaminare l’output ottenuto e ottenere da esso il comportamento delle istruzioni di salto: come esercizio provate a creare altre applicazioni che utilizzano entrambe le forme di break e continue.

Infine, l’istruzione di salto return viene utilizzata per uscire dal metodo corrente e ritornare indietro al metodo contenente l’istruzione che ne ha provocato l’invocazione.
Abbiamo già visto l’utilizzo di return nelle lezioni 8 e 9 e in alcune di quelle successive, per cui si dovrebbe avere familiarità con questo comando; comunque può far bene ricordare che l’istruzione return può ritornare un valore al chiamante semplicemente mettendo tale valore (o l’espressione che lo calcola) subito dopo la parola chiave return.
Il valore deve essere del tipo di ritorno indicato dal metodo nella sua dichiarazione; se il metodo dichiara di ritornare un tipo void, return non ritorna alcun valore e viene utilizzato nella sua forma semplice:

return;


 

Torna all'indice Generale del corso di Corso di Java di Software Planet