UFLA

🎓 Aula 03

Estruturas Condicionais

Prof. Paulo Rettore

Universidade Federal de Lavras

GAC124 — Introdução aos Algoritmos

🎯 O programa pode escolher

❓ ➜ 💻
  • Comparar valores com operadores relacionais.
  • Combinar condições com operadores lógicos.
  • Usar if, if-else, else if e switch-case.
  • Resolver problemas com caminhos de decisão.

Uma condicional transforma uma pergunta em uma escolha do programa.

🔎 Comparações e lógica

PerguntaC++Exemplo
Igual?==idade == 18
Diferente?!=nota != 0
Maior / menor?> / <a > b
Inclui igualdade?>= / <=nota >= 60

Resultado

Toda comparação produz true ou false.

⚠️ Cuidado

= atribui um valor; == compara dois valores.

☝️ If: uma ação opcional

if (nota >= 60) { cout << "Aprovado" << '\n'; }

Se for verdadeira

Executa o bloco entre chaves.

Se for falsa

Ignora o bloco e segue para o próximo comando.

Boa prática: use chaves { } mesmo com uma única instrução. O código fica mais seguro e legível.

🔀 If-else: dois caminhos

if (numero % 2 == 0) { cout << "Par" << '\n'; } else { cout << "Ímpar" << '\n'; }

Condição

numero % 2 == 0

Verdadeiro

Executa o bloco do if.

Falso

Executa o bloco do else.

Depois da escolha, o programa continua no próximo comando.

🪜 Else if e aninhamento

if (nota >= 90) { cout << "Conceito A"; } else if (nota >= 60) { cout << "Aprovado"; } else { cout << "Reprovado"; }
  • As condições são testadas de cima para baixo.
  • O primeiro bloco verdadeiro é executado.
  • Uma condicional aninhada fica dentro de outra e precisa de uma nova pergunta clara.

Ordem importa: coloque primeiro as condições mais específicas.

🔗 Operadores lógicos na prática

and

Todas as condições devem ser verdadeiras.

or

Basta uma condição ser verdadeira.

not

Inverte o resultado da condição.

if (nota >= 60 and frequencia >= 75) { cout << "Aprovado"; }

A aprovação exige nota suficiente e frequência suficiente.

🎛️ Switch-case: escolhas por valor

switch (opcao) { case 1: cout << "Cadastrar"; break; case 2: cout << "Consultar"; break; default: cout << "Opção inválida"; }

case

Define o que fazer para cada valor.

default

Trata os valores que não correspondem a nenhum caso.

break

Evita executar os case seguintes.

Use switch com valores discretos, como int ou char. Para caracteres, use aspas simples: case '+':.

⚠️ Três cuidados importantes

01. Booleanos

Zero é falso; qualquer valor diferente de zero é verdadeiro. Prefira valor != 0.

02. Ponto flutuante

Evite igualdade exata após cálculos: abs(a - b) <= 0.000001.

03. Curto-circuito

Com and, um falso pode encerrar a avaliação; com or, um verdadeiro pode encerrá-la.

🧩 Desafio: classificar uma idade

Leia uma idade e informe a faixa correspondente:

Criança

Menor que 12 anos.

idade < 12

Adolescente

De 12 até 17 anos.

idade < 18

Adulto

Maior ou igual a 18 anos.

else

Dica: organize os intervalos antes de escrever as condições.

✅ Gabarito possível

int idade; cin >> idade; if (idade < 12) { cout << "Criança"; } else if (idade < 18) { cout << "Adolescente"; } else { cout << "Adulto"; }

Ideia-chave: a segunda condição só é testada se a primeira for falsa. Por isso, não foi necessário escrever idade >= 12.

🧩 Prática extra: validar uma nota

Leia uma nota e informe se ela é válida no intervalo de 0 a 100.

double nota; cin >> nota; if (nota >= 0 and nota <= 100) { cout << "Nota válida"; } else { cout << "Nota inválida"; }

Gabarito: a condição precisa combinar limite inferior e superior com and.

Prática online opcional: beecrowd ou C++ Shell.

Questão-exemplo: temperatura

Leia uma temperatura em Celsius e informe a classificação correspondente.

Faixa de temperaturaClassificação
Abaixo de 10 °Cmuito frio
De 10 °C até 20 °Cfrio
Acima de 20 °C e abaixo de 30 °Cagradável
De 30 °C até 40 °Cquente
Acima de 40 °Cmuito quente

Entrada: um número real em Celsius. Saída: a classificação da temperatura.

Solução da questão-exemplo

double temperatura; cin >> temperatura; if (temperatura < 10) { cout << "muito frio"; } else if (temperatura <= 20) { cout << "frio"; } else if (temperatura < 30) { cout << "agradavel"; } else if (temperatura <= 40) { cout << "quente"; } else { cout << "muito quente"; }

As condições são analisadas de cima para baixo. O primeiro teste verdadeiro determina a saída.

Duas formas de teste de mesa

1. Execução passo a passo

Acompanha uma única entrada na ordem em que o programa executa as instruções. Mostra o caminho percorrido, inclusive as condições falsas.

2. Vários testes em linhas

Coloca cada entrada em uma linha e usa colunas para as etapas da decisão. Facilita verificar vários intervalos e casos-limite.

Nas duas formas, significa que a condição não foi analisada porque uma condição anterior já era verdadeira.

Forma 1: passo a passo

Entrada analisada: temperatura = 25

EtapaInstrução ou condiçãoValorResultadoPróxima ação
1cin >> temperatura25Guardar 25.
2temperatura < 1025FalsoTestar o próximo else if.
3temperatura <= 2025FalsoTestar o próximo else if.
4temperatura < 3025VerdadeiroImprimir agradavel.
5Fim da cadeia25Não analisar as condições seguintes.

Saída: agradavel. Esta forma explica o caminho real de uma execução.

Forma 2: testes nas linhas

Cada linha representa uma execução independente; as colunas representam as condições do código.

Testett < 10t <= 20t < 30t <= 40Saída
1-5Vmuito frio
215FVfrio
310FVfrio
425FFVagradavel
535FFFVquente
641FFFFmuito quente
720FVfrio

Quando usar cada forma?

Passo a passo

  • Uma entrada específica.
  • Rastreamento da ordem das instruções.
  • Localização de erros no raciocínio.

Testes nas linhas

  • Várias entradas comparadas.
  • Verificação de intervalos.
  • Conferência de casos-limite.

A primeira forma mostra como o programa caminha; a segunda mostra quais situações foram testadas.

📚 Referências e materiais

Use estas fontes para consultas pontuais depois da aula:

Use as referências para conferir a sintaxe; os slides e as atividades da disciplina continuam sendo o caminho principal de estudo.

📌 Resumo da aula

  • Comparações produzem true ou false.
  • if, if-else e else if representam decisões.
  • and, or e not combinam condições.
  • switch-case organiza escolhas por valores discretos.
  • A ordem das condições e o break mudam o resultado.

Fonte resumida: material “IALG-03 — Estruturas condicionais”, produzido coletivamente por docentes do DAC/UFLA e disponibilizado sob licença Creative Commons Atribuição 4.0 Internacional.

PRÓXIMA AULA

⏭️ Próxima aula

Estruturas de Repetição

Prof. Paulo Rettore

GAC124 — Introdução aos Algoritmos