KURZ: Logické matematické operace

Logické operace jsou využívány v mnoha oborech. Setkáme se s nimi v číslicové technice, řídících systémech a také v programování. Při použití logické operace zpracováváme dva operandy, které jsou logického datového typu. Jejich hodnota tedy může být buď True (pravda) nebo False (nepravda). Často jsou také označovány jako logická 1 a logická 0. Výsledkem logické operace je opět člen logického datového typu. Pravidla pro výsledek logické operace nám určuje Booleova algebra. Nejčastěji používané logické operace v programování jsou AND (logický součin), OR (logický součet) a NOT (negace). Nyní se podíváme na jejich využití a implementaci v programovacích prostředích NXT-G a RobotC.

Využití logických operací V PROGRAMOVACÍM PROSTŘEDÍ

NXT-G

Blok pro použití logických operací

Rozcestník


UMÍSTĚNÍ BLOKU

K použití logický matematických operací slouží v NXT-G programový blok BooleanOperationDragged Logic, který je umístěn v paletě Paleta Complete Complete > DataOperations Data.

logic block

 

POPIS BLOKU

Programový blok  BooleanOperationDragged Logic obsahuje dva vstupní a tři výstupní konektory:

A A - levý operand logické funce.

B B - pravý operand logické funce.

 genericLogic Result - konektor vyjadřující výsledek operace.

 

PARAMETRY BLOKU

logic parametry 

Operation: sekce, ve které volíme konkrétní logickou operaci, která se bude provádět. Blok BooleanOperationDragged Logic umožňuje provádět operace: 

  • And (logický součin),
  • Or (logický součet),
  • XOr (exkluziv Or),
  • Not (negace).

V poli pod sekcí Operation si volíme, jakou logickou hodnotu mají mít jednotlivé operandy (True nebo False).

 

Logické funkce využívané v NXT-G

And

Výsledkem operace je True (pravda) pouze v případě, že oba operandy nabývají hodnoty True (pravda).

Vstup A Vstup B Výstup
0 0 0
0 1 0
1 0 0
1 1 1

 

Or

Výsledkem operace je True (pravda) právě tehdy, když alespoň jeden operand nabývá hodnoty True (pravda).

Vstup A Vstup B Výstup
 0 0
 0
 1
 1

 

XOr

Výsledkem operace je True (pravda) pouze v případě, že je pouze jeden z operandů roven True (pravda).

Vstup A Vstup B Výstup
 0
 0
 1
 1

 

Not

Logická funkce Not je negací vstupu. Výsledkem je tedy obrácená hodnota.

Vstup Výstup
1 0
0 1

 

RobotC

Příkazy a metody pro logické operace

V programovacím prostředí RobotC se logické operace zapisují pomocí speciálních symbolů. Využít zde můžeme následující tři:

  • AND (&),
  • OR (|),
  • Exkluziv OR (^).

Rozcestník


Praktické použití

Význam logický operací v programování si vysvětlíme na jednoduchém příkladu. Nadeklarujeme si dva dotykové senzory a budeme jimi ovládat dva motory za použití logických funkcí.

AND

Výsledkem operace je True (pravda) pouze v případě, že oba operandy nabývají hodnoty True (pravda).

Vstup A Vstup B Výstup
0 0 0
0 1 0
1 0 0
1 1 1

 

V případě, že použijeme logickou funkci AND pro vyjádření vztahu dvou příkazů zjistíme, že vzhledem k jejímu definování se motory spustí pouze v případě, že budou stisknuta obě dvě tlačítka. 

 
while(SensorValue(dotykovy) == 1 & SensorValue(dotykovy2) == 1) 
 {
 motor[motorB]=50;
 motor[motorC]=50;
 }
 

 

OR

Výsledkem operace je True (pravda) právě tehdy, když alespoň jeden operand nabývá hodnoty True (pravda).

Vstup A Vstup B Výstup
 0 0
 0
 1
 1

 

Pokud pro stejný příklad použijeme logickou funkci OR, postačí k roztočení motorů stisknutí pouze jediného tlačítka.

 
while(SensorValue(dotykovy) == 1 | SensorValue(dotykovy2) == 1) 
 {
 motor[motorB]=50;
 motor[motorC]=50;
 }
 

 

ExkluzivOR

Výsledkem operace je True (pravda) pouze v případě, že je pouze jeden z operandů roven True (pravda).

Vstup A Vstup B Výstup
 0
 0
 1
 1

 

V případě, že použijeme funkci ExkluzivOR, motory se roztočí pouze v případě, že bude stisknuté pouze jedno tlačítko. V ostatních případech zůstanou v klidu.

 
while(SensorValue(dotykovy) == 1 ^ SensorValue(dotykovy2) == 0) 
 {
 motor[motorB]=30;
 motor[motorC]=50;
 }
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

Nemáte oprávnění přidat komentář.
Komentáře mohou přidávat pouze registrovaní uživatelé, kteří neporušují pravidla diskuze.