Hurok (megszakítás és visszatérés, folytatás, címkék) - 1

– Szia Amigo!

"Ma néhány olyan dologról fogok mesélni, amelyek kényelmesek a hurkokkal való munka során."

"Az első a kulcsszótörés . Ha ezt a parancsot egy ciklus törzsében használja, akkor a ciklus azonnal leáll a parancs végrehajtása után. Íme egy példa:

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

"A break csak hurokban használható?"

"Igen. A break utasítás csak ciklusban használható. Ha egy break utasítást végrehajtanak, a ciklus azonnal véget ér."

"Ok értem."

"Remek. Most a második dolog, amit meg akarok osztani, az a tovább kulcsszó. Ez is csak ciklusban használható. Amikor ez a parancs végrehajtódik, azonnal megkezdődik a ciklus új iterációja. Más szóval, minden megmaradt kód a ciklusban a hurok törzsét egyszerűen kihagyják."

"Íme egy példa:"

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

"Tehát, ha a program egy ciklusban elér egy folytatási parancsot, leállítja a kód végrehajtását a ciklusban?"

"Nem. Nézd, van egy ciklusunk, amikor ugyanazt a kódot többször hajtjuk végre. A fenti példában van egy ciklusunk 0-tól 9-ig, azaz a ciklus törzse 10-szer kerül végrehajtásra. Ugye?"

"Igen."

"A hurok törzsén egy áthaladást iterációnak nevezünk. A ciklusunk 10 iterációból áll – a ciklus törzse tízszer kerül végrehajtásra."

– Igen, ez egyértelmű.

"A folytatás parancs idő előtt leállítja az aktuális iterációt, azaz a cikluson belül maradó kód kimarad, és új iteráció kezdődik."

"Íme egy másik példa:"

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

"Ebben a példában a listában szereplő összes objektum karakterlánc-ábrázolását jelenítjük meg. A nulla objektumokat azonban kihagyjuk."

"Rendben, értem. Látom, milyen kényelmes ez."

"Igen. A címkékről is szeretnék mesélni. Javaban ritkán használják őket, mert gyakran megsértik a program logikájának szépségét. De előfordulhat, hogy valamikor találkozni fogsz velük a kódban. Szóval inkább mesélek nem hallottál róluk a játszótéren."

"Valamikor megengedhető volt, hogy bármelyik sorról bármelyik sorra ugorjunk a kódban. Ezt a címkék és a goto utasítás segítségével tettük. Így néz ki:"

Borzalmas kód címkékkel
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"Ebben a példában a goto label parancs végrehajtása után a program a label jelű sorra ugrik .

"Később mindenki meggondolta magát, és úgy döntött, hogy nem használja a goto utasítást. A Java nem támogatja a goto-t, de a goto fenntartott szó. Nem nagy ügy…"

"Szóval nincs goto és nincsenek címkék a Java-ban?"

"Nincs goto nyilatkozat, de vannak címkék!"

"Hogy lehetséges?"

"A Java nyelven a címkék használhatók a folytatás és a szünet parancsokkal. Akkor használatosak, ha sok beágyazott hurok van."

"Például tegyük fel, hogy 5 beágyazott hurokkal rendelkezik, és ha valamilyen feltétel teljesül, háromból szeretne kikerülni, de nem mindegyikből. A címkék elegáns módja ennek:"

Példa
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;

"Ebben a példában a break utasítás végrehajtásakor nem a k változóval lépünk ki a ciklusból, hanem a label2 címkével ellátott ciklusból - azaz azonnal kilépünk a két ciklusból k-val és j-vel."

– Milyen gyakran használják?

"Hogy őszinte legyek, nem gyakran, de soha nem tudhatod. Talán egyszer meglátod. Ezek a szintaxis alapjai – mindezt tudnod kell!"

"Rendben. Köszönöm, Bilaabo."