Operadores Lógicos
Olá, gente doida,
Nos algoritmos as tomadas de decisões muitas vezes são cruciais para concluir seu desfecho. A tomada de decisão pode ser feita utilizando operadores relacionais, ou até mesmo da própria lógica para testar os dados. Hoje trago um pouco sobre testes de lógica, os quais utilizam operadores lógicos, e adiante apresentarei quatro tipos básicos e algumas combinações.
O esquema para se usar operadores lógicos é parecido com o esquema de se usar operadores relacionais, contudo, a principal diferença entre eles é que operadores lógicos operam sob tipos de dados lógicos.
Antes de continuar, vale lembrar, que como explicado em tipos de dados, os dados lógicos também podem ser representados por 1 e 0, ou Sim e Não, sendo 1 para Verdadeiro (Sim) e 0 para Falso (Não).
O esquema para se usar operadores lógicos é parecido com o esquema de se usar operadores relacionais, contudo, a principal diferença entre eles é que operadores lógicos operam sob tipos de dados lógicos.
Antes de continuar, vale lembrar, que como explicado em tipos de dados, os dados lógicos também podem ser representados por 1 e 0, ou Sim e Não, sendo 1 para Verdadeiro (Sim) e 0 para Falso (Não).
O operador AND (operador binário de conjunção: E ), compara se o valor do dado_a E o valor do dado_b são Verdadeiros. O AND tem resultado Verdadeiro em casos onde todos os valores dos dados comparados são Verdadeiros, caso contrário seu resultado será Falso. O operador AND normalmente é representado por &&. Sua tabela da verdade fica:
Um exemplo deste operador pode analisado na frase "Se possuir caro E combustível: viajarei", a qual o operador AND é utilizado, já que só é possível dirigir um carro comum quando se têm combustível. A partir da frase, pode-se montar o seguinte teste/pergunta:
-Possuo carro E combustível?;
Analisa-se então as possibilidades, associando-as com a tabela verdade do operador utilizado:
[dado_a] | Operador | [dado_b] | Resultado |
---|---|---|---|
1 | && | 1 | 1 |
1 | && | 0 | 0 |
0 | && | 1 | 0 |
0 | && | 0 | 0 |
Tabela 1: Operador "AND/E/&&". Fonte: Autoria própria. |
-Possuo carro E combustível?;
Analisa-se então as possibilidades, associando-as com a tabela verdade do operador utilizado:
Possuo veículo? | Operador | Possuo combustível? | Viajarei? |
---|---|---|---|
Sim | E | Sim | Sim |
Sim | E | Não | Não |
Não | E | Sim | Não |
Não | E | Não | Não |
Tabela 2: Exemplo - operador "AND/E/&&". Fonte: Autoria própria. |
O operador OR (operador binário de disjunção: OU ), compara se o valor do dado_a OU o valor do dado_b são Verdadeiros. O OU tem resultado Verdadeiro em casos onde qualquer um dos dados comparados possuem valores Verdadeiros, caso contrário seu resultado será Falso. O operador OR normalmente é representado por ||. Sua tabela da verdade fica:
[dado_a] | Operador | [dado_b] | Resultado |
---|---|---|---|
1 | || | 1 | 1 |
1 | || | 0 | 1 |
0 | || | 1 | 1 |
0 | || | 0 | 0 |
Tabela 3: Operador "OR/OU/||". Fonte: Autoria própria. |
-Têm suco OU refrigerante?;
Analisa-se então as possibilidades, associando-as com a tabela verdade do operador utilizado:
Têm suco? | Operador | Têm refrigerante? | Comprarei bebida? |
---|---|---|---|
Sim | OU | Sim | Sim |
Sim | OU | Não | Sim |
Não | OU | Sim | Sim |
Não | OU | Não | Não |
Tabela 4: Exemplo - operador "OR/OU/||". Fonte: Autoria própria. |
O operador XOR (ou-exclusivo: OU... OU... ), compara se OU valor do dado_a OU o valor do dado_b é Verdadeiros. O XOR tem resultado Verdadeiro em casos onde somente um dos dados comparados possuem valor Verdadeiros, caso contrário seu resultado será Falso. O operador XOR normalmente é representado por ^. Sua tabela da verdade fica:
[dado_a] | Operador | [dado_b] | Resultado |
---|---|---|---|
1 | ^ | 1 | 0 |
1 | ^ | 0 | 1 |
0 | ^ | 1 | 1 |
0 | ^ | 0 | 0 |
Tabela 5: Operador "XOR/OU...OU.../^". Fonte: Autoria própria. |
-Estou de olhos abertos OU estou de olhos fechados?;
Analisa-se então as possibilidades, associando-as com a tabela verdade do operador utilizado:
Estou de olhos abertos? | Operador | Estou de olhos fechados? | Possível? |
---|---|---|---|
Sim | OU... OU... | Sim | Não |
Sim | OU... OU... | Não | Sim |
Não | OU... OU... | Sim | Sim |
Não | OU... OU... | Não | Não |
Tabela 6: Exemplo - operador "XOR/OU...OU.../^". Fonte: Autoria própria. |
O operador NOT (operador unário: NÃO ), inverte o valor do dado ou resultado, de Verdadeiro para Falso, ou de Falso para Verdadeiro. O operador NOT normalmente é representado por !. Sua tabela da verdade fica:
[dado_a] | Operador | Resultado |
---|---|---|
1 | ! | 0 |
0 | ! | 1 |
Tabela 7: Operador "NOT/NÃO/!". Fonte: Autoria própria. |
-É mulher?;
Analisa-se então as possibilidades, associando-as com a tabela verdade do operador utilizado:
É mulher? | Operador | Alistamento é obrigatório? |
---|---|---|
Sim | Não | Não |
Não | Não | Sim |
Tabela 8: Operador "NOT/NÃO/!". Fonte: Autoria própria. |
O operador NOT também pode ser combinado com outros operadores lógicos, invertendo os resultados da tabela verdade do operador combinado (os resultados que seriam Verdadeiro se tornam Falso), podendo representar operadores como NAND, NOR e NXOR, como mostrado nas tabelas abaixo.
[dado_a] | Operador | [dado_b] | Resultado |
---|---|---|---|
1 | !(&&) | 1 | 0 |
1 | !(&&) | 0 | 1 |
0 | !(&&) | 1 | 1 |
0 | !(&&) | 0 | 1 |
Tabela 9: Operador "NAND/NÃO(E)/!(&&)". Fonte: Autoria própria. |
[dado_a] | Operador | [dado_b] | Resultado |
---|---|---|---|
1 | !(||) | 1 | 0 |
1 | !(||) | 0 | 0 |
0 | !(||) | 1 | 0 |
0 | !(||) | 0 | 1 |
Tabela 10: Operador "NOR/NÃO(OU)/!(||)". Fonte: Autoria própria. |
[dado_a] | Operador | [dado_b] | Resultado |
---|---|---|---|
1 | !(^) | 1 | 1 |
1 | !(^) | 0 | 0 |
0 | !(^) | 1 | 0 |
0 | !(^) | 0 | 1 |
Tabela 11: Operador "NXOR/NÃO(OU...OU...)/!(^)". Fonte: Autoria própria. |
Utilizando operadores lógicos e operadores relacionais, como >= (maior OU igual) e <= (menor OU igual), estes também podem ser representados por expressões como:
[expressao_a] | Operador | [expressao_b] | Resultado |
---|---|---|---|
(a > b) | || | (a == b) | a >= b |
(a < b) | || | (a == b) | a <= b |
Tabela 12: Operações lógicas com relacionais equivalentes. Fonte: Autoria própria. |
Foi utilizado:
-https://pt.wikipedia.org/wiki/Operador_l%C3%B3gico
-http://www.cristiancechinel.pro.br/my_files/algorithms/bookhtml/node45.html
Até breve!
Ficou ótima a explanação do conteúdo... 👏👏👏👏👏
ResponderExcluirMuito obrigado!!!! :D foi um ótimo exercício kkkk
Excluir