Odborný článek

Python v hudbě: funkce

17. 3. 2026
Gymnaziální vzdělávání
Autor
Pavel Konrád

Anotace

Pomocí programovacího jazyka Python prozkoumáme možnosti, jak přenášet a kódovat informace, které budeme demonstrovat na hudebních analogiích. V osmé aktivitě ze série Python v hudbě objevíme nové funkce a naučíme se i vytvářet vlastní.
  • Typ materiálu: cvičení 
  • Škola: gymnázium
  • Ročník: kvarta
  • Metody: cvičení
  • Vzdělávací obor: informatika
  • Tematický okruh: algoritmizace a programování
  • Očekávané výstupy: 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ů.
  • Časová dotace:
    • Výuka: 45 minut
    • Příprava: 30 minut
  • Pomůcky, hardware a software
    • Učitel: nainstalovaný Python
    • Žák: PC WIN s nainstalovaným Pythonem a IDE

Zdroje:

  • https://www.w3schools.com/python

Potřebné vstupní znalosti a dovednosti

Oborové

  • Základní orientace v programovacím jazyku Python
  • Znalost proměnných a datových typů
  • Znalost cyklů while a for

Digitální dovednosti

  • Pokročilé ovládání počítače
  • Schopnost postupovat podle návodu
  • Orientace v základní terminologii algoritmizace a programování

Vzdělávací cíle:

  • Pochopit princip funkce a zkusit možnosti, jak ji můžeme implementovat např. jako počítadlo.

Přínos využití digitálních technologií

Pomocí vlastních funkcích můžeme rozšířit naši interakci s programem a díky tomu zpřehlednit a zjednodušit zápis celého kódu.

Metodická poznámka

Tato aktivita navazuje na sérii Python v hudbě 07 – Metronom. U tvoření vlastních funkcí je zapotřebí rozumět proměnným, logickým operátorům, smyčkám a větvení programu.

Výklad

V minulém díle jsme již použili rozšířené funkce v jazyce Python. V této aktivitě si ukážeme, jak si vytvořit vlastní funkce. Funkce jsou základní stavební kameny programování v Pythonu a umožňují opakované použití kódu bez potřeby jeho opakovaného psaní. Funkce mohou přijímat vstupní hodnoty (argumenty) a mohou vrátit výstupní hodnoty. Práci s funkcí můžeme rozdělit do několika kroků.

1. Definice funkce

Definice funkce začíná klíčovým slovem „def“, následovaným názvem funkce a závorkami, do kterých se mohou přidat argumenty, které funkce přijímá. Tělo funkce je poté definováno odsazenými řádky.

Představme si, že máme funkci pro vytvoření melodie na kytaru, která má spoustu argumentů:

2. Argumenty

Argumenty nám určují, s jakými hodnotami bude funkce pracovat, a na jejich základě nám funkce vrátí nějaké výsledky. Argumenty máme buď povinné, nebo nepovinné:

  • Struna: povinný argument reprezentující číslo struny, na kterou chceme hrát. Tento argument symbolizuje struny na kytaře.
  • Pozice: povinný argument reprezentující pozici prstu na hmatníku kytary. Tento argument symbolizuje místo na hmatníku, kde chceme hrát.
  • Technika: povinný argument reprezentující způsob, jakým chceme na strunu hrát, například „staccato“ nebo „legato“. Je to způsob, jakým hráč používá prsty na kytaru.
  • Durace: nepovinný argument reprezentující délku noty v sekundách. Pokud tento argument není specifikován, výchozí hodnota je jedna sekunda.
  • Dynamika: nepovinný argument reprezentující dynamiku hraní, například „piano“ nebo „forte“. Pokud tento argument není specifikován, výchozí hodnota je „mf“ (mezzoforte).

3. Návratová hodnota

Funkce má mít vždy návratovou hodnotu, což je hodnota, kterou funkce vrátí zpět do programu. Tato hodnota se definuje klíčovým slovem „return“. Pokud není hodnota „return“ definována, funkce vrací „none“.

V tomto případě vrací funkce pouze výpis našich argumentů. Funkce by měla vracet správně hodnoty, se kterými pak v programu pracujeme dále. Pro ukázku nám takováto jednoduchá funkce zatím postačí.

4. Název funkce

Funkce se pojmenovává názvem funkce a závorkami obsahujícími argumenty, pokud jsou povinné. Pokud jsou argumenty nepovinné, lze je vynechat, přičemž funkce použije jejich výchozí hodnoty.

Funkce nám vrátí příkaz, který vypíše hodnoty: 1 3 legato 1 mf. Nepovinné argumenty nemusíme do funkce zapisovat. Nastaví se na výchozí hodnotu.

Příklad použití

Funkce v programování slouží k přehlednějšímu a čitelnějšímu kódu. V případě, že bychom program moc rozvětvili podmínkami a uzavřeli jej do několika cyklů zároveň, začal by kód být tak špatně čitelný, že by se v jeho logice později nevyznal ani sám tvůrce celého kódu, natožpak někdo, kdo v něm má hledat chyby a popř. jej opravit. 

Můžeme si tedy ukázat příklad, jak použít funkci jako počítadlo.

Tento kód vytvoří funkci počítadlo. Počítadlo nastaví aktuální hodnotu na hodnotu prvního parametru. Dále utvoří podmínku, že dokud bude aktuální hodnota menší než konec (což je druhý parametr), bude přičítat aktuální hodnotě hodnotu, kterou určuje třetí parametr. Jakmile smyčka skončí, vrátí funkce aktuální hodnoty počítadla. Zkusme si funkci zavolat s několika různými parametry.

Vidíme, že nám kód vypsal číslice od 1 do 12. Každé číslici vždy přidal +1 a uložil do aktuální hodnoty. V případě, že bychom zavolali funkci s jinými parametry, uvidíme, že se program chová odlišně.

Tento kód nám zobrazí násobky pěti od číslice 20 až po 200. I když se zdá, že pro krátké prográmky jsou funkce zbytečné, opak je pravdou. Kód napsaný logicky ve funkcích nám pomůže udržet logiku kódu tak, aby i po delší době byl kód dobře čitelný. Na závěr zkusíme vytvořit funkci pro náš generátor intervalů, který bude hledat pozici tónů. Proč na to budeme potřebovat funkci, se dozvíme v navazující aktivitě, kdy budeme generovat chromatickou stupnici.

Zadání:

Vytvořte funkci, která najde v proměnné scale tón, který předáme v povinném argumentu, a následně vrátí pozici indexu daného tónu. Funkci bychom měli poté zavolat tímto způsobem:

Řešení:

Hodnocení:

aktivita v hodině, návrh vlastního řešení, sestavení vlastní funkce, funkčnost kódu, inovace a kreativní přístup

Úloha 1: Vytvořte funkci, která najde v proměnné scale tón, který předáme v povinném argumentu, a následně vrátí pozici indexu daného tónu. Funkci bychom měli poté zavolat tímto způsobem:

Zkušenosti s použitím materiálu

Tento materiál je kombinací výkladu funkcí v jazyce Python a praktického cvičení, při němž se studenti snaží vyřešit zadání pomocí již naučených dovedností a metod v jazyce Python. Funkce již představují vysokou míru abstrakce a pro jejich pochopení je nezbytná velká míra prostorové představivosti. U těchto cvičení již počítejme s tím, že někteří studenti látku plně nepochopí. S těmito studenty projdeme celé cvičení krok za krokem a postupně jim odkrýváme řešení. Můžeme jim napsat různé nápovědy nebo jim předpřipravit syntaxi, do které pouze dosadí názvy proměnných. Následně studentům demonstrujeme hotovou funkci a její možné použití v kontextu minulých cvičení.

Autor
Pavel Konrád

Hodnocení uživatelů

Článek nebyl prozatím komentován.

Váš komentář

Pro vložení komentáře je nutné se nejprve přihlásit.

RVP do 2024

Očekávané výstupy:

Materiály s klíčovým slovem NPO 3.1 DIGI vytvořil tým metodiků v projektu Podpora škol v kontextu digitalizace (Národní plán obnovy 3.1 DIGI) pro podporu pedagogů při ICT revizích.

Další informace, metodické materiály i inspiraci do výuky jednotlivých předmětů i napříč předměty najdete na webu https://digitalizace.rvp.cz/