Python v hudbě: určení intervalů pomocí podmínek a logických operátorů
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. Ve čtvrté aktivitě ze série Python v hudbě si ukážeme, co jsou to podmínky, jak s nimi pracujeme a jak pomocí nich můžeme větvit program, čímž vytvoříme první algoritmus.
Typ materiálu: cvičení
Škola: gymnázium
Ročník: kvarta
Metody: výklad
Vzdělávací obor: informatika
Tematický okruh: data, informace a modelování – kódování a přenos dat
Očekávané výstupy: Rozlišuje a používá různé datové typy. Navrhuje a porovnává různé způsoby kódování z různých hledisek a vysvětlí proces a úskalí digitalizace.
Časová dotace:
Výuka: 45 minut
Příprava: 30 minut
Pomůcky, hardware a software
Učitel: dataprojektor, výpočetní zařízení (PC, notebook, tablet)
Orientace v základní terminologii algoritmizace a programování
Vzdělávací cíle:
Vytvořit funkční a praktický algoritmus za pomoci podmínek a logických operátorů
Přiřadit význam abstraktní informaci pomocí základních programovacích technik
Umět zakomponovat proměnné, seznamy a pomocí metod s nimi kreativně pracovat při řešení praktického problému
Přínos využití digitálnícg technologií
Logické operátory a pravdivostní hodnoty jsou základní operace, které můžeme použít při práci s daty. Díky skládání algoritmu nemusíme vypisovat stále se opakující informace, které tak necháváme generovat program automaticky.
Metodická poznámka
Tato aktivita navazuje na sérii Python v hudbě – metody a seznamy v půltónech. V této aktivitě se studenti učí propojit naučené dovednosti z předchozích cvičení a výkladů ve funkční algoritmus. Tento algoritmus má otevřít téma ohledně práce s daty a možnosti využití, kde názorně ukazuje, že programování nemusí být tak těžké, jak se na první pohled zdá. Alespoň ve svých principech.
První polovina hodiny:
Učitel vysvětluje, jak můžeme vyjádřit pravdivostní hodnotu v jazyce Python. Blíže popisuje, jak můžeme porovnávat jednotlivé výrazy:
A = 5
B = 4
A > B
B < A
A =! B
B += 1 == A
Učitel pokračuje ve výkladu, kde rozvine téma do větvení programu pomocí podmínky if. Vysvětluje, že if je základním stavebním kamenem programování, kde se rozhoduje, jak má program postupovat. Nezapomene připomenout, že kód se zpracovává procedurálně, tedy příkaz po příkazu. Názorně ukáže, jak můžeme vytvořit podmínku v jazyce Python.
Podmínka Výraz Operátor Výraz2 :
4mezery To co se má vykonat, pakliže je splněná podmínka.
if A == B: print(„A je skutečně stejné jako B“)
Učitel nezapomene připomenout důležitost správné syntaxe a připomene, že Python nepoužívá složené závorky a středníky k oddělení jednotlivých podmínek jako jiné programovací jazyky, ale namísto toho používá tabulátor k oddělení jednotlivých logických celků.
V momentě, kdy si žáci poznamenají správnou syntax, učitel přechází k názorné ukázce, k čemu podmínky v programu používáme, a nechává studentům prostor pro vlastní inciativu a zkoumání.
A = 1
B = 1
If A == B:
Print(„A má hodnotu 1, stejně jako B.“)
If A != B:
Print(„A a B nemají stejnou hodnotu.“)
Dalším stupněm podmínek, jak můžeme program větvit, je funkce elif. Učitel vysvětluje, že pakliže chceme do algoritmu zařadit více podmínek, děláme to právě pomocí funkce elif. Elif můžeme přeložit jako nebo.
A = 1
B = 1
If A == 1:
Print(„A má hodnotu 1.“)
elif B == 1:
Print(„B má hodnotu také 1.“)
Elif A == B:
Print(„A má hodnotu 1, stejně jako B.“)
Můžeme nechat studenty, aby různě tvrzení upravovali, a také zkusíme názorně demonstrovat, co se stane, když nějakou podmínku posuneme tabulátorem. Vysvětlíme, že určitou akci můžeme podmínit určitou podmínkou, a ta se vykoná, jen když bude jiná podmínka splněna.
A = 1
B = 0
If A == 1:
Print(„Jestliže A má hodnotu 1, tak se B změní také na hodnotu 1 a bude se dít něco dále.“)
B = 1
If B == 1:
Print(„B změnilo hodnotu na 1, protože byla splněná podmínka, že A má hodnotu 1. Kdyby A nemělo hodnotu 1, B by nezměnilo hodnotu.“)
Elif A == B:
Print(„A má hodnotu 1, stejně jako B, protože byla splněná podmínka, že A == 1.“)
IF A =! 1:
Print(„Jelikož A není 1, tak B nikdy nebude 1, protože se nesplní podmínka.“)
Druhá část hodiny:
Učitel zadá samostatnou práci, při níž studenti pracují na vyřešení problému. Pracují s vytvořenými zápisky a zkoušejí je poskládat do správné syntaxe. Studenti minule přišli na postup, jak zjistit rozdíl mezi dvěma tóny. V této aktivitě zkusí složit algoritmus, který pomocí podmínek vyhodnotí rozdíl mezi dvěma tóny, a podle toho vypíše, o jaký se jedná interval. Učitel může úlohu se studenty rozpracovat a vypracování uložit jako domácí úkol.
Zadání:
Sestav algoritmus, který vyhodnotí, kolik půltónů se nachází mezi zadanými tóny. Na základě toho napiš jednoduchý program, který pomocí podmínek if a elif vytvoří proměnnou interval, do které uložíš jméno daného intervalu. Na konci programu odešli na výstup print (interval).
1 půltón = malá sekunda
2 půltóny = velká sekunda
3 půltóny = malá tercie
4 půltóny = velká tercie
5 půltónů = kvarta
6 půltónů = zvětšená kvarta
7 půltónů = kvinta
8 půltónů = malá sexta
9 půltónů = velká sexta
10 půltónů = malá septima
11 půltónů = velká septima
12 půltónů = oktáva
Použij kód z minulého cvičení a rozšiř ho následujícím způsobem:
#Vytvoříme proměnnou scale, do které uložíme všechny tóny
#pomocí metody index vybereme z proměnné "scale" zadaný interval
tone1 = scale.index(x)
tone2 = scale.index(y)
#Vytvoříme proměnnou "vysledek", pomocí které spočítáme rozdíl mezi intervaly. Tím zjistíme, kolik je mezi tóny půltónů.
vysledek = tone2 - tone1
Postup:
Náš program z minula nám zjistí, kolik půltónů je mezi zadanými tóny v proměnných x a y.
V proměnné vysledek máme tedy uložené číslo. Např. vysledek = 3.
Utvoříme postupně podmínky, které nám ošetří všechny možné hodnoty výsledku. To znamená, že pakliže výsledek bude číslo 1–12, proměnná interval do sebe uloží jméno určitého intervalu.
Řešení:
if vypocet == 1:
interval = "malá sekunda"
elif vypocet == 2:
interval = "velka sekunda"
elif vypocet == 3:
interval = "mala tercie"
elif vypocet == 4:
interval = "velka tercie"
elif vypocet == 5:
interval = "kvarta"
elif vypocet == 6:
interval = "zvětšená kvarta"
elif vypocet == 7:
interval = "kvinta"
elif vypocet == 8:
interval = "malá sexta"
elif vypocet == 9:
interval = "velka sexta"
elif vypocet == 10:
interval = "mala septima"
elif vypocet == 11:
interval = "velka septima"
print(interval)
Hodnocení:
Student ukládá vytvořený kus kódu do poznámkového bloku a odesílá učiteli na e-mail. Učitel hodnotí, zda:
student pochopil větvení programu a jak ho zapisovat do syntaxe;
student dokázal vyřešit slovní úlohu;
proměnná interval obsahuje správný interval z tabulky ze zadání;
student našel jiné kreativní řešení zadaného problému.
Úloha 1: Vytvoř jednoduchý kód, který na základě porovnání hodnoty v proměnné vysledek utvoří proměnou interval, do které uloží jméno intervalu podle počtu půltónů.
Zkušenosti s použitím materiálu
Studenti narazí při prozkoumávání podmínek na různá řešení a chyby. Čím více program větvíme, tím více řešení můžeme získat. Tento kód funguje pouze na určení intervalů směrem nahoru. Pakliže je první interval vyšší než druhý, kód nebude fungovat správně. V dalších cvičeních se studenti seznámí s funkcí else, která jim pomůže ošetřit tyto nepředvídatelné vstupy.