Operadores Logicos

As estruturas de programação, como a estrutura de seleção e a estrutura de repetição podem mudar o comportamento de um código. Dependendo de como o código está montado essas estruturas permitem a execução (ou repetição) de parte do código apenas em determinadas situações. O que vai decidir se o código dentro daquela estrutura deve ser executado (como em estruturas de seleção) ou se deve ser repetido (como em estruturas de repetição) é seu parâmetro lógico.

Os parâmetros lógicos podem ser verdadeiros ou falsos, se forem verdadeiros a condição é cumprida e o código dentro da estrutura é executado (ou repetido, dependendo da estrutura), se não, aquela área do código é ignorada ou redirecionada.

Por exemplo:

Estrutura de seleção

SE chovendo ENTÃO
   ESCREVA("Melhor levar um guarda-chuva");

Estrutura de repetição

ENQUANTO chovendo FAÇA
   ESCREVA("Não vou sair de casa, ainda está chovendo");

ESCREVA("Finalmente parou de chover!");

Os exemplos acima possuem em seu parâmetro uma variável que pode ser verdadeira ou falsa, porem, os parâmetros lógicos também podem ser construídos como expressões aritméticas.

Por exemplo:

SE idade MENOR QUE 18 ENTÃO
   ESCREVA("Você é menor de idade!");
SE preço MAIOR OU IGUAL QUE 10 ENTÃO
   ESCREVA("Isso é bem caro!");
SE minhaIdade DIFERENTE QUE suaIdade ENTÃO
   ESCREVA("Não temos a mesma idade!");

Apesar de toda flexibilidade no código que os parâmetros lógicos possibilitam, é fácil se perder usando-os e criando um código confuso e difícil de entender. Por exemplo:

SE(sol) ENTÃO
   SE (calor) ENTÃO
      ESCREVA("Maria vai ao parque! :) ");
SE(preço <= 10) ENTÃO
   ESCREVA("eu posso comprar isso")
SE NÃO
   SE(dinheiro > 10) ENTÃO
      escreva("eu posso comprar isso")

Para isso possuímos operadores lógicos:

Operador 'E'

O operador 'E', também chamado de conjunção, funciona como a palavra 'e', fornecendo a intercessão entre dois elementos. Para a condição ser cumprida os dois elementos precisam ser verdadeiros. Por exemplo: "Maria vai ao parque se estiver sol e calor", nesse exemplo Maria vai ao parque apenas se as duas condições forem cumpridas, se houver sol mas não estiver calor ou se não houver sol mas estiver calor Maria não vai ao parque.

//TABELA VERDADE

Maria vai ao parque?
Sol CalorEla vai ao parque?
SimSimSim
SimNãoNão
NãoSimNão
NãoNãoNão
Pseudocódigo            
                        
SE(sol E calor) ENTÃO
   ESCREVA("Maria vai ao parque! :) ");
SE NÃO
   ESCREVA("Maria não vai ao parque! :( ");

________________________

Linguagem C

if(sol && calor){
   printf("Maria vai ao parque! :) ");
}else{
   printf("Maria não vai ao parque! :( ");
}
________________________

C++

if(sol && calor){
   cout << "Maria vai ao parque! :) ";
}else{
   cout << "Maria não vai ao parque! :( ";
}
________________________

Python

if sol and calor:
   print('Maria vai ao parque! :) ')
else:
   print('Maria não vai ao parque! :( ')

Operador 'OU'

Diferente do operador lógico 'E' que necessita que ambos os parâmetros lógicos sejam verdadeiros para a condição ser cumprida, o operador 'OU' precisa que apenas um deles seja verdadeiro. Esse operador lógico só será falso quando ambos os parâmetros lógicos forem falsos.

A tarefa foi feita?
Eu fiz Você fez A tarefa foi feita?
SimSimSim
SimNãoSim
NãoSimSim
NãoNãoNão
Pseudocódigo            
                        
SE(euFiz OU voceFez) ENTÃO
   ESCREVA("A tarefa foi feita");
SE NÃO
   ESCREVA("A tarefa não foi feita");

________________________

Linguagem C

if(euFiz || voceFez){
   printf("A tarefa foi feita");
}else{
   printf("A tarefa não foi feita");
}
________________________

C++

if(euFiz || voceFez){
   cout << "A tarefa foi feita";
}else{
   cout << "A tarefa não foi feita";
}
________________________

Python

if euFiz or voceFez:
   print('A tarefa foi feita')
else:
   print('A tarefa não foi feita')


Operador 'NÃO'

Diferente dos outros operadores já citados esse operador necessita apenas de um parâmetro lógico para funcionar. A função desse operador é alterar a leitura do parâmetro lógico para seu valor inverso, se esse parâmetro possuir o valor 'verdadeiro', com esse operador, será se lido o valor 'falso', e se o parâmetro possuir o valor 'falso' será lido o valor 'verdadeiro'. Algumas das representações mais classicas do símbolo de negação são: ~, !, NOT, e ¬

Maria vai ao parque?
Valor ~Valor
SimNão
NãoSim
Pseudocódigo            
                        
SE(~sol) ENTÃO
   ESCREVA("Está escuro");

________________________

Linguagem C

if(!sol){
   printf("Está escuro");
}
________________________

C++

if(!sol){
   cout << "Está escuro";
}
________________________

Python

if not sol:
   print('Está escuro')


Combinação de operadores

Além de toda flexibilidade que os operadores lógicos nos trazem, existem uma outra propriedade que nos permite ir além, a combinação de operadores. Quando usamos um operador para retirar um valor de um ou dois parâmetros lógicos (port ex: está sol *e* calor) essa expressão retornará um parâmetro lógico, verdadeiro ou falso, com isso em mente podemos combinar operadores para analises mais complexas.

SE chovendo E !guardachuva ENTÃO
   ESCREVA("Não posso sair, vou me molhar")


SE sol E calor E fimDeSemana ENTÃO
   ESCREVA("Hoje podemos ir à praia!")




Problemas