Fundamentos de C/C++

Laços for, while e do-while em C e C++

Nesta lição, você vai repetir tarefas com os laços for, while e do-while e controlar a repetição com break e continue.

Introdução

Os laços executam o mesmo bloco de código várias vezes. O for é ideal quando você sabe quantas repetições serão feitas, o while repete enquanto a condição for verdadeira, e o do-while sempre executa o corpo pelo menos uma vez antes de testar a condição.

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

Clique em Passo para executar o laço um passo de cada vez. Veja a condição sendo verificada, o corpo sendo executado e a tabela de rastreio crescendo linha a linha.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>

int main(void) {
    /* for: start; condition; step */
    for (int i = 1; i <= 5; i++) {
        printf("%d ", i);
    }
    printf("\n");

    /* while: repeat as long as the condition holds */
    int n = 20;
    int steps = 0;
    while (n > 1) {
        n /= 2;
        steps++;
    }
    printf("halved %d times\n", steps);

    /* do-while: the body runs at least once */
    int tries = 0;
    do {
        tries++;
    } while (tries < 3);
    printf("tries = %d\n", tries);

    /* break leaves the loop, continue skips to the next round */
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) continue;
        if (i > 7) break;
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
Resultado da execução
1 2 3 4 5 
halved 4 times
tries = 3
1 3 5 7
C++
Executar →
main.cpp
#include <iostream>
#include <vector>

int main() {
    // for: start; condition; step
    for (int i = 1; i <= 5; i++) {
        std::cout << i << ' ';
    }
    std::cout << '\n';

    // while: repeat as long as the condition holds
    int n = 20;
    int steps = 0;
    while (n > 1) {
        n /= 2;
        steps++;
    }
    std::cout << "halved " << steps << " times\n";

    // do-while: the body runs at least once
    int tries = 0;
    do {
        tries++;
    } while (tries < 3);
    std::cout << "tries = " << tries << '\n';

    // range-based for visits every element of a container
    std::vector<int> values{1, 3, 5, 7};
    int sum = 0;
    for (int value : values) {
        sum += value;
    }
    std::cout << "sum = " << sum << '\n';
}
Resultado da execução
1 2 3 4 5 
halved 4 times
tries = 3
sum = 16

Comparação entre C e C++

O cabeçalho do laço for tem três partes: valor inicial, condição de repetição e incremento. A instrução break sai do laço na hora, e continue pula o resto da repetição atual e passa para a próxima. C++ também tem o for baseado em intervalo (range-based for), que percorre todos os elementos de um contêiner sem usar índices.

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