KURZ: Kontrola intervalů
- Podrobnosti
- PhDr. Tomáš Jakeš, Ph.D.
- Aktualizováno: 01.04.2014
- Zobrazení: 4798
V programování ne vždy pracujeme s konkrétní hodnotou nebo číslem. V některých případech potřebujeme pouze zjistit, zda číslo patří do určitého intervalu neboli číselného rozmezí. Jako příklad můžeme uvést situaci, ve které se určitá akce bude provádět pouze v případě, že intenzita světla v okolí měřená senzorem bude v rozmezí od 20 do 50. Často také potřebujeme pouze porovnávat dvě číselné hodnoty nebo hodnoty uložené v proměnné či konstantě. V obou programovacích prostředích se vyjádření rozmezí hodnot nebo jejich porovnávání provádí odlišným způsobem.
Kontrola intervalů V PROGRAMOVACÍch PROSTŘEDÍch
NXT-G
Bloky pro kontrolu intervalů a porovnání hodnot
Rozcestník
Kontrola intervalů
K zjišťování, zda se hodnota nachází uvnitř či vně rozmezí se v programovacím prostředí NXT-G používá blok Range, který je umístěn v paletě Complete > Data.
Blok Range obsahuje celkem 4 konektory pro propojení s dalšími bloky:
Lower Limit - nižší hodnota zadávaného rozmezí.
Upper Limit - vyšší hodnota zadávaného rozmezí.
Test Value - hodnota, u které chceme zjistit, zda je ve zvoleném rozmezí či nikoliv.
Yes/No - výstup logického datového typu, který vyjadřuje výsledek zjištění (zda je hodnota v rozmezí či nikoliv).
Parametry bloku
Operation: sekce, ve které si nejprve volíme, zda chceme zjistit, jestli je hodnota v rozmezí (Inside Range) nebo mimo něj (Outside Range). Následně si v polích označených A a B nastavíme rozmezí, u kterého tuto skutečnost chceme zjišťovat.
Test value: hodnota, u které se zjišťuje, zda je v zadaném rozmezí či nikoliv.
Porovnávání hodnot
Pro porovnávání dvou hodnot slouží v v NXT-G programový blok Compare, který je umístěn v paletě Complete > Data.
Programový blok Compare obsahuje celkem tři konektory pro propojení s dalšími bloky:
A - první hodnota sloužící k porovnání.
B - druhá hodnota sloužící k porovnání.
Result - výsledek porovnání.
Parametry bloku
Operation: sekce, ve které volíme nejprve operaci, kterou chceme provádět
- Less than - zjišťování, zda je číslo A nižší než číslo B,
- Greater than - zjišťování, zda je číslo A vyšší než číslo B,
- Equals - zjišťování, zda se číslo A a B rovnají či nikoliv.
V sekcích A a B zadáváme příslušné hodnoty. Výsledkem operace je logická hodnota, tedy True (Pravda) nebo False (Nepravda).
RobotC
Příkazy a metody
Rozcestník
Porovnání čísel nebo hodnot
V programovacím prostředí RobotC můžeme vyjadřovat vztah mezi hodnotami, proměnnými nebo výrazy pomocí následujících symbolů:
- větší (>),
- menší (<);
- rovno (=).
Příklad porovnání proměnných
Pomocí uvedených symbolů můžeme řídit různé činnosti robota. Na příkladu můžete vidět jak pomocí vyjádření vztahu mezi dvěma proměnnými určujeme, co se bude či nebude provádět. Nadeklarovali jsme si dvě proměnné. První se jmenuje vzdalenost a ukládá se do ní hodnota zjištěná ultrazvukovým senzorem. Druhá se jmenuje bezpecna_vzdalenost a je v ní uložena maximální povolená vzdálenost, na kterou se může robot k překážce přiblížit. Jeho chování poté řídíme v podmínce if(). Jakmile bude vzdálenost větší než bezpečná vzdálenost (vzdalenost > bezpecna_vzdalenost), může se robot stále pohybovat kupředu. V opačném případě se zastaví.
if (vzdalenost > bezpecna_vzdalenost) { motor[motorA]=50; motor[motorB]=50; } else { motor[motorA]=0; motor[motorB]=0; }
Příklad vyjádření intervalu
Jestliže potřebujeme v programování zajistit, aby se nějaký příkaz prováděl pouze při zjištění určitého rozpětí hodnot, použijeme opět symboly vyjadřující vztah mezi nimi. Níže můžete vidět příklad, ve kterém chceme, aby se žárovka světelné kostky rozsvítila v případě, že bude hodnota zjištěná světelným senzorem v rozmezí od 40 do 70. V podmínce tedy určíme, že příkaz bude prováděn v případě že hodnota bude větší než 40 (> 40) a zároveň také nižší než 70 (< 70). Potřebujeme, aby byly pro vykonání splněny obě tyto podmínky a proto použijeme logickou funkci AND. Jejím výsledkem je pravda v případě, že jsou splněny obě dvě podmínky. Příkaz tak nebude moci být vykonáván nikdy jindy, než jen v případě, že bude zjištěná hodnota v požadovaném rozmezí.
if (SensorValue(svetelny)>40 & SensorValue(svetelny)<70) { motor[motorA]=100; }