Řídící struktury jazyka C ve vztahu k ovládání procesorů AVR Flashcards
Podmínky
Pokud chceme, aby se určitá část kódu provedla pouze v určitých případech, přicházejí na řadu podmínky. Existují tři základní struktury, které rozdělují program podle zadaných podmínek. V lidské řeči by se daly vyjádřit jako:
Pokud platí podmínka, udělej to a to.
Pokud platí podmínka, udělej to a to. Pokud neplatí, udělej to a to.
Pokud je hodnota proměnné xy, udělej to a to. Pokud je yz, udělej to a to. Pokud je xz, udělej to a to…
Než se však pustíme do psaní podmínek, musíme se podívat na způsob, jakým se dají v jazyce Wiring zadávat.
Porovnávací operátory
Porovnávací operátory slouží k zápisu podmínek. Jedná se o systém značek, které jsou pro počítač srozumitelné. Výsledkem porovnávací operace je logická hodnota true, nebo false. Rozlišujeme šest operátorů.
A == B - A je rovno B // Vrátí hodnotu true, pokud A má stejnou hodnotu, jako B
A != B - A není rovno B // Vrátí hodnotu true, pokud má A jinou hodnotu než B
A < B - A je menší než B // Vrátí hodnotu true, pokud je A menší než B.
A > B - A je větší než B // Vrátí true, pokud je A větší než B.
A <= B - A je menší nebo rovno B // Vrátí true, pokud je A menší nebo rovno B.
A >= B - A je větší nebo rovno B // Vrátí true, pokud je A větší nebo rovno B.
Složené podmínky
Někdy dospějeme do situace, ve které je potřeba pracovat s nějakou složitější podmínkou . K tomuto účelu slouží tzv. logické operátory. Můžeme si je představit jako definici vztahu mezi více porovnávacími operátory.
X && Y AND (konjunkce) // Výsledkem je true pouze v případě, když jsou true X i Y.
X || Y OR (disjunkce) // Výsledkem je true v případě, kdy je alespoň jedna z X a Y true.
!X (negace) // Výsledkem je true, pokud je X false a naopak.
if()
Ve většině programovacích jazyků se pro zápis podmínek používá slovo if. V jazyce Wiring je možné použít několik způsobů zápisu. Ty ale vždy začínají: if(podmínka)
else if()
Pokud chceme do podmínky přidat více možností, používá se zápis else if().
Else
K části else se nepíšou další podmínky. Slouží k určení příkazů, které se provedou, pokud ani jedna z předchozích podmínek není splněna.
Switch
Switch je speciální druh podmínky. Speciální je v tom, že se zabývá pouze proměnnou a její hodnotou. Program prochází každou větev konstrukce switch a testuje hodnotu proměnné. Další rozdíl je v tom, že se může provést i více větví (což u if nelze). Pokud ale chceme, aby po provedení větve program pokračoval až za koncem konstrukce switch, musíme použít na konci větve příkaz break;
Cykly
Určitě jste se dostali do situace, kdy jste museli psát prakticky stejnou věc stále dokola, jen s menší obměnou (většinou to byla změna čísla).
Pokud se při programování stane, že se nám něco pořád opakuje, přicházejí na řadu cykly. Existují tři druhy cyklů. Ty si teď popíšeme a vysvětlíme si rozdíly mezi nimi. Než se ale pustíme do vysvětlování, ukážeme si složené operátory, které se v cyklech (a nejen tam) často používají.
Složené operátory
Anglicky nazývané compound operators jsou operátory, které nám usnadní práci. Zkracují totiž zápis operací, kdy upravujeme hodnotu pouze jedné proměnné. Popišme si je na příkladech.
Speciálním druhem těchto operátorů jsou x++ a x–. Ty použijeme tehdy, když chceme hodnotu proměnné snížit, nebo zvýšit pouze o 1.
Cyklus while()
Podmínka na začátku cyklu
Cyklus do…while()
Cyklus do..while() se od while() liší pouze v tom, že se podmínky kontrolují až na konci. Dříve tedy dojde k provedení příkladů a poté až ke kontrole podmínek. Slovně: “Udělej něco, a když platí podmínky, vrať se na začátek. Jinak skonči.” V praxi to tedy znamená, že se tento cyklus provede minimálně jednou.
Cyklus for()
Tento cyklus se používá asi nejčastěji. Jedná se většinou o případy, kdy známe počet opakování cyklu. Také se od ostatních cyklů liší tím, že potřebuje mít pro svoji funkci vlastní proměnnou, která hlídá počet opakování.
Sériová komunikace
ok
Zahájení komunikace - Serial.begin()
Do závorek se píše parametr rychlosti této komunikace, který odpovídá počtu přenosů za sekundu. Při komunikaci s PC ale tato rychlost není pouze na našem výběru. Může mít jen několik vyhrazených hodnot (300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 a 115200). Nejčastěji se používá hodnota 9600. Funkce Serial.begin() se většinou volá v části setup.
Odeslání dat - Serial.print() a Serial.println()
Tyto funkce slouží k odeslání hodnoty z Arduina do PC, nebo jiného zařízení. Liší se od sebe tím, že funkce Serial.print() posílá data stále na jednom řádku. Funkce Serial.println() vždy na konci odeslaných dat přidá znak pro zalomení řádku.
odesílá ASCII kód odesílaných znaků, který se poté v PC patřičně interpretuje V ASCII tabulce znaků má malé ‘a’ v desítkové soustavě hodnotu 97