Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

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é ve for cyklech 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šeho for cyklu. 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ě for cyklus přestane fungovat, když proměnná i bude 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 cyklu for, jejich funkčnost zůstane stejná. V našem případě zvýšíme vždy po každém cyklu proměnnou i o čí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í.


 

Předchozí článek
Řešené úlohy k 4.-5. lekci programovacího jazyka Arduina
Všechny články v sekci
Arduino - Programovací jazyk
Přeskočit článek
(nedoporučujeme)
Kvíz - Datové typy, podmínky a cykly v Arduinu
Článek pro vás napsal Dominik Němeček
Avatar
Uživatelské hodnocení:
89 hlasů
Autor se věnuje programování mikropočítačů Arduino.
Aktivity