Informatika · sexta VI.A · D2 po 21. 9. · D1 st 23. 9.

Větvení a cykly

Program, který se rozhoduje a opakuje — na micro:bitu v MakeCode.

Algoritmizace na micro:bitu · hodina 3Mgr. Martin Gebhart · SG Kladno
Cíl: žák použije podmínku (i složenou), tři druhy cyklu a proměnnou jako počítadlo; přečte cizí program a předpoví jeho chování. Průběh: 1. hodina společně s tipováním a dvě úlohy (kostka, krokoměr), přestávka, 2. hodina samostatné úlohy ve třech úrovních. Prostředí makecode.microbit.org, program nahrávat na desku, ne jen simulátor.
Rozcvička · 3 minuty

Co tenhle program dělá?

po spuštění
nastav kroky na 0
opakuj stále
ukaž číslo kroky

Otázka

Co se stane, když nastav kroky na 0 přesuneme dovnitř bloku opakuj stále?

Odpověď: pořád by se nulovalo – displej by ukazoval jen 0. Tohle je nejčastější chyba: inicializace patří do „po spuštění“, ne do smyčky. Rozdíl „po spuštění“ (jednou) × „opakuj stále“ (pořád dokola) zopakuj nahlas.
Větvení

když … jinak

když stisknuto tlačítko A
když teplota (°C) < 10 tak
ukaž ikonu ❄
jinak
ukaž ikonu ☺

Pravidla

  • podmínka je šestiúhelník — vejde se jen tam, kde se ptáme
  • platí → větev když, neplatí → větev jinak
  • víc možností: jinak když (plus u bloku)
Ukaž naživo, jak se podmínka vkládá a jak se tlačítkem „+“ přidává „jinak když“. Teplotu simulátor umí měnit posuvníkem, na desce funguje čidlo v čipu.
Porovnávání

Šest otázek, na které jde odpovědět ano/ne

blokvýznam
=rovná se
≠nerovná se
< >menší, větší
≤ ≥menší nebo rovno, větší nebo rovno

Pozor

Hodnota se do podmínky čte v okamžiku, kdy program dojde k bloku.

Proto se podmínky dávají dovnitř „opakuj stále“ — ať se ptají znovu a znovu.

Krátce, 3 minuty. Připomeň jednotky: teplota ve °C, světlo 0–255, zrychlení v mg.
Složené podmínky

a · nebo · ne

amusí platit obě
tma a pohyb → rozsviť
nebostačí jedna
tlačítko A nebo B → start
neotočí odpověď
ne (je světlo) → tma
když úroveň světla < 50 a síla zrychlení > 1500 tak
ukaž ikonu ⚠
zahraj tón C5
Tohle je zárodek alarmu: tma a pohyb. Zeptej se, co by se stalo s „nebo“ místo „a“ (pípalo by i za světla při každém pohybu). Bloky „a / nebo / ne“ jsou v kategorii Logika.
Úloha A · 8 minut

Kostka

  1. Zatřeseš deskou → padne číslo 1–6.
  2. Padne 6 → navíc zahraj tón.
  3. Rozšíření: počítej, kolikrát padla šestka.

Bloky: když zatřeseno (Vstup), náhodné číslo od … do … (Matematika).

když zatřeseno
nastav hod na náhodné 1–6
ukaž číslo hod
když hod = 6 tak
zahraj tón C5
Pozor na past: „náhodné číslo od 0 do 6“ dává sedm možností včetně nuly. Rozšíření = proměnná sestky + „změň sestky o 1“ uvnitř podmínky, výpis na tlačítko B.
Cykly

Tři druhy opakování

opakuj 4×

Vím, kolikrát.

blikni čtyřikrát

opakuj dokud

Vím, dokdy.

dokud je tma

opakuj stále

Běží až do vypnutí.

hlavní smyčka zařízení

opakuj 4 krát
ukaž ikonu ❤
pauza 200 ms
smaž displej
pauza 200 ms

V textových jazycích jsou to for (opakuj N×) a while (opakuj dokud) — stejná myšlenka, jiný zápis.

Bez pauzy se blikání neuvidí – mikrokontrolér je rychlejší než oko. To je dobrý most k tomu, proč se v cyklu čeká. Zmiň i vazbu na textový zápis (for / while), ať mají spojení s plánem a s tím, co uvidí v jiných jazycích.
Proměnná + cyklus

Krokoměr

po spuštění
nastav kroky na 0
když zatřeseno
změň kroky o 1
ukaž číslo kroky

Proměnná

nastav hodnotu přepíše.

změň o k ní přičte.

Proměnná = pojmenovaná schránka na jedno číslo.

Krokoměr je vlastně počítadlo událostí. Zeptej se, proč je „nastav na 0“ v „po spuštění“ (jinak by se krok po kroku nulovalo).
Úloha B · 10 minut

Krokoměr s cílem

  1. Počítej kroky (zatřesení).
  2. Tlačítko A ukáže počet kroků.
  3. Při dosažení cíle (například 20) ukaž ☺ a zahraj melodii.
  4. Tlačítko B vynuluje počítadlo.

Kde je co

Vstup: když zatřeseno, když stisknuto A / B

Proměnné: nastav, změň o

Logika: když … tak

Hudba: začni melodii

Hlídej dvě chyby: podmínka na cíl mimo obsluhu zatřesení (nikdy se nevyhodnotí) a chybějící vynulování v „po spuštění“. Rychlejší pošli na bonus: počítat jen kroky nad prahem síly zrychlení.
Ukázka naživo

Teploměr s alarmem

opakuj stále
nastav t na teplota (°C)
když t > 25 tak
ukaž ikonu ⚠
zahraj tón A5
jinak
ukaž číslo t
pauza 1000 ms

Sledujte:

  • co dělá pauza s reakcí zařízení
  • proč měříme do proměnné a ne dvakrát ze senzoru
  • jak se program chová na desce proti simulátoru
Zahřej čidlo prstem nebo dechem – reakce trvá desítky sekund, čidlo je uvnitř čipu. V simulátoru jde teplota nastavit posuvníkem. Tohle je předloha pro příští hodinu (senzory) i pro IoT projekt.
Časté chyby

Čtyři věci, které to obvykle jsou

1 · Inicializace ve smyčce

„nastav na 0“ patří do po spuštění.

2 · Podmínka mimo smyčku

Zkontroluje se jen jednou a nikdy víc.

3 · Chybí pauza

Blikání ani zvuk nejsou vidět a slyšet.

4 · Simulátor ≠ deska

Senzory se na desce chovají jinak. Testuj na hardwaru.

Nech je doplnit pátou z vlastní zkušenosti – zapiš na tabuli, příští hodinu se k seznamu vrátíme u ladění.
Přestávka

5 minut

Pak samostatné úlohy.

2. hodina · samostatně

Tři úrovně

Základ

Semafor. Tlačítko A přepíná červená → oranžová → zelená a zase dokola.

Plus

Reakční hra. Po náhodné pauze se rozsvítí ikona, hráč tiskne A. Změř a ukaž čas.

Hvězda

Alarm. Tma a pohyb spustí zvuk; tlačítko A+B alarm vypne.

Hotovo → ukaž mi to na desce, ne v simulátoru. Kdo chce víc, připojí senzor z IoT sady a podmínku postaví na něm.

Reakční hra potřebuje „běžící čas (ms)“ z Vstupu. Semafor je zárodek stavového automatu – proměnná stav 0/1/2, což je téma za tři hodiny. Kdo má všechno, může zkusit dvě desky a rádio (předehra k listopadu).
Hodnocení

Průběžná známka

1Základ + Plus fungují a je i Hvězda nebo vlastní rozšíření
2Základ + Plus fungují
3Základ funguje

Program ulož jako prijmeni-semafor a sdílej odkaz do Učebny.

Stupnici uprav podle třídy. V MakeCode jde projekt sdílet odkazem (Sdílet) nebo stáhnout jako .hex – vyber jednu cestu a drž ji celý rok.
Shrnutí

Čtyři věty na cestu

  1. po spuštění se stane jednou, opakuj stále pořád dokola.
  2. Podmínka je otázka ano/ne; složená používá a, nebo, ne.
  3. opakuj N× (for), když vím kolikrát; opakuj dokud (while), když vím dokdy.
  4. Proměnná si pamatuje hodnotu mezi průchody — proto umí počítat.

Příště: rozdělení problému na části — vlastní bloky nad senzory desky a IoT sady.

Exit otázka ústně: kde v krokoměru je proměnná, podmínka a cyklus? Příští hodina podle plánu: rozdělení problému na části – vlastní blok (funkce) s parametrem a návratovou hodnotou na měřicím programu.