KURZ: Logické matematické operace
- Podrobnosti
- PhDr. Tomáš Jakeš, Ph.D.
- Aktualizováno: 16.03.2014
- Zobrazení: 6421
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 Logic, který je umístěn v paletě Complete > Data.
POPIS BLOKU
Programový blok Logic obsahuje dva vstupní a tři výstupní konektory:
A - levý operand logické funce.
B - pravý operand logické funce.
Result - konektor vyjadřující výsledek operace.
PARAMETRY BLOKU
Operation: sekce, ve které volíme konkrétní logickou operaci, která se bude provádět. Blok 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 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 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 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
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í.
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; }
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 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 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; }
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 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
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; }