6. diel - Cykly a ich syntax a použitie
Predchádzajúca lekcia, Podmienky a ich použitie , nás naučila pracovať s podmienkami a zákernosťami vetvenia programu.
Už sme si predstavili podmienky a povedali sme si, prečo sa bez nich nezaobídeme. Rovnako dôležité sú aj cykly. Nájdeme ich prakticky v každom dobre optimalizovanom kóde. Cykly slúžia nielen k lepšej prehľadnosti kódu, ale dokonca aj pracujú efektívnejšie, ako keby sme kód písali viackrát za sebou.
Cykly
Zrejme sme schopní odvodiť z názvu, že cyklus je niečo, čo sa opakuje v
nejakej slučke. Ukážeme rovno tri rôzne druhy cyklov a to for,
while a do-while. Podrobne si vysvetlíme, ako ktorý
cyklus funguje.
for
Prvý a najzákladnejší cyklus, ktorý si ukážeme bude for.
Tento cyklus je používaný najčastejšie, hlavne pre jeho prehľadnosť,
jednoduchosť a vopred určený počet priechodov. Počas cyklu for
sa menia postupne hodnoty, kým nenadobudne také, ktorú si prajeme. Cyklus
for sa skladá z troch hlavných častí - premenná,
podmienka a príkaz. Syntax takéhoto cyklu vyzerá nasledovne:
void setup() { Serial.begin(9600); // for cyklus - vložíme ho do setupu z toho důvodu, aby se nám for cyklus neustále neopakoval (loop jede neustále dokola) 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) } } void loop() { }
- Premenná (
int i = 0) - v tomto prípade vlastne určuje počiatočnú hodnotu cyklu. Najčastejšie to býva nula, pretože od tej sa najčastejšie začína. Premenné voforcykloch sa väčšinou značia písmenom i (index), ale pomenovanie je vás. - Podmienka (
i < 4) - nám udáva v akom prípade sa vykoná ďalší krok nášhoforcyklu. Keď nastane situácia, že nami vytvorená podmienka platiť nebude, cyklus skončí a program pokračuje ďalej. V našom prípadeforcyklus prestane fungovať, keď premennáibude väčšia, než číslo 4. - Príkaz (
i++) - tu hovorí, čo sa má s hlavnou premennou v cykle stať - konkrétne či sa má zvýšiť, alebo znížiť. K tomu využijeme operátorov++(inkrementácia) a--(dekrementácia). Tieto operátory samozrejme môžeme využívať aj mimo definície cyklufor, ich funkčnosť zostane rovnaká. V našom prípade zvýšime vždy po každom cykle premennúio číslo 1.
for cyklus je prehľadná a tiež
jednoduchá. Určite je to lepšia voľba, než kód nezmyselne viackrát
opisovať.
while
Ďalší cyklus, ktorý si vysvetlíme je while, ten funguje na
trochu inom princípe, než cyklus for. Išlo by si význam tiež
odvodiť z slovenského prekladu, kedy while znamená „zatiaľ
čo“. Tento cyklus nám teda hovorí, že príkaz uvedený v bloku sa opakuje
pokiaľ platí podmienka.
Syntax while je vlastne ešte jednoduchšie, než u
for. V zátvorke vedľa while je podmienka a pod ňou
už je len zátvorkami označený blok, v ktorom sú všetky príkazy. Cez
cyklus while je možné urobiť aj cyklus for,
pretože for je vlastne taký prípad while.
While cyklus sa ale často používa na trochu iné veci, ktorých
príklad si tiež ukážeme. V praxi môže využitie tohto cyklu vyzerať
nasledovne:
bool stav_cyklus = true; // Proměnná, která může mít 2 stavy - true/false --> určuje nám funkci while cyklu void setup() { Serial.begin(9600); // While cyklus, je zde podmínka, která když bude platit, tak cyklus bude probíhat (v našem případě neskončí) while (stav_cyklus == true) { Serial.println("While cyklus probíhá"); // Výpis textu do sériového monitoru } } /* * Programová smyčka */ void loop() { }
Môžete vidieť, že náš cyklus vkladáme do funkcie
void setup(), je to z toho dôvodu, aby sme si ukázali funkčnosť
samotného while cyklu. Keby sme cyklus vložili do funkcie
void loop(), tak neuvidíme žiadny rozdiel. Je to z toho dôvodu,
pretože void loop() je tiež taký cyklus a neustále sa
opakuje.
Potom až budeme robiť zložitejšie programy, tak budeme pracovať
primárne s void loop() funkciou, kde sa bude odohrávať
väčšina nášho kódu. Tento cyklus sa potom dá hojne využívať pri práci
s tlačidlami alebo LED, ale o tom sa dozviete viac v kurze Arduino - Hardware. Tento článok
slúži primárne na to, aby sme si ukázali aké možnosti budeme potom
využívať.
do-while
Posledným cyklom, ktorý si dnes spomenieme je cyklus do-while.
Tento cyklus je veľmi podobný predošlému while cyklu. Zásadný
rozdiel medzi nimi je ale ten, že v cykle do-while je podmienka
umiestnená až na konci cyklu. Tým máme zaistené, že sa ľubovoľný cyklus
vykoná aspoň raz.
Syntax do-while je tiež pomerne jednoduchý, prvá časť cyklu
je do, Ktorý sa, ako už sme si povedali vykoná minimálne
jedenkrát. Po príkaze alebo bloku príkazov v cykle nasleduje na konci
kľúčové slovo while s podmienkou, ktorá je po vykonaní akcie
skontrolovaná. Keď sa podmienka vyhodnotí ako neplatná, je cyklus
preskočený. Pokiaľ je podmienka platná, cyklus sa opakuje rovnako ako pri
while.
Rovnako ako pri predchádzajúcich cykloch, aj tento si teraz ukážeme v
praxi. Tu môžeme vidieť využitie do-while cyklu:
bool stav_cyklus = true; // Proměnná, která může mít 2 stavy - true/false --> určuje nám funkci while cyklu // Funkce setup() - proběhne jednou, poté se už neopakuje void setup() { Serial.begin(9600); // Baudova rychlost - nastavíme na 9600 --> slouží pro komunikaci na sériovém monitoru do { Serial.println("Do-while cyklus probíhá"); // Výpis textu do sériového monitoru } // Do-while cyklus - proběhne jednou a pak se zkontroluje, zda platí podmínka, pokud ne --> cyklus je přeskočen while (stav_cyklus == true); } // Funkce loop() - neustále se opakuje void loop() { }
Hoci cyklus do-while nie je tak používaný ako
while, alebo for, v nejakých situáciách môže byť
vhodnejšie.
Na záver je určite dobré spomenúť, že s cyklami sa toho dá vymyslieť oveľa viac, ale na začiatok je toto dostačujúce. Nechceme vás hneď na začiatku preťažiť a zmiasť s nadmierou syntaxe!
Prebrali sme si teda tri cykly av akých prípadoch ich používať. Dúfame, že vám táto kapitola bola nápomocná a niečo ste si z nej odniesli.
V budúcej lekcii, Čítanie užívateľských vstupov v Arduine , si predstavíme základné funkcie na čítanie vstupných dát od užívateľa, povieme si, ktorú použiť na čítanie rôznych dátových typov a vysvetlíme si, čo je to parsovanie.
