Operadores Lógicos em C

Por: Eduardo Casavella

Os operadores lógicos são utilizados quando é necessário usar duas ou mais condições dentro da mesma instrução if para que seja tomada uma única decisão cujo resultado será verdadeiro ou falso.

Os operadores lógicos combinam condições simples em expressões lógicas.

O valor de retorno se uma expressão lógica é verdadeiro ou falso.

Os operadores lógicos são:
&&     (E)
||       (OU)
!        (NÂO)

Para o operador &&  (E) o resultado será verdadeiro caso todas as comparações sejam  verdadeiras.

Usando o operador || (OU) o resultado será verdadeiro bastando apenas uma das comparações ser verdadeira.

O operador lógico de negação ! (NÂO) é utilizado para inverter o resultado de uma determinada condição. Ou seja, se a condição for verdadeira esta torna-se falsa, e se a condição for falsa ela torna-se verdadeira.

De forma geral vamos ter algo assim:    (expressãoA) operador lógico (expressãoB)

O resultado dessa operação pode ser zero ou um:
0: indica que a operação é falsa
1: indica que a operação é verdadeira

Operador lógico &&

Vejamos agora um exemplo com operador lógico &&

#include <stdio.h>
int main (void)
{
   float nota_final, frequencia;
   printf("Digite a nota final do aluno: ");
   scanf("%f", &nota_final);
   printf("Informe a frequencia do aluno: ");
   scanf("%f", &frequencia); 
   //se(nota_final > 6.0 && frequencia >= 75) 
   if (nota_final > 6.0 && frequencia >= 75 ) 
     printf("Aluno aprovado \n"); 
   else 
     printf("Aluno reprovado \n"); 
  return (0); 
}

Neste caso o aluno será aprovado somente  se o resultado desta expressão lógica for verdadeiro:  (nota_final > 6.0 E frequencia >=  75), ou seja as duas condições tem que ser verdadeiras, a nota tem que ser maior ou igual a 6 e ao mesmo tempo a frequência tem que ser maior ou igual a 75. Caso estas duas condições sejam verdadeiras a operação lógica também retorna verdadeiro e neste caso imprime na tela que o aluno está aprovado. Caso contrário o aluno estará reprovado.

Veja na figura a seguir o fragmento de código referente ao teste da condição, e a seguir a tela com o resultado do programa ao ser executado com valores de entrada.

Com nota final = 7 e frequencia = 75 o aluno estará aprovado.

Agora o mesmo código sendo testando com os valores nota final = 7 e frequência = 60, neste caso o aluno reprova por frequência como podemos ver na tela do prompt.

Operador lógico ||

Em seguida vamos testar o operador lógico || usando um outro programa cujo objetivo é verificar se a temperatura se encontra em uma determinada faixa. A seguir temos o código fonte do programa em C.

#include <stdio.h>
int main (void)
{
   float limite_min = 5.0 , limite_max = 12.0, temperatura ;

   printf("Informe o valor da temperatura: ");
   scanf("%f", &temperatura); 

   if (temperatura > limite_max || temperatura < limite_min) 
      printf("Temperatura OK \n"); 
   else 
      printf("Alerta: Temperatura fora da faixa permitida!!! \n"); 

   return (0);
}

Podemos observar no código fonte que estamos testando duas condições.

Se

Veremos agora os testes executados para este programa com temperatura = 7

Agora testando com um valor de temperatura acima do limite máximo , por exemplo temperatura = 20, o programa mostra o alerta.

Operador lógico !

Neste exemplo vamos modificar o programa anterior negando a primeira comparação. Para fazer isto vamos acrescentar o operador ! na frente do parenteses que tem as comparações a serem testadas.

Teremos um teste assim:

Neste caso é preciso que seja invertida a lógica da exibição das mensagens.

#include <stdio.h>
int main (void)
{
   float limite_min = 5.0 , limite_max = 12.0, temperatura ;
   printf("Informe o valor da temperatura: ");
   scanf("%f", &temperatura);

   //se(temperatura > limite_max OU temperatura < limite_min)
   if (!(temperatura > limite_max || temperatura < limite_min))
     printf("Alerta: Temperatura fora da faixa permitida!!! \n");
   else
     printf("Temperatura OK \n");

   return (0);
}

Neste código basicamente invertemos o programa anterior acrescentando o operador ! na condição de tal forma que estamos invertendo seu resultado e portanto precisamos inverter também o que será exibido na tela.

Então vamos testar com uma temperatura acima do limite máximo por exemplo: temperatura = 16.

Como esperado exibiu que a temperatura está fora da faixa permitida. Tudo OK.

Agora vamos testar para um valor abaixo do mínimo usando a temperatura = 4.

Também mostrou o resultado esperado.

Agora para finalizar vamos colocar um valor na faixa permitida.

Para uma entrada com temperatura = 10 o programa retorna Temperatura Ok, portanto o resultado está condizente com o esperado para esta condição.

É importante sempre realizar os testes com cada possibilidade para garantir que não cometemos erros no código, pois é fácil errar um sinal e acabar gerando um resultado não correto.

Espero que tenham gostado do post.

Até a próxima!

Para saber mais sobre operadores veja:

http://linguagemc.com.br/operadores/

 

Uma resposta a Operadores Lógicos em C