V minulé lekci jsme si ukázali, jak provádět matematické operace. V této lekci si ukážeme, jak snadněji napsat tento program.
název: B5 Počítáme do deseti II
kategorie: B mírně pokročilí
ref.číslo: B5
projekt: 10+10 dní s microbitem pro mírně pokročilé, lekce B5
verze: 01, 2017-04-03
autor: Ivo Obr, Lanškroun
V minulé lekci jsme si ukázali, jak provádět matematické operace. Protože jsme použili příkaz pro opakování typu “for”, v této lekci si tento příkaz vysvětlíme podrobně a ukážeme si stejném příkladu, jak snadněji napsat program.
V minulé lekci jsme příkaz “for” sice použili, ale příliš jsme si ho nevysvětlili. Při programování pomocí bloků jsme opakovali bloky uzavřené v kleštích bloku “for”. V MicroPython jsou “kleště” to, co je v následujících řádcích odsazeno od levého okraje o 4 sloupce doprava. Další řádek, který není odsazen už je mimo “kleští” tohoto příkazu. Tady budou uzavřeny ne bloky ale příkazy. Tyto odsazené příkazy budeme nazývat “tělo cyklu”.
for “řídící proměnná cyklu“ in “seznam nebo rozsah hodnot“ :
první odsazený příkaz, tady začíná tělo cyklu
………….
………….
poslední příkaz, který bude opakován , tady končí tělo cyklu
zde je další příkaz, který už není tělem cyklu
Rozdíl v cyklech “while” a “for” je ten, že u příkazu “while” ještě dopředu nevíme, kolikrát se bude cyklus opakovat, příkaz “for” je cyklus, u kterého je při jeho zavolání stanoveno, kolikrát se bude opakovat, a to pro jaké hodnoty řídící proměnné cyklu (dále ŘPC). Příkaz “while” žádnou řídící proměnnou nemá.
U příkazu “for” jsme napsali za slůvkem “in” něco, co bude rozsahem hodnot, které bude nabývat ŘPC (v našem případě jsme si její jméno stanovili “i”). Rozsah stanovíme slovem “range”, kde v připojené kulaté závorce uvedeme počáteční hodnotu ŘPC (první celé číslo), následuje čárka a druhé číslo udává horní mez, pro kterou už cyklus nebude opakován. Při každém cyklu se ŘPC zvýší automaticky o hodnotu jedna.
Rozsah hodnot pro ŘPC lze stanovit v příkazu “for” i dalšími způsoby ale o tom až jindy.
My si teď budeme psát program pro příklad z lekce A5, který vidíte na obrázku vpravo. Ušetřili jsme si výpočet a to přičítání jedničky do proměnné “pocitadlo”. Toto přičítání jedničky za nás udělá příkaz cyklu “for”, který bude při každém průchodu zvyšovat hodnotu ŘPC o hodnotu jedna. Protože už jsme mírně pokročilí, zrovna si naprogramujeme to, aby se nám výpis čísel od nuly do devíti opakoval stále dokola. V blokovém editoru to byl příkaz “forever” nebo příkaz “while true”, my použijeme příkaz cyklu, který se stále opakuje a to :
while True:
Za dvojtečkou výše uvedeného příkazu bude tělo cyklu “while”, a to musí být odsazeno o čtyři sloupce směrem doprava. V našem případě je to příkaz cyklu “for”. Ten však má také své tělo cyklu a to jsou dva příkazy “display.show()” a “sleep”. Tyto dva příkazy, aby byly tělem cyklu “for” musí být odsazeny oproti příkazu cyklu “for” také o čtyři sloupce. Obrázek, jak má program vypadat:
Všimněte si ještě, že v blokovém programu máme v bloku “for” hodnoty 0 a 9, v MicroPythonu 0 a 10. Každý programovací jazyk má svoji gramatiku a svá nastavení. Nelze jen slepě přepisovat z jednoho do druhého, ale musíme tuto gramatiku znát, abychom neudělali chybu.
Použití programu s cyklem “for” si ukážeme ještě na jiném příkladu. Budeme postupně rozsvěcovat a zhasínat Led diody na displeji a to v hlavní úhlopříčce, tedy na adresách (0,0) až (5,5).
Program už není třeba vysvětlovat, vyzkoušejte si ho sami. Vypadá takto :
Pokud máte problém s vysvětlením jak funguje program, vraťte se k lekci A5 a pozorně si přečtěte konec této lekce, kde je program rozebrán.
Umět programovat není jen umět napsat program, ale také číst a rozumět programům, které napsal někdo jiný. Pokud je program od jiného autora průběžně komentován ve zdrojovém textu, je to vždy podstatně snadnější, než když je program bez komentářů. Pokud budete psát delší a složitější programy, doporučuji Vám, komentáře – poznámkové řádky vkládat do zdrojového textu programu. Ono to usnadní práci hlavně Vám, až se budete k programu vracet a budete ho dále rozšiřovat, nebo jinak měnit.
Na závěr Vám v následujícím obrázku dávám nekomentovaný (krátký) program, kterému se snažte porozumět. Pokud budete mít potíže s jeho vysvětlením, napište si ho v MicroPython editoru a vložte do mikropočítače. Až uvidíte, co dělá, bude Vám už program jasný.
Úkoly této lekce :
- zkuste rozsvěcovat LED diody jen v nultém řádku.
- zkuste rozsvěcovat diody jen v prostředním (druhém) sloupci.
- pro chytré : zkuste nejprve LED diody rozsvítit v hlavní úhlopříčce a pak je následně nechat zhasínat. (nápověda: potřebujeme dva bloky “for”, jeden pro rozsvěcování bez zhasínání, druhý blok je bude zhasínat)