KURZ: Kontrola intervalů

  • Vytisknout

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 RangeDragged Range, který je umístěn v paletě Paleta Complete Complete > DataOperations Data.

 

Range blok

 

Blok RangeDragged Range obsahuje celkem 4 konektory pro propojení s dalšími bloky:

A Lower Limit - nižší hodnota zadávaného rozmezí.

B Upper Limit - vyšší hodnota zadávaného rozmezí.

Number Test Value - hodnota, u které chceme zjistit, zda je ve zvoleném rozmezí či nikoliv.

 genericLogic 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

Range

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 NumericComparisonDragged Compare, který je umístěn v paletě Paleta Complete Complete > DataOperations Data.

 

Compare blok

 

Programový blok NumericComparisonDragged Compare obsahuje celkem tři konektory pro propojení s dalšími bloky:

A A - první hodnota sloužící k porovnání.

B B - druhá hodnota sloužící k porovnání.

 genericLogic Result - výsledek porovnání.

 

Parametry bloku

Compare

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; 
 }
 
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 5.00 (1 hodnocení)