Condicionais, laços e switch em C e C++
Nesta lição, você vai combinar laços e a instrução switch em um pequeno programa que calcula a média e atribui um conceito.
Introdução
A instrução if escolhe um caminho com base em uma condição verdadeira ou falsa, switch trata casos com valores distintos, e os laços repetem um bloco até chegar a uma condição de parada. A sintaxe dessas instruções é quase idêntica em C e C++.
Pontos importantes
- Ative os avisos do compilador (compiler warnings) e corrija todos eles.
- Entenda o tipo de dado e o tempo de vida (lifetime) de cada valor.
- Sempre valide os dados de entrada e os limites dos índices de arrays.
Veja como funciona
Mova o controle para mudar a nota. O fluxograma ilumina o caminho que o programa segue e a linha de código correspondente fica destacada.
Exemplos de código C e C++
#include <stdio.h>
int main(void) {
int scores[] = {92, 71, 84};
int total = 0;
for (int i = 0; i < 3; ++i) total += scores[i];
int average = total / 3;
switch (average / 10) {
case 10: case 9: puts("Grade A"); break;
case 8: puts("Grade B"); break;
default: puts("Keep practicing");
}
return 0;
}
Grade B
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores{92, 71, 84};
int total = 0;
for (int score : scores) total += score;
switch ((total / static_cast<int>(scores.size())) / 10) {
case 10: case 9: std::cout << "Grade A\n"; break;
case 8: std::cout << "Grade B\n"; break;
default: std::cout << "Keep practicing\n";
}
}
Grade B
Comparação entre C e C++
O laço for soma as três notas para calcular a média, e então switch usa average / 10 para escolher o conceito. Use sempre chaves, mesmo quando o bloco tem uma linha só, e lembre de colocar break no fim de cada case para que o programa não continue no case seguinte sem querer. O índice do array também precisa ficar sempre dentro dos limites.
C usa funções procedurais pequenas e deixa à vista como os dados ficam na memória.
C++ continua permitindo trabalhar em baixo nível, mas acrescenta tipos da biblioteca e abstrações mais seguras.
Exercícios práticos
Execute as duas versões e depois mude o código para observar a diferença de segurança que cada linguagem oferece.
- Teste entradas inválidas e valores nos limites.
- Compile com as flags -Wall -Wextra -Wpedantic para ativar mais avisos.
- Separe as declarações compartilhadas em um arquivo de cabeçalho e a implementação em outro arquivo.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- Letter Grade Turn a test score into a letter grade. Fácil
- Fizz Buzz Construa uma sequência usando divisibilidade por 3 e 5. Fácil
- Triangle Classification Classify three side lengths as invalid, equilateral, isosceles, or scalene. Fácil