Lekce 8 - Podmínky (větvení) podruhé: Vysílání zpráv ve Scratchi
V minulé lekci, Podmínky (větvení) ve Scratchi, jsme si ukázali, jak v našich programech využijeme podmínky a vytvořili jsme program, který podle zadaného věku určil, zda jsme dospělí.
V dnešním Scratch tutoriálu se naučíme skládat podmínky za pomoci logických operátorů. Následně se podíváme na využití zasílání zpráv a vytvoříme novou kalkulačku, kde si uživatel sám vybere početní operaci, která se má provést.
Skládání podmínek
Podmínky je možné skládat pomocí dvou základních logických operátorů.
Operátor A zároveň
Tato podmínka je splněna, pokud jsou splněny podmínky na obou stranách operátoru:
Operátor Nebo
Ke splnění podmínky nebo stačí, aby byla splněna podmínka alespoň na jedné straně:
Ve stejné skupině je ve vývojovém prostředí Scratche ještě operátor ne, který podmínku tzv. zneguje. To znamená, že pravdivou podmínku vyhodnotí jako nepravdivou a naopak.
Určení rozsahu čísel
Uveďme si jednoduchý příklad. Vyzveme uživatele, aby zadal číslo od
10
do 20
. Zadání poté program zkontroluje a
vypíše, zda proběhlo správně:

Podmínka v tomto kódu bude splněna, pokud uživatel nezadá číslo
menší než 10
ani číslo větší než 20
. V
takovém případě vypíše Zadal jsi správně
. Kdybychom
instrukce neposlechli, vypíše Zadal jsi špatně
.
Proč v dílčích podmínkách používáme místo uvedených
hodnot čísla 9
a 21
již víme. Je to stejný
případ, jako v našem programu
pro určení dospělosti 🙂
Když program spustíme, vidíme, že kočičák správně posoudí, zda jsme dodrželi zadání:

Operátory se pomocí vlepování do sebe dají samozřejmě kombinovat:

Tento kód, jak určitě vyčtete, by považoval za správná
buď čísla 10
- 20
,
nebo čísla 30
- 40
😉
Vysílání zpráv
I když to tak může znít, nebudeme teď komunikovat s marťany, ani si s nikým dopisovat 🙂 Vysílání zpráv ve Scratchi nám umožní skákat do různých menších programů. Tím si můžeme kód zpřehlednit. Vzpomeňme si na naši kalkulačku v prvních lekcích, která načetla dvě čísla a vypočítala všechny čtyři operace.
Nyní si vytvoříme novou kalkulačku, v níž si budeme chtít zvolit, kterou operaci má provést.
Kalkulačka s využitím podmínek
Bez vysílání zpráv bychom nejprve napsali:

V druhé části bychom pak doplnili podmínky pro všechny čtyři operace i pro případ, že uživatel zadá jiné číslo. A nakonec v bublinách připojili výpisy:

Po spuštění kalkulačky a zadání hodnot bude vypadat výstup takto:

Jak vidíme, kód je poměrně obsáhlý. Na začátku načteme klasicky dvě čísla. Potom nám kočičák řekne, jaké operace s nimi můžeme provádět. Zadáme číslo operace, kterou chceme vykonat a program podle toho určí výsledek. Ošetřili jsme také případ, že vybereme neplatný operátor 😉
Program by v tomto případě fungoval, i kdybychom použili jenom bloky když ... tak. Je ale zbytečné, aby se program ptal stylem: Je operátor 1? Ano. Je operátor 2? Ne. A tak dále, což je samozřejmě nesmysl 🙂 Hned po první odpovědi je už totiž jasné, že operátor je jedna. Bez bloku jinak by ale program takto pokračoval.
Kalkulačka s vysíláním zpráv
Nyní si zkusíme napsat ten samý kód pomocí zasílání zpráv. Použijeme stejný kód, jako u předchozí verze programu, jenom uděláme pár změn.
Přejdeme do bloků Události a přetáhneme si stranou čtyři bloky vyšli zprávu a čekej a po obdržení zprávy:

Potom si vytvoříme čtyři různé zprávy. Budou to zprávy plus, minus, krat a deleno. U bloků vyšli zprávu klikneme na rozbalovací roletku a potom na Nová zpráva, potom už pokračujeme jako při tvorbě proměnných:

Teď si dáme na stranu všechny bloky, kde nastavujeme proměnnou
vysledek
a místo nich nalepíme bloky, které vysílají
zprávy:

Nakonec nalepíme na bloky po obdržení zprávy bloky nastav
... na s proměnnou vysledek
, které jsme před chvílí z
podmínek dali stranou:

Když teď program spustíme, bude fungovat úplně stejně jako původní
kód. Možná si tedy říkáte, že použití bloků vyšli zprávu je
celkem zbytečné, protože jsme si do programu jenom přidali další bloky
navíc. A máte pravdu 😅 Co kdybychom ale místo pouhého nastavování
proměnné vysledek
chtěli vykonat dalších deset příkazů u
každého bloku? A co kdyby ty bloky nebyly čtyři (plus, mínus, krát,
děleno), ale bylo by jich třeba deset?
Představme si například, že tvoříme program, ve kterém si uživatel vybere jednu z deseti barev. My v něm následně necháme změnit barvu všech objektů v naší scéně s kočičákem. To už by nebyl jenom jeden blok kódu, ale rovnou třeba 15 pro každou barvu. Vynásobme to deseti barvami a dostaneme 150 bloků kódu, které by byly v programu někde pod sebou a my bychom je museli při úpravě složitě hledat. V takovém programu by už nebylo použití zpráv poměrně zbytečné jako v naší jednoduché kalkulačce, ale bylo by v podstatě nutností, abychom se z hledání bloků nezbláznili 😉
V následujícím cvičení, Řešené úlohy k 5.-8. lekci Scratche, si procvičíme nabyté zkušenosti z předchozích lekcí.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 24x (128.36 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch