Fundamentos de C/C++

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++

C
Executar →
main.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;
}
Resultado da execução
Grade B
C++
Executar →
main.cpp
#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";
    }
}
Resultado da execução
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

C usa funções procedurais pequenas e deixa à vista como os dados ficam na memória.

C++

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.

Todos os desafios