Aula 04 - Operadores Relacionais e Lógicos
Nesta aula vamos aprender como o programa em C compara valores e toma decisões. Esses operadores são muito usados em microcontroladores PIC para verificar botões, sensores, alarmes, níveis, temperaturas e estados de funcionamento.
1. O que são operadores?
Operadores são símbolos usados para realizar alguma operação dentro do programa. Na aula anterior vimos operadores matemáticos como soma, subtração, multiplicação e divisão.
Podemos classificar os operadores da linguagem C em sete categorias princinpais, sendo relacionais, atribuição, lógicos, aritméticos de memória e outros.
resultado = a + b;
Agora vamos estudar operadores usados para comparar valores e montar condições.
2. Operadores relacionais
Operadores relacionais comparam dois valores. O resultado da comparação pode ser verdadeiro ou falso.
- == igual a
- != diferente de
- > maior que
- < menor que
- >= maior ou igual a
- <= menor ou igual a
2.1. Operador de igualdade ==
O operador == verifica se dois valores são iguais.
if(temperatura == 30)
{
// Executa se temperatura for igual a 30
}
temperatura = 30; // Atribui o valor 30
if(temperatura == 30) // Compara se é igual a 30
{
// Condição verdadeira
}
2.2. Operador diferente !=
O operador != verifica se um valor é diferente de outro.
if(botao != 0)
{
// Executa se botao for diferente de zero
}
Esse operador pode ser usado para verificar se uma entrada digital mudou de estado.
2.3. Maior que e menor que
Esses operadores são muito usados com leituras analógicas, temperatura, nível, pressão e corrente.
if(nivel > 80)
{
// Nível alto
}
if(nivel < 20)
{
// Nível baixo
}
2.4. Maior ou igual e menor ou igual
Esses operadores incluem o valor limite na comparação.
if(temperatura >= 70)
{
// Temperatura em alarme alto
}
if(temperatura <= 10)
{
// Temperatura em alarme baixo
}
3. Operadores lógicos
Os operadores lógicos ou booleanos são utilizado para realizar conjunções, disjunções ou negações entre elementos em um teste condicional. Os operadores lógicos somente podem resultar em um dos valores: verdadeiro ou falso
- && E lógico
- || OU lógico
- ! NÃO lógico
3.1. Operador E lógico &&
O operador && exige que todas as condições sejam verdadeiras.
if(temperatura > 70 && motor_ligado == 1)
{
// Executa se a temperatura estiver alta
// e o motor estiver ligado
}
Exemplo prático: só gerar alarme de temperatura se a máquina estiver ligada.
3.2. Operador OU lógico ||
O operador || executa a condição se pelo menos uma das condições for verdadeira.
if(falha_sensor == 1 || emergencia == 1)
{
// Executa se houver falha no sensor
// ou se a emergência estiver acionada
}
Exemplo prático: desligar uma saída se qualquer condição de segurança for acionada.
3.3. Operador NÃO lógico !
O operador ! inverte o estado lógico de uma condição.
if(!botao)
{
// Executa se botao for igual a zero
}
Esse operador aparece bastante quando uma entrada trabalha em lógica invertida, por exemplo com resistor de pull-up.
3.4. Exemplo simples com botão
Imagine uma variável que representa o estado de um botão:
unsigned char botao = 1;
if(botao == 1)
{
// Botão acionado
}
else
{
// Botão desligado
}
3.5. Exemplo com sensor de nível
Agora vamos comparar um valor de nível:
unsigned char nivel = 85;
if(nivel >= 80)
{
// Nível alto
}
4. Exemplo prático aplicado ao PIC
O código abaixo demonstra uma lógica simples para acionar uma saída quando uma condição for verdadeira.
#include <xc.h>
void main(void)
{
unsigned char temperatura = 75;
unsigned char motor_ligado = 1;
while(1)
{
if(temperatura >= 70 && motor_ligado == 1)
{
// Aqui futuramente poderemos ligar um LED de alarme
// ou acionar uma saída digital do PIC
}
}
}
5. Erro comum: usar = no lugar de ==
Esse é um dos erros mais comuns para quem está começando.
if(botao = 1)
{
// Errado para comparação
}
O correto é:
if(botao == 1)
{
// Correto
}
6. Tabela resumo
- a == b: verifica se a é igual a b.
- a != b: verifica se a é diferente de b.
- a > b: verifica se a é maior que b.
- a < b: verifica se a é menor que b.
- a >= b: verifica se a é maior ou igual a b.
- a <= b: verifica se a é menor ou igual a b.
- condicao1 && condicao2: as duas condições precisam ser verdadeiras.
- condicao1 || condicao2: pelo menos uma condição precisa ser verdadeira.
- !condicao: inverte o resultado da condição.
7. Resumo da aula
- Operadores relacionais comparam valores.
- Operadores lógicos combinam condições.
- == compara igualdade.
- = atribui valor.
- && significa E.
- || significa OU.
- ! significa NÃO.
Exercícios de Fixação
- Qual operador é usado para comparar se dois valores são iguais?
- Qual a diferença entre = e ==?
- Quando usamos o operador &&?
- Quando usamos o operador ||?
- Crie uma condição para verificar se a variável nivel é maior ou igual a 80.
Respostas sugeridas
// 1. Operador de igualdade
==
// 2. Diferença
// = atribui valor
// == compara valores
// 3. E lógico
if(temperatura > 70 && motor_ligado == 1)
{
// As duas condições precisam ser verdadeiras
}
// 4. OU lógico
if(falha == 1 || emergencia == 1)
{
// Uma das condições já é suficiente
}
// 5. Comparação de nível
if(nivel >= 80)
{
// Nível alto
}