Skládání programu z funkcí a opakování

Žáci v Pythonu rozkládají úlohu na menší části, používají funkce s parametry a vnořené cykly a sledují, jak tyto prostředky zpřehledňují opakující se postup.

Průvodce tématem Skládání programu z funkcí a opakování v předmětu Informatika pro 8. třídu: co mají žáci zvládnout, na co navázat a kde nejčastěji chybují. K tomu příprava na hodinu, pracovní list nebo písemka, které ScioBot připraví na jedno kliknutí přesně pro tento ročník.

Připravit hodinu Všechny formáty

Klikněte a tvořte

Získejte přípravu zdarma

Vyberte formát. Jedním kliknutím otevřete tvorbu na téma Skládání programu z funkcí a opakování (8. třída) — ScioBot ho připraví za vás.

Připravit hodinu

Další formáty na jedno kliknutí

Téma i ročník jsou už vyplněné. Nic nepíšete — rovnou tvoříte.

V 8. ročníku žáci skládají větší úlohu z menších částí: funkce s parametry popíše opakovaně použitelný postup a vnořené cykly `for` zvládnou opakování ve dvou úrovních, například po řádcích a sloupcích. Učí se tak rozdělit problém, sestavit kroky do přehledného algoritmu a vysvětlit jejich návaznost, což podporuje výstup INF-INF-002-ZV9-006.

Žáci při práci v Pythonu poznávají, jak funkce a opakování přispívají k přehlednosti a znovupoužitelnosti programu. Výstup INF-INF-002-ZV9-007 však výslovně požaduje program v blokově orientovaném jazyce; tato část v Pythonu proto procvičuje související myšlení, ale sama nedokládá splnění tohoto výstupu.

Při rozboru programu je užitečné sledovat, zda žáci rozlišují definici funkce od jejího volání, rozumějí odsazení a vědí, zda funkce výsledek vrací pomocí `return`, nebo jej pouze vypíše pomocí `print`. Smyslem je, aby dokázali popsat, co se opakuje, která část řeší samostatný dílčí úkol a co by bylo třeba změnit při jiném vstupu.

Předpoklady

  • Cyklus `for`, rozsah opakování a řízení výpočtu v Pythonu
  • Proměnné a výrazy: ukládání hodnot a jejich použití ve výpočtu
  • Podmíněný příkaz `if` pro větvení uvnitř cyklu nebo funkce
  • Rozklad úlohy na části před zápisem kódu

Klíčové pojmy

Funkce s parametry
Pojmenovaný úsek kódu, který při volání dostane konkrétní hodnoty parametrů a provede určený úkol.
Volání funkce
Zápis `def` funkci pouze definuje; její tělo se vykoná až při volání názvem a závorkami, případně s argumenty.
Návratová hodnota (`return`)
`return` předá výsledek funkce volajícímu kódu, který ho může uložit do proměnné nebo dál použít. `print` pouze zobrazí text.
Lokální proměnná
Proměnná vytvořená uvnitř funkce je dostupná v jejím těle; kód mimo funkci její hodnotu přímo nepoužije. Funkce ji může předat dál jako návratovou hodnotu.
Vnořený cyklus
Vnitřní cyklus dokončí všechna svá opakování pro každou hodnotu vnějšího cyklu, například projde sloupce v každém řádku.
Odsazení v Pythonu
Odsazení určuje, které příkazy patří do funkce nebo cyklu a které cykly jsou vnořené. Příkazy na stejné úrovni odsazení následují po sobě.
Znovupoužití postupu
Stejnou funkci lze volat s různými argumenty. Úprava jejího těla se pak projeví při každém volání.

Časté miskoncepce

  • Častá chyba

    Žák napíše funkci, například `def vykresli(n):`, spustí soubor a očekává výstup, přestože funkci nikde nezavolal.

    Jak na to

    Porovnejte samotnou definici funkce s jejím voláním, například `vykresli(3)`, a nechte žáky určit, kdy se její tělo vykoná.

  • Častá chyba

    Žák uvnitř funkce změní lokální proměnnou, například `soucet = soucet + x`, a očekává, že se tím změní stejnojmenná proměnná mimo funkci. Nebo přiřadí do перемnné výsledek funkce, která pouze použila `print`, a čeká, že v ní bude hodnota.

    Jak na to

    Porovnejte funkci, která výsledek zobrazí pomocí `print`, s funkcí, která jej vrátí pomocí `return` a jeho hodnotu přiřadí. Proberte, proč hodnota lokální proměnné sama nepřenese změnu ven z funkce.

  • Častá chyba

    Žák zapíše dva cykly pod sebe se stejným odsazením a očekává mřížku 3 × 3; cykly se však vykonají postupně, nikoli jeden uvnitř druhého.

    Jak na to

    Vyznačte na mřížce 3 × 3 pořadí dvojic (i, j) a porovnejte je s kódem. Vnitřní cyklus musí být odsazen uvnitř těla vnějšího cyklu.

  • Častá chyba

    Žák považuje parametr v hlavičce za pevně danou hodnotu, například že `n` je vždy 5, nebo zamění definici `def scitej(a, b)` za volání funkce.

    Jak na to

    Porovnejte definici `def scitej(a, b)` s voláními `scitej(2, 3)` a `scitej(4, 5)`. Žáci popíší, jaké argumenty funkce při jednotlivých voláních dostane.

Jak učit

2–3 hodiny

  1. Evokace: Ukažte několik kopií stejného výpisu řádku a zeptejte se, co by bylo třeba změnit, kdyby řádků mělo být osm.
  2. Uvědomění: Proberte funkci s parametrem a vnořený cyklus `for`; sledujte, jak se při změně rozměru mění argumenty a rozsahy opakování.
  3. Reflexe: Žáci pojmenují část programu převedenou do funkce, určí vnější a vnitřní cyklus a popíší, co je třeba změnit pro jiný vstup.

Nápady na aktivity

  • Obdélník z hvězdiček: funkce `radek(sirka)` vykreslí řádek o zadané šířce a vnější cyklus ji opakuje podle výšky. Sledujte odsazení i to, kde se funkce volá.
  • Malá násobilka nebo součet hodnot v tabulce: vnořené cykly projdou dvojice řádku a sloupce; funkce může pro dvojici vrátit číslo pomocí `return` a hlavní program je vypíše nebo sečte.

Hodnocení

Žák vysvětlí rozdělení úlohy na dílčí kroky, napíše funkci s parametrem, opakovaně ji zavolá a popíše, jak vnořené cykly sestaví mřížku nebo projdou skupiny hodnot (INF-INF-002-ZV9-006).

Žák na vlastním kódu označí vnější a vnitřní cyklus a vysvětlí rozdíl mezi `print` a `return`. Pro doložení výstupu INF-INF-002-ZV9-007 je třeba ověřit použití opakování, větvení a proměnných v blokově orientovaném programu.

Zdroje

Co pro vás ScioBot připraví k tématu Skládání programu z funkcí a opakování

Interaktivní aktivity, které žáci spustí na tabletu či tabuli, tisknutelné kartičky a hry pro celou třídu – každý formát na téma Skládání programu z funkcí a opakování jedním klikem.

Základní materiály

Interaktivní aktivity 15

K tisku a rozstříhání 8

Hry pro celou třídu 4

Očekávané výstupy

  • INF-INF-002-ZV9-006 Rozdělí problém na jednotlivě řešitelné části a navrhne postupy a algoritmy pro jeho řešení.
  • INF-INF-002-ZV9-007 V blokově orientovaném programovacím jazyce vytvoří přehledný program, používá opakování, větvení programu, proměnné.

Učíte Skládání programu z funkcí a opakování trochu jinak?

Popište ScioBotu vlastními slovy, co s žáky chcete zvládnout a kolik máte času. Materiál přizpůsobí vašemu ŠVP, třídě i žákům se speciálními vzdělávacími potřebami.

Napsat ScioBotu

Související témata