Funkce a podprogramy

Žáci navrhují podprogramy s parametry a návratovými hodnotami, zobecní opakující se postup a složí ho do přehledného programu. Funkce tu slouží k rozkladu úlohy, ne k prvnímu volání vestavěných příkazů.

Průvodce tématem Funkce a podprogramy v předmětu Informatika pro II. ročník: 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 Funkce a podprogramy (II. ročník) — 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.

Žáci v II. ročníku gymnázia přecházejí od zápisu postupu v jednom bloku k rozkladu úlohy na podprogramy. Funkce tu není jen volání vestavěného příkazu, ale vlastní pojmenovaný postup s parametry a návratovou hodnotou, který lze znovu použít. Výstup G-INF-02-004 i G-INF-02-007 požadují, aby žák skládal přehledný program s podprogramy, ne jen opakoval tutéž sekvenci příkazů na několika místech.

Nejprve se z opakujícího se kódu vyčlení společný postup, pojmenuje se a doplní vstupy (parametry) a výsledek (návratová hodnota). Potom se hlavní program skládá z volání těchto podprogramů: větvení, cykly a seznamy zůstávají uvnitř funkcí, ale rozhraní je krátké a čitelné. Žák přitom sleduje, že špatně zvolené rozhraní (chybějící parametr, tisk místo návratu) kazí skládání celku.

Hodina směřuje k tomu, aby žák uměl navrhnout několik funkcí k jedné úloze, ověřit je na příkladech a sestavit z nich přehledný program. Odpovědnost za důsledek programu (G-INF-02-004) se tu projevuje i v tom, že funkce má jasný význam: počítá, ověřuje, transformuje data — a hlavní tok pak jen skládá tyto kroky.

Předpoklady

Klíčové pojmy

Podprogram (funkce)
Pojmenovaný blok příkazů, který řeší jednu ucelenou část úlohy a lze ho volat z více míst programu.
Definice a volání
Definice (`def`) pouze popisuje postup; výpočet nastane až voláním. Bez volání se tělo funkce neprovede.
Parametr
Pojmenovaný vstup v definici funkce; při každém volání dostane konkrétní hodnotu (argument).
Návratová hodnota
Hodnota, kterou funkce předá volajícímu příkazem `return`; není to výpis na obrazovku.
Lokální proměnná
Proměnná vzniklá uvnitř funkce platí jen v jejím těle; po skončení volání zaniká a neprepisuje stejnojmennou proměnnou venku, pokud ji programátor záměrně nevrátí nebo nepředá.
Rozklad úlohy
Opakující se nebo samostatně srozumitelný postup se vyčlení do funkce; hlavní program pak skládá volání místo kopírování kódu.
Rozhraní funkce
To, co funkce slibuje: jaké vstupy očekává a co vrací. Dobré rozhraní je krátké, pojmenované podle účelu a nezávislé na tom, odkud se volá.

Časté miskoncepce

  • Častá chyba

    Žák napíše `def vypocet(...):` a čeká, že se výpočet hned spustí; v konzoli nic nevidí a říká, že funkce nefunguje.

    Jak na to

    Vedle definice nechte doplnit jedno konkrétní volání s čísly a výsledek uložit do proměnné; ukažte, že tělo běží až po volání.

  • Častá chyba

    Žák uvnitř funkce použije `print` a tvrdí, že funkce „vrací“ číslo; v hlavním programu pak s výsledkem nejde počítat (`None` nebo chybějící hodnota).

    Jak na to

    Stejný výpočet přepište na `return`; v hlavním programu výsledek přiřaďte a teprve pak případně vypište. Porovnejte oba běhy vedle sebe.

  • Častá chyba

    Žák uvnitř funkce přiřadí do `x` a očekává, že se změní `x` z hlavní části programu, protože se jmenuje stejně.

    Jak na to

    Vypište hodnotu `x` před voláním, uvnitř funkce a po návratu; pak výsledek vraťte a přiřaďte `x = f(...)`, ať je předání vidět v kódu.

  • Častá chyba

    Žák kopíruje tutéž smyčku na tři místa a funkci odmítá („to je jen pro print a input“), nebo napíše funkci bez parametrů a sahá na globální seznam.

    Jak na to

    Nechte tři kopie porovnat, pak jednu smyčku vytáhnout do funkce se seznamem jako parametrem a návratem; hlavní program ať jen třikrát zavolá.

Jak učit

2–3 hodiny

  1. Evokace: ukažte tři skoro stejné úseky kódu a zeptejte se, co by se pokazilo při jedné opravě jen na jednom místě.
  2. Jádro: společně vyčleňte funkci s parametry a `return`, pak složte hlavní program z volání; oddělte tisk od výpočtu.
  3. Reflexe: žáci pojmenují své funkce a napíší jednou větou, co která bere a co vrací.

Nápady na aktivity

  • Z opakujícího se výpočtu (např. součet kladných prvků seznamu, ověření hesla, převod jednotek) navrhnout funkci, otestovat ji na 3 vstupech a použít ji v krátkém hlavním programu.
  • Rozdělit jednu úlohu na 2–3 funkce (načtení/příprava dat, výpočet, sestavení výsledku) a porovnat čitelnost s původním „jedním kusem“ kódu.

Hodnocení

Žák k zadané úloze napíše alespoň dvě funkce s parametry a návratovou hodnotou a složí z nich přehledný hlavní program (G-INF-02-004, G-INF-02-007).

Ústně nebo písemně rozliší definici a volání a na vlastním kódu ukáže rozdíl mezi `print` a `return`.

Související témata

Zdroje

Co pro vás ScioBot připraví k tématu Funkce a podprogramy

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 Funkce a podprogramy jedním klikem.

Základní materiály

Interaktivní aktivity 14

K tisku a rozstříhání 8

Hry pro celou třídu 4

Očekávané výstupy

  • G-INF-02-004 žák vytvoří přehledný program pro vyřešení konkrétního problému s ohledem na jeho možné důsledky a svou odpovědnost za ně; používá opakování, větvení programu se složenými podmínkami, proměnné, seznamy, podprogramy s parametry a návratovými hodnotami; ve snaze o vyšší efektivitu navrhuje, řídí a hodnotí souběh procesů
  • G-INF-02-007 programovací koncepty – programovací jazyk; proměnné, datové typy a jejich vlastnosti, vstup a výstup dat; podprogramy s parametry a s návratovými hodnotami; větvení programu se složenými podmínkami, cykly, seznamy

Učíte Funkce a podprogramy 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