V jazyku C používame 3 základné logické operácie AND (a, súčasne, zároveň), OR (alebo, jedno alebo druhé, ktorékoľvek z viacerých), NOT(nepravda, neplatí, negované). Ak chceme pochopiť význam logických operátorov je potrebné definovať pojem logický výraz.

Pod pojmom logický výraz rozumieme tvrdenieTvrdenie môže byť pravdivé alebo nepravdivé(0 /1; čierna/biela; True/False ...), nič medzi tým neexistuje. Napr. ak je volaná funkcia front_is_clear() tá môže vrátiť hodnotu 1-PRAVDA (áno vpredu je voľno) alebo 0-NEPRAVDA (vpredu nie je voľno). Rovnako to je aj s ostatnými senzormi robota Karla.

Takéto logické výrazy môžeme pomocou operátorov spájať do jedného výrazu, ktorý je potom použitý napríklad v podmienke príkazu if(). Napr. výraz "je vpredu voľno?" a súčasne "je otočený na sever?", resp. výraz "je vpredu voľno?" alebo "je otočený na sever?". Prvý výraz  je pravdivý iba ak je Karol ozaj otočený na sever a má voľnú cestu, naopak ten druhý výraz je pravdivý aj keď je odpoveď na jednu z otázok záporná.  

AND - &&

Logický výraz s týmto operátorom je pravdivý ak všetky tvrdenia sú pravdivé v opačnom prípade je nepravdivý.

// ak je vpredu voľno a zároveň je Karol otočený na západ, tak krok vpred
if( front_is_clear() && facing_west() )
{
	step();
}

OR - ||

Logický výraz s týmto operátorom je pravdivý ak aspoň jedno z tvrdení je pravdivé, v opačnom prípade je nepravdivý.

// ak je vpredu stena alebo je Karol otočený na západ, tak otočka vľavo
if( front_is_blocked() || facing_west() )
{
	turn_left();
}

NOT - !

Logický výraz s týmto operátorom je pravdivý ak tvrdenie za "!" je nepravdivý.

Logický výraz s týmto operátorom je nepravdivý ak tvrdenie za "!" je pravdivý.

// ak vpredu nie je voľno, tak otočka vľavo.  
if( !front_is_clear())
{
	turn_left();
}
  • No labels