Operadores Lógicos

Os operadores lógicos são usados para representar situações lógicas que não podem ser representadas por operadores aritméticos. Também são chamados conectivos lógicos por unirem duas expressões simples numa composta. Podem ser operadores binários, que operam em duas sentenças ou expressões, ou unário que opera numa sentença só.

O primeiro deles é o operador binário de conjunção ou e lógico, representado por $ \land$ ou AND. Quando duas expressões são unidas por este operador, a expressão resultante só é verdadeira se ambas expressões constituintes também são. Por exemplo ``chove e venta'' só é verdadeiro se as duas coisas forem verdadeiras, ``chove'' e também ``venta''. Se uma das sentenças não ocorrer, a sentença como um todo é falsa.

O segundo operador é o operador binário de disjunção ou ou lógico, representado por $ \lor$ ou OR. Neste caso, se qualquer uma das expressões constituintes for verdadeira, a expressão completa também será. Por exemplo, ``vou à praia ou vou ao campo'' é um sentença verdadeira caso qualquer uma das duas ações acontecer, ou ambas. É verdadeira, se eu for a praia e não ao campo, se eu for ao campo e não a praia e se eu for a ambos.

Para o caso em que deve-se garantir que somente uma das sentenças aconteça, define-se o operador ou-exclusivo, cujo símbolo é $ \oplus$ ou XOR. Como o nome diz, é semelhante ao operador ou com exclusividade na veracidade dos operandos, isto é, somente um dos operandos pode ser verdadeiro. No exemplo anterior, se o concectivo fosse o ou-exclusivo, a sentença composta só seria verdadeira se fosse à praia ou ao campo, mas não ambos.

O último dos operadores é o operador unário não lógico, representado por $ \lnot$ . Sua função é simplesmente inverter valor lógico da expressão a qual se aplica.

Exemplificando, considere a expressão

$\displaystyle (2<3) \land (5>1).
$

Tanto a parte $ (2<3)$ como $ (5>1)$ são verdadeiras, logo a expressão completa também é. A primeira parte é verdadeira e a segunda é verdadeira, logo toda a expressão é verdadeira. Na linguagem natural não damos tanta importância para a diferença entre e e ou. Se uma das partes fosse falsa, toda a expressão, ligadas por e, seria falsa. Outra maneira de avaliar o valor de uma expressão lógica é substituindo suas subexpressões por $ \mathbb{V}$ ou $ \mathbb{F}$ , assim
$\displaystyle (2<3)$ $\displaystyle \land$ $\displaystyle (5>1)$  
$\displaystyle \mathbb{V}$ $\displaystyle \land$ $\displaystyle \mathbb{V}$  
  $\displaystyle \mathbb{V}$    

O operador ou é complementar ao operador e. Ele indica que a primeira expressão pode ser verdadeira ou a segunda expressão pode ser verdadeira. Assim, desde que um dos operandos seja verdadeiro, toda a expressão é verdadeira. Considere a expressão
$\displaystyle (5<4)$ $\displaystyle \lor$ $\displaystyle (12>2)$  
$\displaystyle \mathbb{F}$ $\displaystyle \lor$ $\displaystyle \mathbb{V}$  
  $\displaystyle \mathbb{V}$    

Existe uma gama finita de possíveis valores resultantes das operações executadas com operadores lógicos, pois estes só podem assumir $ V$ ou $ F$ . O resumo destas operações é o que se chama tabela-verdade dos operadores lógicos e está apresentada na Tabela 4.4


Tabela 4.4: Tabela verdade dos operadores lógicos. $ P$ e $ Q$ são sentenças lógicas quaisquer.
$ \hspace*{2ex} P \hspace*{2ex}$ $ \hspace*{2ex} Q \hspace*{2ex}$ $ P\land Q $ $ P\lor Q $ $ P\oplus Q $ $ \lnot P $
$ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ...
$ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ...
$ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ...
$ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{F}
<tex2html_verbatim_mark>mathend000 ... $ \mathbb{V}
<tex2html_verbatim_mark>mathend000 ...


Ainda sobre os operadores relacionais, os operadores $ <>$ , $ >=$ e $ <=$ são redundantes, pois poderiam ser substituídos por uma composição de outros mais simples. Por exemplo,

$\displaystyle (x>=b) \Longleftrightarrow(x>b)\lor(x=b).
$

Da mesma forma,

$\displaystyle (x<=b) \Longleftrightarrow (x<b)\lor(x=b).
$

Ainda,

$\displaystyle (x<>b) \Longleftrightarrow (x<b)\lor(x>b).
$

Deste modo, somente os operadores $ >,<, =$ seriam suficientes para expressar todas as expressões lógicas relacionais.

root 2009-03-12