Exercícios de C/C++ para iniciantes

Calculadora simples em C e C++

Nesta lição, você vai criar uma calculadora simples que executa a operação escolhida com a instrução switch.

Introdução

Uma calculadora simples recebe dois números e um símbolo de operação, como +, -, * ou /, e faz o cálculo correspondente. A instrução switch é ideal para isso, porque escolhe o caminho com base em um valor específico.

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.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>
int main(void) {
    int left = 12, right = 4, result = 0; char operation = '*';
    // Select the calculation from the operator.
    switch (operation) { case '+': result = left + right; break; case '-': result = left - right; break; case '*': result = left * right; break; case '/': result = left / right; }
    printf("%d %c %d = %d\n", left, operation, right, result);
}
Resultado da execução
12 * 4 = 48
C++
Executar →
main.cpp
#include <iostream>
int main() {
    int left = 12, right = 4, result = 0; char operation = '*';
    // Select the calculation from the operator.
    switch (operation) { case '+': result = left + right; break; case '-': result = left - right; break; case '*': result = left * right; break; case '/': result = left / right; }
    std::cout << left << ' ' << operation << ' ' << right << " = " << result << '\n';
}
Resultado da execução
12 * 4 = 48

Comparação entre C e C++

A instrução switch compara o caractere operation com cada case e faz o cálculo correspondente. Cada case termina com break para que o programa não continue no case seguinte. Com a operação '*', o resultado impresso é 12 * 4 = 48. Lembre que a divisão entre dois inteiros descarta a parte decimal.

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