Úloha 4 – Vnořené for smyčky, proměnná stop a příkazy continue/break
| Stránky: | Moodle ZČU |
| Kurz: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Kniha: | Úloha 4 – Vnořené for smyčky, proměnná stop a příkazy continue/break |
| Vytiskl(a): | Nepřihlášený host |
| Datum: | neděle, 18. října 2026, 19.50 |
Ú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.
Úloha
Zadání (kontext úlohy):
Představ si, že máš tabulku, kde v každé buňce je násobek dvou čísel – čísla řádku a čísla sloupce.
Tvým úkolem je tuto tabulku vygenerovat pomocí vnořených cyklů for.
Aby to nebylo jen opakování násobilky, přidej do programu dvě speciální pravidla:
-
Přeskočení buňky (continue)
-
Pokud výsledek násobku je dělitelný určitou hodnotou (např. 3), místo výsledku se má do buňky napsat
—. -
Zbytek kódu se pro tento případ už nespustí → použij příkaz
continue.
-
-
Ukončení celé mřížky (break + příznak)
-
Pokud výsledek násobku překročí zadaný limit (např. 24), do buňky se napíše
×a generování celé tabulky se okamžitě ukončí. -
Protože máme dva cykly (vnější a vnitřní), je potřeba ukončit oba. To uděláme pomocí pomocné proměnné (
stop), která řekne vnějšímu cyklu: „Tady skonči taky.“
-
Cíl úlohy:
-
Naučit se vnořené cykly – cyklus uvnitř cyklu.
-
Vyzkoušet si, co dělá
continue(přeskočí jen jednu buňku). -
Vyzkoušet si, co dělá
break(ukončí cyklus). -
Naučit se ukončit i oba cykly naráz.
Požadovaný výstup:
Na stránce se zobrazí tabulka, kde:
-
většina buněk ukazuje výsledek násobku (
i×j=hodnota), -
buňky, které jsou násobky zadaného čísla (např. 3), mají
—, -
v okamžiku, kdy výsledek překročí limit, se zobrazí
×a tabulka se dál už nedokončí.
Pod tabulkou bude vysvětlená legenda:
-
—znamená přeskočenou buňku (continue), -
×znamená, že se zde program zastavil (break).
Jednoduchý příklad, co uvidíš:
Pokud máš mřížku 6×6, vynecháváš násobky 3 a limit nastavíš na 24, tak:
-
místo
3,6,9... se zobrazí—, -
jakmile by měl vzniknout výsledek
25nebo víc, vloží se×a zbytek tabulky už se vůbec nedopočítá.
Doplňující pokyny:
-
Používej pouze
letaconst, nikdyvar. -
Podmínku pro ukončení obou cyklů napiš pomocí proměnné
stop. -
Vysvětluj si v kódu komentářem, co dělá
continuea co dělábreak.
Příklad stránky:

Řešení úlohy
Co je zde splněno
-
Vnější cyklus rovnou kontroluje podmínku
&& !stop, takže není nutné zvlášť testovat uvnitř.
-
Vytvořena tabulka násobků pomocí vnořených cyklů
for. -
Použito
continue→ buňky s násobkem 3 se nahradí—. -
Pod tabulkou vysvětlena legenda.
Poznámky
continuepřeskočí jen jeden průchod (jednu buňku), cyklus ale běží dál.
breakukončí jen aktuální cyklus – proto je potřeba proměnnástop, aby se ukončil i cyklus vnější.