Načítání stránky…

Funkce a podprogramy

Připravit hodinu Všechny formáty

Žá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ýstupy RVP G požadují, aby žák skládal přehledný program s podprogramy, ne jen opakoval tutéž sekvenci příkazů na několika místech.

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 si můžete upravit. Předmět a ročník už jsou vyplněné — stačí si vybrat, co chcete vytvořit.

O tématu

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

  • Rozklad úlohy na kroky a zápis algoritmu před kódem
  • Proměnné, výrazy a předávání hodnot v Pythonu
  • Větvení a cykly uvnitř delšího postupu
  • Práce se seznamem jako se vstupem nebo výsledkem postupu

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á

Jméno vytvořené přiřazením uvnitř funkce je obvykle lokální. Přiřazení do něj samo nepřepíše stejnojmenné jméno mimo funkci. Změna obsahu předaného seznamu je jiná operace a může být viditelná i volajícímu.

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

Nápady na aktivity

  1. Postup

    Rozklad programu na funkce

    Žáci seřadí kroky řešení do postupu, který odděluje hlavní program od podprogramů. Sledují, jak se dílčí části skládají do celku.

  2. Přiřazování

    Přiřazení parametrů a návratových hodnot

    Žáci přiřazují hodnoty parametrům funkcí a určují, co funkce vrátí. Procvičí vazbu mezi voláním podprogramu a jeho výsledkem.

  3. Rozřazování

    Opakování kódu, nebo vlastní funkce?

    Žáci třídí příklady podle toho, zda se vyplatí opakující se postup zobecnit do podprogramu, a zdůvodňují vhodné rozdělení programu.

  4. Kvíz

    Návrh funkcí pro řešení úloh

    Žáci vybírají správné parametry, návratovou hodnotu a místo volání pro navržené funkce. Otázky se zaměřují na rozklad úlohy, ne na vestavěné příkazy.

  5. Logický řetěz

    Příčina, volání a návrat z podprogramu

    Žáci skládají řetězec od předání argumentů funkci přes její výpočty až k návratové hodnotě a navazujícímu kroku hlavního programu.

  6. Čtení s porozuměním

    Čtení programu s funkcemi

    Žáci čtou krátký program s několika podprogramy a odpovídají na otázky o toku hodnot, parametrech, návratových hodnotách a rozdělení opakujícího se postupu.

Časté miskoncepce

  • Častá chyba

    Žák napíše definici def vypocet(cislo): s tělem funkce, ale nikde funkci nezavolá. Po spuštění souboru očekává výsledek a říká, že funkce nefunguje.

    Jak na to

    Porovnejte definici, volání a výpis. Tělo se provede až při volání a return předá výsledek volajícímu.

    def dvojnasobek(cislo):
        return cislo * 2
    
    vysledek = dvojnasobek(3)
    print(vysledek)  # 6
  • Č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á.

Úkoly pro žáky

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

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

Očekávané výstupy

  • RVP G žá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ů

Zdroje

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

Prozkoumejte další témata