Ú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 return nebo 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 break a continue – break ukončí cyklus úplně, continue jen 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/continue zhorš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:

  1. 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.

  2. 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 25 nebo víc, vloží se × a zbytek tabulky už se vůbec nedopočítá.


Doplňující pokyny:
  • Používej pouze let a const, nikdy var.

  • Podmínku pro ukončení obou cyklů napiš pomocí proměnné stop.

  • Vysvětluj si v kódu komentářem, co dělá continue a 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

  • continue přeskočí jen jeden průchod (jednu buňku), cyklus ale běží dál.

  • break ukončí jen aktuální cyklus – proto je potřeba proměnná stop, aby se ukončil i cyklus vnější.