🚀 Capítulo 04: Operadores Aritméticos, Relacionais e Lógicos em C
🎯 Objetivos da Aula
Ao final desta aula, você será capaz de:
- Realizar cálculos matemáticos em C utilizando operadores aritméticos e de módulo (
%). - Utilizar operadores de incremento (
++) e decremento (--). - Construir expressões de comparação utilizando operadores relacionais (
==,!=,>,<,>=,<=). - Combinar condições complexas com operadores lógicos (
&&E,||OU,!NÃO).
🧠 1. Operadores Aritméticos e Precedência
Os operadores aritméticos realizam cálculos matemáticos fundamentais entre operandos numericos.
flowchart TD Op["Operadores Aritméticos em C"] --> Basicos["Básicos: + , - , * , /"] Op --> Modulo["Módulo (Resto da Divisão): %"] Op --> IncDec["Incremento / Decremento: ++ , --"] Modulo --> Mod_Ex["10 % 3 = 1 (Resto da divisão inteira)"] IncDec --> Inc_Ex["x++ (Incrementa +1) | x-- (Decrementa -1)"]
Precedência de Operadores Matemáticos:
- Parênteses
(): Avaliados primeiro. - Multiplicação
*, Divisão/e Módulo%: Precedência alta. - Soma
+e Subtração-: Precedência baixa.
⚖️ 2. Operadores Relacionais e Lógicos
Em C, não existe um tipo boolean nativo básico original (embora o C99 possua <stdbool.h>). O compilador avalia expressões lógicas retornando:
1(Verdadeiro / True) para qualquer valor diferente de zero.0(Falso / False) para zero.
Tabela de Operadores Relacionais e Lógicos
| Categoria | Operador | Significado | Exemplo (a = 10, b = 5) | Resultado em C |
|---|---|---|---|---|
| Relacional | == | Igual a | a == b | 0 (Falso) |
| Relacional | != | Diferente de | a != b | 1 (Verdadeiro) |
| Relacional | > | Maior que | a > b | 1 (Verdadeiro) |
| Lógico | && | E (AND) — Ambos verdadeiros | (a > 0) && (b > 0) | 1 (Verdadeiro) |
| Lógico | ` | ` | OU (OR) — Pelo menos um verdadeiro | |
| Lógico | ! | NÃO (NOT) — Inverte o valor | !(a > b) | 0 (Falso) |
💻 3. Prática Guiada: Validador de Aprovação em C
Vamos escrever o programa calculo_expressao.c que recebe duas notas e o percentual de frequência de um aluno e avalia se ele atinge os critérios de aprovação:
#include <stdio.h>
int main() {
float nota1 = 0.0f;
float nota2 = 0.0f;
float frequencia = 0.0f;
printf("Digite a Nota 1: ");
scanf("%f", ¬a1);
printf("Digite a Nota 2: ");
scanf("%f", ¬a2);
printf("Digite a Frequencia (em \n", frequencia);
printf(" Status Aprovado? : %d (1 = SIM, 0 = NAO)\n", aprovado);
printf("=========================================\n");
return 0;
}⚔️ 4. Desafios Práticos (Exercícios 30/50/20)
🥉 Nível Bronze (Fixação)
- Qual o resultado da expressão inteira em C:
17 % 5? - Explique a diferença entre o operador de atribuição
=e o operador relacional de igualdade==.
🥈 Nível Prata (Aplicação)
- Escreva um programa em C que leia um número inteiro e informe
1se o número for par e maior que zero, ou0caso contrário (dica: use o operador de resto%e o operador lógico&&).
🥇 Nível Ouro (Desafio)
- Escreva um programa que solicite a idade de um aluno e se ele possui autorização dos pais (
1para sim,0para não). Imprima1se o aluno puder participar da viagem (Critério: Idade OU Autorização do Pai ==1).
💡 Gabaritos Sanfonados de Resposta
💡 Ver Gabarito do Nível Bronze
17 % 5resulta em2(Pois 17 dividido por 5 é 3, com resto 2).- O
=atribui um valor à variável (ex.:x = 10;), enquanto o==compara se dois valores são iguais (ex.:if (x == 10)).
💡 Ver Gabarito do Nível Prata & Ouro (Código C)
#include <stdio.h>
int main() {
int numero = 0;
printf("Digite um numero inteiro: ");
scanf("%d", &numero);
int eParEPositivo = (numero % 2 == 0) && (numero > 0);
printf("E par e positivo? %d\n", eParEPositivo);
return 0;
}📚 Referências Teóricas Oficiais
- KERNIGHAN, Brian W.; RITCHIE, Dennis M.. A Linguagem de Programação C. 2ª Edição. Campus, 1989. Cap. 2 (Operadores e Expressões).
- ISO/IEC 9899:2018. C17 Language Specification — Expressions and Operators.
⬅️ Capítulo Anterior (Variáveis e Tipos) | Voltar ao Sumário | Próximo Capítulo (Condicionais) ➡️