  |
Interruzioni di ciclo |
In Java non esiste goto. Il goto serve a effettuare salti nel flusso del programma ed era la regola nei linguaggi prima della programmazione strutturata. Il C è un linguaggio strutturato, ma prevede il goto. Viene usato però normalmente solo in casi eccezionali (a meno che il programmatore non sia riuscito a digerire i concetti della progammazone strutturata!). I casi in cui si usa necessariamente il goto in C sono interruzioni di cicli e gestione di errori. Per i secondi abbiamo le eccezioni, che vedremo in seguito. Per i primi la soluzione sono i camandi di interruzione di ciclo, che come vedremo, fanno delle cose in più rispetto al C.
break
  |
Consente di interrompere cicli e il comando switch |
Il break è il comando dell'interruzione del ciclo. Dove c'è un break il ciclo termina. Lo abbiamo già visto usato per terminare uno switch, ma lo possiamo applicare anche a for, while e do-while. Nel punto in cui si incontra un break, si ha immediatamente un salto alla fine del ciclo. Implicitamente pertanto il break è appunto un goto alla fine del ciclo che lo contiene.
  |
Reiterazione di ciclo |
continue
Supponiamo di stare facendo un ciclo. Supponiamo che a un certo punto mi rendo conto che per questa iterazione non c'è più niente da fare, e voglio andare subito alla prossima iterazione. Posso senz'altro risolvere il problema con una if, ma spesso non rende l'idea e rende il codice meno leggibile a causa dell'annidamento di blocchi dentro blocchi.
  |
Consente di proseguire cicli dal punto in cui si è |
Java mette a disposizione il continue per gestire elegantemente questo caso: consente di passare direttamente alla prossima iterazione del ciclo.
Il continue può essere usato solamente all'interno di un ciclo: while, for, do/while. Equivale anche in questo caso ad un salto, un goto implicito, ma questa volta all'inizio del ciclo, per eseguire l'iterazione successiva.
Bisogna stare attenti che è qui che il comportamento del continue differenzia while e for. Consideriamo infatti:
for(int i=0; i<10; i++) {
...
if(<condizione>)
continue;
...
}
int i=0;
while(i<10) {
...
if(<condizione>)
continue;
i++;
...
}
Nel primo caso, ciclo for, dopo il continue viene eseguita la successiva istruzione di incremento del ciclo (i++). Nel secondo caso, essendo posa all'interno del corpo del comando del while, la continue non fa eseguire l'istruzione di incremento del ciclo, i++.
  |
Sono dei "goto" |
  |
Il break equivale ad un salto alla fine del ciclo |
  |
il continue equivale ad un salto all'inizio del ciclo |
// 1 inizio ciclo
while(...) {
if(...)
break; // salta a 2
if(...)
continue; // salta a 1
}// 2 file ciclo
|