Pętle (przerwanie i powrót, kontynuacja, etykiety) - 1

"Cześć, Amigo!"

„Dzisiaj opowiem o kilku rzeczach, które są wygodne podczas pracy z pętlami.”

„Pierwszym jest słowo kluczowe break . Jeśli użyjesz tego polecenia w treści pętli, pętla zakończy się natychmiast po wykonaniu polecenia. Oto przykład:”

Przykład Wyjście:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

„Czy przerwa może być używana tylko w pętli?”

„Tak. Instrukcja break może być użyta tylko w pętli. Kiedy instrukcja break jest wykonywana, pętla natychmiast się kończy.”

"Ok, rozumiem."

„Świetnie. Drugą rzeczą, którą chcę się podzielić, jest słowo kluczowe continue. Można go również używać tylko w pętli. Po wykonaniu tego polecenia natychmiast rozpoczyna się nowa iteracja pętli. Innymi słowy, wszelki pozostały kod w ciało pętli jest po prostu pomijane."

„Oto przykład:”

Przykład Wyjście:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

„Więc kiedy program osiągnie polecenie Kontynuuj w pętli, przestaje wykonywać kod w pętli?”

„Nie. Spójrz, mamy pętlę, gdy wykonujemy ten sam kod kilka razy. W powyższym przykładzie mamy pętlę od 0 do 9, czyli treść pętli zostanie wykonana 10 razy. Prawda?”

"Tak."

„Jedno przejście przez treść pętli nazywa się iteracją. Nasza pętla składa się z 10 iteracji — treść pętli zostanie wykonana dziesięć razy”.

— Tak, to jasne.

„ Polecenie Kontynuuj przedwcześnie kończy bieżącą iterację, tj. wszelki pozostały kod wewnątrz pętli jest pomijany i rozpoczyna się nowa iteracja”.

„Oto kolejny przykład:”

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

„W tym przykładzie wyświetlamy reprezentację łańcuchową wszystkich obiektów na liście. Ale pomijamy obiekty, które są puste”.

„OK, rozumiem. Widzę, jakie to wygodne”.

„Tak. Chcę też opowiedzieć o etykietach. W Javie są one rzadko używane, ponieważ często naruszają piękno logiki programu. Ale w pewnym momencie możesz się z nimi spotkać w kodzie. Wolę więc opowiedzieć o niż słyszałeś o nich na placu zabaw”.

„Dawno, dawno temu można było przeskakiwać z dowolnej linii do dowolnej linii w kodzie. Zrobiliśmy to za pomocą etykiet i instrukcji goto. Oto jak to wygląda:”

Okropny kod z etykietami
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

„W tym przykładzie po wykonaniu polecenia goto label program przeskakuje do wiersza oznaczonego label .

„Później wszyscy zmądrzeli i postanowili nie używać instrukcji goto . Java nie obsługuje goto, ale goto jest słowem zastrzeżonym. Nic wielkiego…”

„Więc bez goto i bez etykiet w Javie?”

„Nie ma instrukcji goto, ale są etykiety!”

"Jak to możliwe?"

„W Javie etykiety mogą być używane z poleceniami continue i break. Są one używane, gdy masz wiele zagnieżdżonych pętli”.

„Załóżmy na przykład, że masz 5 zagnieżdżonych pętli i gdy spełniony jest jakiś warunek, chcesz wyjść z trzech z nich, ale nie ze wszystkich. Etykiety to elegancki sposób na zrobienie tego:”

Przykład
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;

„W tym przykładzie, gdy wykonywana jest instrukcja break, wychodzimy nie z pętli ze zmienną k, ale z pętli oznaczonej etykietą2 – tj. natychmiast wychodzimy z dwóch pętli za pomocą k i j”.

„Jak często się to stosuje?”

„Szczerze mówiąc, niezbyt często, ale nigdy nie wiadomo. Może kiedyś to zobaczysz. To są podstawy składni — musisz to wszystko wiedzieć!”

„OK. Dziękuję, Bilaabo”.