Loop (interruzione e ritorno, continuazione, etichette) - 1

"Ciao, Amico!"

"Oggi ti parlerò di alcune cose utili quando si lavora con i loop."

"La prima è la parola chiave break . Se usi questo comando nel corpo di un ciclo, il ciclo terminerà immediatamente quando il comando viene eseguito. Ecco un esempio:"

Esempio Produzione:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"Può break essere usato solo in un loop?"

"Sì. L'istruzione break può essere utilizzata solo in un ciclo. Quando viene eseguita un'istruzione break, il ciclo termina immediatamente."

"Ok capito."

"Fantastico. Ora la seconda cosa che voglio condividere è la parola chiave continue. Può anche essere utilizzata solo in un ciclo. Quando viene eseguito questo comando, inizia immediatamente una nuova iterazione del ciclo. In altre parole, qualsiasi codice rimanente nel il corpo del ciclo viene semplicemente saltato."

"Ecco un esempio:"

Esempio Produzione:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"Quindi, una volta che il programma raggiunge un comando continue in un ciclo, interrompe l'esecuzione del codice nel ciclo?"

"No. Guarda, abbiamo un ciclo quando eseguiamo lo stesso codice più volte. Nell'esempio sopra, abbiamo un ciclo da 0 a 9, cioè il corpo del ciclo verrà eseguito 10 volte. Giusto?"

"SÌ."

"Un passaggio attraverso il corpo del ciclo è chiamato iterazione. Il nostro ciclo è composto da 10 iterazioni: il corpo del ciclo verrà eseguito dieci volte."

"Sì, è chiaro."

"Il comando continue termina prematuramente l'iterazione corrente, ovvero tutto il codice rimanente all'interno del ciclo viene saltato e inizia una nuova iterazione."

"Ecco un altro esempio:"

Esempio
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"In questo esempio, mostriamo una rappresentazione di stringa di tutti gli oggetti nell'elenco. Ma saltiamo tutti gli oggetti che sono nulli."

"OK, capito. Posso vedere quanto sia conveniente."

"Sì. Voglio anche parlarti delle etichette. Sono usate raramente in Java, perché spesso violano la bellezza della logica di un programma. Ma potresti incontrarle nel codice a un certo punto. Quindi preferirei parlarti di loro piuttosto che sentirne parlare al parco giochi."

"Una volta era consentito saltare da qualsiasi riga a qualsiasi riga nel codice. Lo abbiamo fatto utilizzando le etichette e l'istruzione goto. Ecco come appare:"

Codice orribile con etichette
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"In questo esempio, dopo l'esecuzione del comando goto label , il programma salta alla riga contrassegnata label .

"In seguito, tutti si sono resi conto e hanno deciso di non utilizzare l' istruzione goto . Java non supporta goto, ma goto è una parola riservata. Non è un grosso problema..."

"Quindi, niente goto e niente etichette in Java?"

"Non esiste una dichiarazione goto, ma ci sono etichette!"

"Come può essere?"

"In Java, le etichette possono essere utilizzate con i comandi continue e break. Vengono utilizzate quando si hanno molti cicli nidificati."

"Ad esempio, supponi di avere 5 cicli nidificati e quando una condizione è soddisfatta, vuoi uscire da tre di essi, ma non da tutti. Le etichette sono un modo elegante per farlo:"

Esempio
label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"In questo esempio, quando viene eseguita l'istruzione break, non usciamo dal ciclo con la variabile k, ma dal ciclo etichettato label2 - cioè usciamo immediatamente dai due cicli con k e j."

"Quanto spesso viene usato?"

"Ad essere onesti, non spesso, ma non si sa mai. Forse lo vedrai qualche volta. Questi sono fondamenti della sintassi: devi sapere tutto questo!"

"OK. Grazie, Bilaabo."