No artigo anterior em lógica de programação, vimos o que são operadores relacionais. Que têm esse nome por relacionarem dois valores de mesmo tipo primitivo e retornarem um valor lógico de verdadeiro ou falso obtido pela relação. E nesse mesmo artigo vimos que são operadores binários e que não podem ser utilizados como na matemática da forma (1 < x < 10) e sim (1 < x) e (x < 10). O que interliga essas duas operações relacionais é um operador lógico.
Operadores Lógicos
São quatro os operadores utilizados para a formação de novas proposições compostas a partir de proposições simples. Proposição é uma sentença lógica que podemos atribuir somente um valor, de verdadeiro ou falso. Você pode ler mais sobre lógica proposicional em Lógica Proposicional - Introdução. Os operadores lógicos são:
Operador | Função | Exemplos |
---|---|---|
e | conjunção | (a > b) e (a > c) |
ou | disjunção inclusiva | (3 = 5) ou (5 = 3 + 2) |
xou | disjunção exclusiva | VERDADEIRO xou FALSO |
nao | negação | nao VERDADEIRO |
Tabela Verdade dos Operadores Lógicos
Tabela verdade é o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações (V ou F), e um conjunto de operadores lógicos (Forbellone e Eberspächer, 2005).
Você pode ler detalhadamente sobre todas as tabelas verdades no artigo de Lógica Proposicional - Conectivo e Tabela Verdade. Aqui só será apresentado a ideia geral.
Conjunção e
Faz com que o resultado de um teste lógico se torne verdadeiro, somente se todas as condições também forem verdadeiras. Em algumas linguagens de programação é representado pelo operador "&&".
algoritmo "TabelaVerdadeE"
inicio
escreva(VERDADEIRO e VERDADEIRO)
escreva(VERDADEIRO e FALSO)
escreva(FALSO e VERDADEIRO)
escreva(FALSO e FALSO)
fimalgoritmo
SaídaVERDADEIRO
FALSO
FALSO
FALSO
Disjunção ou inclusivo
Faz com que o resultado de um teste lógico se torne verdadeiro, quando pelo menos uma condição é verdadeira. Em algumas linguagens de programação é representado pelo operador "||".
algoritmo "TabelaVerdadeOU"
var
inicio
escreva(VERDADEIRO ou VERDADEIRO)
escreva(VERDADEIRO ou FALSO)
escreva(FALSO ou VERDADEIRO)
escreva(FALSO ou FALSO)
fimalgoritmo
SaídaVERDADEIRO
VERDADEIRO
VERDADEIRO
FALSO
Disjunção ou exclusivo
Faz com que o resultado de um teste lógico se torne verdadeiro, somente se uma condição for verdadeira e a outra falsa. Também é chamado de xor (exclusive or) e em algumas linguagens de programação é representado pelo operador "^".
algoritmo "TabelaVerdadeXOU"
var
inicio
escreva(VERDADEIRO xou VERDADEIRO)
escreva(VERDADEIRO xou FALSO)
escreva(FALSO xou VERDADEIRO)
escreva(FALSO xou FALSO)
fimalgoritmo
SaídaFALSO
VERDADEIRO
VERDADEIRO
FALSO
Na Teoria dos Conjuntos, é conhecido como diferença simétrica, definido como tudo aquilo que pertence a união mas que não pertence a interseção. Você pode ler mais em Teoria dos Conjuntos - Diferença Simétrica.
Negação nao
Diferente de todos os operadores lógicos anteriores, que são binários, ou seja, que trabalham com dois operandos, o nao é um inversor lógico, portanto unário. Um nao VERDADEIRO é FALSO e um nao FALSO é VERDADEIRO. Em algumas linguagens de programação é representado pelo operador "!".
Na Teoria dos Conjuntos, é conhecido como complementar. Você pode ler mais sobre isso em Operações com Conjuntos parte 1.
Ordem de Precedência entre Operadores Lógicos
- Parênteses ( )
- Negação nao
- Conjunção e
- Disjunção inclusiva ou; Disjunção exclusiva xou
Em caso de empate, resolve-se da esquerda para a direita.
Operações Envolvendo Diversos Operadores
É possível utilizar muitos operadores em um teste lógico para se obter um valor verdade. Exemplo:
Em uma escola a média final de um aluno pode ir de 0 a 10. Com média entre 0 a 3, o aluno será reprovado; maior que 3 e menor que 6 resulta em exame e uma média maior ou igual a 6 resulta em aprovação desde que o aluno não tenha mais que 10 faltas.
Um aluno ficou de exame em uma disciplina na escola. Para passar nela, sua média mais a nota do exame deve ser maior ou igual a 12 e o aluno não pode ter mais de 10 faltas.
algoritmo "SituacaoAluno"
var
media, exame: real
faltas: inteiro
inicio
escreva("Média do aluno: ")
leia(media)
escreva("Faltas do aluno: ")
leia(faltas)
escreva("Nota do exame: ")
leia(exame)
se (media + exame >= 12) e (faltas <= 10) entao
escreva("APROVADO")
senao
escreva("REPROVADO")
fimse
fimalgoritmo
Note que nessa condição foram utilizados aritméticos, relacionais e lógicos. Qual a ordem de precedência entre eles então?
Ordem de Precedência entre Operadores em Geral
É uma convenção, a maioria das linguagens de programação seguem esta ordem, mas elas possuem mais operadores do que os que aprenderemos aqui em pseudocódigo, por isso é uma convenção. Em C por exemplo, existe o operador ternário "? :" e operadores compostos como o "+=", além de outros operadores que não pertencem a classificação a seguir como operadores de incremento e decremento. Mas retomando a ordem que convencionalmente é seguida:
- Parênteses
- Aritméticos
- Relacionais
- Lógicos
Se houver uma operação de atribuição, ela sempre será feita por último. Exemplo:
algoritmo "SituacaoAluno"
var
media, exame: real
faltas: inteiro
situacao: logico
inicio
media := 4
exame := 7
faltas := 5
situacao := (media + exame >= 12) e (faltas <= 10)
escreva(situacao)
fimalgoritmo
Qual será a saída? Vamos resolver:- situacao := (4 + 7 >= 12) e (5 <= 10) //Operadores aritméticos
- situacao := (11 >= 12) e (5 <= 10) //Operadores relacionais
- situacao := FALSO e VERDADEIRO //Operadores lógicos
- situacao := FALSO //Atribuição
FALSO
O que você aprendeu
Este artigo teve por objetivo apresentar os operadores lógicos, bem como sua utilização através do pseudocódigo, demonstrando sua importância e relacionando-os a outros assuntos importantes como Teoria dos Conjuntos e Lógica Proposicional. Você aprendeu:
- O que são operadores lógicos.
- Tabela verdade dos operadores lógicos.
- Ordem de precedência entre operadores lógicos.
- Operações com diversos operadores.
- Ordem de precedência entre operadores em geral.
Referência Bibliográfica
MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para Desenvolvimento de Programação de Computadores. 17. ed. São Paulo: Érica, 2005. 219 p.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Prentice Hall, 2005. 208 p.
Para citar esse artigo:
Comentários
Postar um comentário