IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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é vo for cykloch 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ášho for cyklu. Keď nastane situácia, že nami vytvorená podmienka platiť nebude, cyklus skončí a program pokračuje ďalej. V našom prípade for cyklus prestane fungovať, keď premenná i bude 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 cyklu for, ich funkčnosť zostane rovnaká. V našom prípade zvýšime vždy po každom cykle premennú i o číslo 1.
Ako môžeme vidieť, syntax 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.


 

Predchádzajúci článok
Podmienky a ich použitie
Všetky články v sekcii
Arduino - Programovací jazyk
Preskočiť článok
(neodporúčame)
Čítanie užívateľských vstupov v Arduine
Článok pre vás napísal Dominik Němeček
Avatar
Užívateľské hodnotenie:
2 hlasov
Autor se věnuje programování mikropočítačů Arduino.
Aktivity