Lekce 6 - Cykly, jejich syntaxe a použití
V předešlém cvičení, Řešené úlohy k 4.-5. lekci programovacího jazyka Arduina, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
V tomto tutoriálu programovacího jazyka pro Arduino se zaměříme na cykly. Najdeme je prakticky v každém dobře optimalizovaném kódu. Cykly slouží k lepší přehlednosti kódu. Pracují také efektivněji, než kdybychom kód psali vícekrát za sebou.
Cykly
Jak již samotné slovo cyklus napovídá, něco se bude opakovat. Když
chceme v programu nějakou činnost provést 100x, jistě nebudeme psát pod
sebe 100x ten samý kód. Místo toho jej vložíme do cyklu. Cyklů máme
několik druhů. V této lekci si dále vysvětlíme, kdy který použít.
Ukážeme si rovnou tři různé druhy cyklů, a to for,
while a do-while. Podrobně si vysvětlíme, jak
který cyklus funguje. Samozřejmě si ukážeme praktické příklady.
Cyklus for
Tento cyklus je používán nejčastěji, hlavně pro jeho přehlednost,
jednoduchost a předem určený počet průchodů. Podstatou cyklu
for je smyčka, která vykonává kód pro každou hodnotu
řídící proměnné. Cyklus for se tedy skládá ze tří
hlavních částí - proměnná, podmínka a příkaz. Ve smyčce for
nejdříve vytvoříme proměnnou. Poté za středníkem napíšeme podmínku,
která musí platit, aby se smyčka vykonala. Za poslední středník pak
přijde akce, která se po každém vykonání s proměnnou udělá. Syntaxe
takového cyklu tedy vypadá následovně:
void setup() { Serial.begin(9600); for (int i = 0; i < 4; i++) { Serial.println("Výpis pomocí for cyklu"); // Příkaz pro vypisování textu pomocí for cyklu (text se vypíše 4x) } } /* * Programová smyčka */ void loop() { }
- Proměnná (
int i = 0) - v tomto případě vlastně určuje počáteční hodnotu cyklu. Nejčastěji to bývá nula, jelikož od té se nejčastěji začíná. Proměnné veforcyklech se většinou značí písmenem i (index). - Podmínka (
i < 4) - nám udává, v jakém případě se vykoná další krok našehoforcyklu. Když nastane situace, že námi vytvořená podmínka platit nebude, cyklus skončí a program pokračuje dále. V našem případěforcyklus přestane fungovat, když proměnnáibude větší nebo rovno 4. - Příkaz (
i++) - zde říká, co se má s hlavní proměnnou v cyklu stát - konkrétně jestli se má zvýšit, nebo snížit. K tomu využijeme operátory++(inkrementace) a--(dekrementace). Tyto operátory samozřejmě můžeme využívat i mimo definici cyklufor, jejich funkčnost zůstane stejná. V našem případě zvýšíme vždy po každém cyklu proměnnouio číslo 1. 
Jak můžeme vidět, syntaxe for cyklu je přehledná a velmi
jednoduchá. Použití cyklu je určitě lepší volba, než celý kód
nesmyslně vícekrát opisovat.
Cyklus while
Další cyklus, který si vysvětlíme, je while. Funguje na
trochu jiném principu, než cyklus for. Slovo while v
češtině znamená "zatímco". Tento cyklus nám tedy říká, že příkaz
uvedený v bloku se opakuje tak dlouho, dokud platí vstupní podmínka.
Syntaxe while je vlastně ještě jednodušší, než u
for. V závorce vedle while je podmínka a pod ní už
je jen závorkami označený blok, ve kterém jsou všechny příkazy. Přes
cyklus while lze udělat i cyklus for, jelikož
for je vlastně takový případ while.
While cyklus se ale často používá na trochu jiné věci,
jejichž příklad si také ukážeme. V praxi může využití toho cyklu
vypadat následovně:
int pocetOpakovani = 0; void setup() { Serial.begin(9600); // Dokud bude podmínka platit, bude cyklus probíhat while (pocetOpakovani < 4) { Serial.println("While cyklus probíhá"); // Výpis textu do sériového monitoru pocetOpakovani++; } } /* * Programová smyčka */ void loop() { }
Náš cyklus opět vkládáme do funkce
void setup(). Kdybychom jej vložili do funkce
void loop(), neuvidíme stejně jako u cyklu for
žádný rozdíl.
Až budeme tvořit složitější programy, budeme pracovat primárně s
void loop() funkcí, v níž se bude odehrávat většina našeho
kódu. Tento cyklus se poté dá hojně využívat při práci s tlačítky nebo
LED, ale o tom najdeme více informací v kurzu Arduino - Hardware.
Cyklus do-while
Posledním cyklem, který si dnes zmíníme, je cyklus do-while.
Tento cyklus je hodně podobný předešlému while cyklu.
Zásadní rozdíl mezi nimi je ale ten, že v cyklu do-while je
podmínka umístěna až na konci cyklu. Tím máme zajištěno, že se
libovolný cyklus provede alespoň jednou.
Syntaxe do-while je také poměrně jednoduchá. První část
cyklu tvoří klíčové slovo do. Po něm následuje příkaz nebo
blok příkazů. Na konci je klíčové slovo while s podmínkou,
která je po provedení akce zkontrolována. Když se podmínka vyhodnotí jako
neplatná, cyklus skončí a kód programu pokračuje dalšími řádky. Pokud
je však podmínka stále platná, cyklus se opakuje stejně jako u
while.
Stejně jako u předešlých cyklů, i tento si teď ukážeme v praxi:
int pocetOpakovani = 0; void setup() { Serial.begin(9600); do { Serial.println("Do-while cyklus probíhá"); // Výpis textu do sériového monitoru pocetOpakovani++; } // Do-while cyklus - proběhne jednou a pak se zkontroluje, zda platí podmínka while (pocetOpakovani < 4); } /* * Programová smyčka */ void loop() { }
Ačkoliv cyklus do-while není tak často používaný jako
while nebo for, v určitých situacích může být
jeho využití vhodnější.
Probrali jsme si tedy tři cykly a v jakých případech je používat. Vědomosti z této lekce jsou podobně jako podmínky velmi důležité. Budeme je používat prakticky v každém projektu, který nás v budoucnu v praxi potká.
V následujícím kvízu, Kvíz - Datové typy, podmínky a cykly v Arduinu, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.
				