- 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
- Znalost tvorby funkcí
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:
- Vytvořit generátor tónů, který bude schopen přehrávat frekvence.
- Žák procvičí základní konstrukci jazyka Python.
Přínos využití digitálních technologií
Díky algoritmu můžeme generovat frekvence jednotlivých tónů, které nám mohou posloužit jako metodická pomůcka v hudebních výchovách při porovnání různých historických ladění.
Metodická poznámka
Tento materiál je samostatnou prací pro žáky. Jelikož je to pokročilá úloha, můžeme nechat studenty řešení dodělat jako domácí úkol a známkovat aktivitu studentů a jejich přístup k řešení úlohy. Počítejme s tím, že ne všichni studenti pochopí zadání. S nimi můžeme psát kód na interaktivní tabuli a postupně odkrývat kousky kódu a jejich řešení. Neodkrýváme kód ihned celý, ale vždy pouze určitou část, přičemž necháme studentům prostor pro vlastní invenci. Samozřejmě studentům povolíme pracovat s internetem a pobídneme je k vyhledávání možných řešení.
Metodický postup
Nejprve si načrtneme zadání, jak by měl program vypadat:
Vytvořte algoritmus, který bude na základě uživatelského vstupu generovat tón na předem definované frekvenci. Na základě uživatelského vstupu, kdy uživatel zvolí tón, který chce přehrát, program vygeneruje přiřazenou frekvenci k danému tónu.
- Použijte pro přehrávání tónů modul winsound a time.
- Ošetřete vstup uživatele tak, aby mohl zadávat pouze nadefinované tóny.
Jak postupovat:
- Importujte moduly pro práci s časem a Windows zvuky.
- Vytvořte proměnnou scale, do které uložíte nejprve názvy tónů.
- Poté utvořte proměnnou freq, do které uložíte jednotlivé frekvence tónů.
4. Vytvořte funkci, která bude hledat index tónu a podle toho ji přiřadí frekvenci z proměnné scale.
5. Když máme nadefinovanou funkci, která zjistí pozici indexu, můžeme tuto pozici použít pro proměnnou scale, ale i pro proměnnou freq, jelikož jsou frekvence seřazené do stejného pořadí jako tóny. Návratovou hodnotu si uložíme do proměnné a vykonáme zkoušku, zda funkce funguje správně:
6. Vytvoříme funkci, která bude přehrávat tóny na základě jejich frekvencí, a vyzkoušíme, zda nám generátor funguje.
7. Nyní je potřeba, abyste změnili proměnnou „x“ tak, aby načetla vstup uživatele, a zároveň tento vstup ošetřili podmínkou, aby v případě chybného vstupu program vypsal hlášení, že takový tón není k dispozici. Zároveň je potřeba, aby nám program znovu nabídl možnost zadat další tón na přehrání.
- Pomocí cyklu while uzavřete algoritmus do smyčky.
- Určíme podmínku, zda se nachází vstup uživatele v proměnné scale pomocí not in.
- Jestliže je podmínka vyhodnocena pravdivě (to znamená, že není), vypíše se uživateli hlášení, že takové tóny nejsou k dispozici, a nabídnou se mu tóny, které může zadat. Opět se nabídne uživateli nový vstup.
- Jinak se zavolá funkce NajdiPoziciTonu a hned poté necháme zavolat funkci ZahrajTon a novým vstupem pro uživatele.
8. Můžeme také rozšířit náš program tak, aby když uživatel zadá vstup „q“, tak program ukončí.
Řešení:
Hodnocení:
Hodnotíme studentův přístup k práci a to, v jakém rozsahu splnil všechny body zadání. Hodnotíme, zda dokázal efektivně hledat chyby, zda věděl, proč se tyto chyby zobrazovaly, a zda dokázal jednotlivé bloky kódu poskládat tak, aby algoritmus fungoval, popř. zda vymyslel své kreativní řešení problému. Můžeme hodnotit i úhlednost kódu a přidání komentářů pro lepší čitelnost celého kódu. V případě, že student nedokázal algoritmus sestavit, hodnotíme, zdali porozuměl jednotlivým částem a v jakém rozsahu se mu podařilo tyto části poskládat do jednoho celku.
Zkušenosti s použitím materiálu
Tento materiál je samostatnou prací pro žáky. Jelikož je to pokročilá úloha, můžeme nechat studenty řešení dodělat jako domácí úkol a známkovat aktivitu studentů a jejich přístup k řešení úlohy. Počítejme s tím, že ne všichni studenti pochopí zadání. S nimi můžeme psát kód na interaktivní tabuli a postupně odkrývat kousky kódu a jejich řešení. Neodkrýváme kód ihned celý, ale vždy pouze určitou část, přičemž necháme studentům prostor pro vlastní invenci. Samozřejmě studentům povolíme pracovat s internetem a pobídneme je k vyhledávání možných řešení.