Úloha 4 – Vnořené for smyčky, proměnná stop a příkazy continue/break
Úvod do úlohy
Jakmile zvládnete základní cykly for, while a do…while, dalším krokem jsou pokročilejší konstrukce. V reálných programech se často setkáte se situací, kdy je potřeba opakovat cyklus uvnitř jiného cyklu – tomu říkáme vnořený cyklus. Typickým příkladem je procházení tabulky (dvojrozměrného pole), generování mřížky HTML prvků nebo kombinování více hodnot mezi sebou.
Dále je důležité znát příkazy break a continue, které nám dávají větší kontrolu nad během cyklu. break dokáže smyčku okamžitě ukončit, zatímco continue přeskočí aktuální průchod a pokračuje dalším.
Teorie a principy
-
Vnořené cykly: cyklus uvnitř jiného cyklu.
-
Vnější cyklus řídí „řádky“, vnitřní cyklus „sloupce“.
-
Počet průchodů se násobí (např. 3×3 tabulka → 9 průchodů).
-
-
break: okamžitě ukončí aktuální cyklus.-
Pokud je cyklus vnořený, ukončí se pouze ten, ve kterém se nacházíme.
-
Používá se, když už nemá smysl pokračovat (např. při nalezení hledané hodnoty).
-
-
continue: ukončí aktuální průchod a skočí na další iteraci cyklu.-
Hodí se, pokud chceme některé hodnoty přeskočit, ale zbytek projít.
-
-
Pozor:
-
Vnořené cykly se snadno stanou složitými a nepřehlednými. Používejte je s rozvahou.
-
Pokud chcete ukončit oba cykly naráz, je často lepší kód přeorganizovat (např. pomocí funkce s
returnnebo pomocí pomocné proměnné).
-
Praktické příklady kódu
1. Vnořený for – tabulka součtů
2. Vnořený cyklus pro 2D pole
3. Použití break – hledání hodnoty v poli
4. Použití continue – přeskočení lichých čísel
5. Break pouze vnitřního cyklu
Pro každé i proběhne vnitřní cyklus jen jednou (j=0), protože při j=1 se ukončí.
Typické chyby / záludnosti
-
Nekontrolovaný růst složitosti – při dvou nebo více vnořených cyklech se počet průchodů rychle násobí.
-
Záměna
breakacontinue–breakukončí cyklus úplně,continuejen přeskočí jeden průchod. -
Nedostatečná inicializace proměnných – pokud se proměnná používá ve více cyklech, musí být správně resetována.
-
Pokus o ukončení obou cyklů jedním
break– funguje pouze na ten aktuální, ne na vnější.
Shrnutí
-
Vnořené cykly: vhodné pro vícerozměrná data, každý průchod vnější smyčky spustí celý vnitřní cyklus.
-
break: ukončí aktuální cyklus, vhodné při nalezení hledané hodnoty. -
continue: přeskočí aktuální iteraci a pokračuje dalším průchodem. -
Dávejte pozor na přehlednost a výkon – přílišné vnoření nebo nevhodné použití
break/continuezhoršuje kód.