Řídící struktury jazyka C ve vztahu k ovládání procesorů AVR Flashcards

1
Q

Podmínky

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Porovnávací operátory

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Složené podmínky

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

if()

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

else if()

A

Pokud chceme do podmínky přidat více možností, používá se zápis else if().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Else

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Switch

A

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;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cykly

A

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í.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Složené operátory

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cyklus while()

A

Podmínka na začátku cyklu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cyklus do…while()

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cyklus for()

A

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í.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Sériová komunikace

A

ok

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Zahájení komunikace - Serial.begin()

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Odeslání dat - Serial.print() a Serial.println()

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Čtení dat - Serial.available() a Serial.read()

A

jak vlastně posílání dat vypadá na nejnižší úrovni?
Když do Arduina přijdou informace po sériové lince, nezpracovávají se hned, ale jsou uchovány v bufferu “zásobníku”. Ten dokáže uchovat až 64 bytů. Čtení poté probíhá tak, že se vezme první byte z bufferu, zpracuje se procesorem, jeho místo se uvolní a uchované byty se posunou dopředu. Poté se vezme další byte, zpracuje se atd.
Když chceme Arduinu odeslat nějakou hodnotu, nejjednodušším způsobem je napsat ji do textového pole v horní části Serial monitoru. Jelikož se odesílá ASCII hodnota znaků, má každý znak (i čísla) vlastní byte paměti

17
Q

Čtení dat - Serial.available() a Serial.read()

A

Při spuštění následujícího skriptu a odeslání řetězce “AHOJ” z PC do Arduina budou v bufferu obsazené 4 byty (za každý znak jeden). Všimněme si, že při vícenásobném odeslání řetězce se počet bytů v bufferu zvětšuje, protože stále nedošlo ke zpracování předchozích dat.

18
Q

Ukončení komunikace - Serial.end()

A

Tato funkce se v praxi moc často nepoužívá. Při jejím volání ale dojde k ukončení sériové komunikace. Nepotřebuje žádný parametr.