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.
Další formáty na jedno kliknutí
- Vytvořit: Pracovní list
- Vytvořit: Písemka
- Vytvořit: Aktivita
- Vytvořit: Prezentace
- Vytvořit: Kartičky
- Vytvořit: QR hra
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
- 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á
- 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
- 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ě.
- 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.
- 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
- Algoritmus: vlastnosti, zápis a rozklad
- Proměnné a výrazy v Pythonu
- Větvení a cykly
- Seznamy v Pythonu
- Testování a ladění
- Vývoj a sestavení programu
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
-
Příprava na hodinu
Kompletní příprava s cíli, průběhem a aktivitami.
-
Pracovní list
List s úlohami, klíčem a variantou.
-
Písemka
Časovaná písemka s body a variantami.
-
Aktivita
Aktivita do hodiny, kterou žáci hned spustí.
-
Prezentace
Sada slajdů k výkladu a procvičení.
-
Kartičky
Materiál k tisku (kartičky, plakát, pracovní list).
-
QR hra
Interaktivní hra k procvičení tématu.
Interaktivní aktivity 14
-
Křížovka s tajenkou
Legendová křížovka, kde se ve sloupci skrývá tajenka. Skvělá na opakování pojmů.
10–20 min
-
Kartičky
Sada oboustranných kartiček na učení pojmů a definic. Žáci si je procvičí překlápěním.
5–20 min
-
Pexeso a spojovačka
Dvojice kartiček s obrázky, pojmy nebo příklady. Spojovačka, pexeso i volné třídění – ideální na slovní zásobu i opakování.
10–25 min
-
Rozhodovačka
Rychlé rozhodování mezi možnostmi s okamžitou zpětnou vazbou.
5–12 min
-
Otázky
Sada otázek s výběrem odpovědí; jedna nebo více správných. Okamžitá sebekontrola.
5–15 min
-
Vpisování
Žáci dopisují krátké odpovědi a ihned vidí, zda se trefili.
5–15 min
-
Rozřazovačka
Žáci přetahují kartičky do správných kategorií.
5–15 min
-
Rozbory
Žák přiřazuje značky k částem věty nebo výrazu — větné členy, slovní druhy, větné rozbory. Sebevyhodnocovací procvičování.
10–20 min
-
Označování
Žáci označují správná slova přímo v textu.
5–15 min
-
Doplňování textu
Žáci doplňují chybějící slova přímo do vět nebo krátkého textu.
5–15 min
-
Krok po kroku
Žáci řadí kroky procesu do správného pořadí.
5–15 min
-
Popis obrázku
Diagram s očíslovanými špendlíky. Žáci přiřazují popisky k částem obrázku — biologie, zeměpis, anatomie.
5–15 min
-
Přesouvání
Žáci přetahují kartičky do přesně určených slotů.
5–15 min
-
Čtení s porozuměním
Žáci čtou krátký text a odpovídají na otázky k jeho obsahu.
10–25 min
K tisku a rozstříhání 8
-
Páry
Kartičky se dvěma polovinami, které k sobě patří (např. datum–událost). Žáci je vystřihnou a párovají.
10–20 min
-
Výběr z možností (s tajenkou)
Kartičky s úlohami a třemi možnostmi. Písmena u správných odpovědí složí tajenku — žák si tak řešení zkontroluje sám.
10–20 min
-
Doplňování do vět
Věty s výběrem ze dvou možností uvnitř — žák zakroužkuje správnou.
10–20 min
-
Hra Riskuj
Kvízová hra se třemi podtématy a otázkami různé hodnoty — klasický formát Riskuj / Jeopardy.
15–30 min
-
Hra AZ kvíz
28 otázek na hexagonální hrací pole — cílem je spojit všechny tři strany.
15–35 min
-
Označ správnou možnost
Kartičky s otázkou a čtyřmi možnostmi — žák označí správnou (např. kolíčkem).
10–20 min
-
Já mám, kdo má …?
Kartičky s tvrzením a otázkou — žáci je čtou v kruhu a hledají navazující odpověď.
10–25 min
-
Hádej, kdo jsem
Kartičky s popisem osobnosti, věci nebo zvířete v 1. osobě — žáci tipují, o koho/co jde.
10–25 min
Hry pro celou třídu 4
-
AZ kvíz
28 otázek na hexagonálním hracím poli — cílem je spojit všechny tři strany. Včetně náhradních ANO/NE otázek.
15–35 min
-
Riskuj
Klasická hra se 5 kategoriemi a otázkami za 100–500 bodů — týmy soutěží o nejvyšší skóre.
15–40 min
-
Pexeso
Klasické pexeso s 10 dvojicemi (pojem ↔ popis) — dva týmy se střídají a hledají shody.
10–25 min
-
Šarády
Šarády se 12 úkoly (mluvení, kreslení, pantomima) — dva týmy hádají, kdo uhodne první, dostane bod.
15–30 min
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.
Související témata
-
Algoritmus: vlastnosti, zápis a rozklad
Žáci vysvětlí vlastnosti algoritmu, zapíší ho slovně, diagramem i pseudokódem, rozdělí problém na části a zdůvodní, co řešit algoritmicky. Neopakují blokové programování ze ZŠ.
-
Binární kódování
Žáci zapíší čísla ve dvojkové soustavě, vysvětlí bit, bajt a množství informace podle vyloučených možností a zdůvodní volbu datového typu mimo programovací jazyk.
-
Umělá inteligence
Žáci vysvětlí princip strojového učení, uvedou aplikace umělé inteligence a posoudí její limity, přínosy a rizika při práci s informacemi i ve společnosti.
-
Data a informace
Žáci rozliší data od informace, navrhnou sběr a evidenci údajů, posoudí jejich úplnost a význam pro rozhodnutí a oddělí evidenci od návrhu informačního systému.
-
Proměnné a výrazy v Pythonu
Žáci v Pythonu deklarují proměnné, volí datové typy a sestavují číselné i logické výrazy včetně vstupu a výstupu. Nejde o první seznámení s proměnnými ze ZŠ, ale o přehledný zápis výrazů v programu.
-
Tabulky, klíče a procesy
Žáci navrhnou tabulky s atributy, primárním a cizím klíčem, propojí je relacemi a sladí procesy od sběru po výstup s rolemi, které data mění nebo jen čtou.
-
Větvení a cykly
Žáci programují větvení se složenými podmínkami a cykly for i while, vnořují bloky a řídí tok výpočtu. Rozšiřují řízení výpočtu ze ZŠ o složené podmínky a přehlednou strukturu.
-
Počítačové sítě a internet
Žáci porovnají způsoby propojení počítačů, charakterizují lokální sítě a internet, vysvětlí paketový přenos, web, cloud, bezdrátové sítě a internet věcí.