C++: Estruturas de Repetição

Última atualização: 2026-08-26

Suponha que você precise imprimir "Hello" 100 vezes na tela. Como faria?

Copiar e colar 100 linhas de std::cout << "Hello" << std::endl;? Isso é ridículo.

A abordagem de um programador — loops. Deixe o computador repetir um bloco de código até que uma condição seja satisfeita.


1. O Loop for

(1) 1.1 Sintaxe Básica

TEXT 📖 Somente leitura
for (initialization; condition; update) {
 // Corpo do loop: repete enquanto a condição for verdadeira
}

Fluxo de execução:

  1. Inicialização: Executada apenas uma vez (tipicamente usada para declarar a variável do loop)
  2. Verificar condição: Se verdadeira, executar o corpo do loop; se falsa, sair do loop
  3. Executar corpo do loop
  4. Atualização: Após o corpo do loop executar, atualizar a variável do loop
  5. Voltar ao passo 2

▶ Exemplo 1: Exibir 1-10 (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
 for (int i = 1; i <= 10; i++) {
 std::cout << i << " ";
 }
 std::cout << std::endl;
 
 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
1
2
3
4
5
6
7
8
9

Análise do código:

  1. int i = 1: Inicialização, i começa em 1
  2. i <= 10: Condição, o loop continua enquanto i <= 10
  3. std::cout << i << " ": Corpo do loop, exibe i
  4. i++: Atualização, incrementa i em 1


2. O Loop while

(1) 2.1 Sintaxe Básica

TEXT 📖 Somente leitura
while (condition) {
 // Corpo do loop: repete enquanto a condição for verdadeira
}

Fluxo de execução:

  1. Verificar a condição
  2. Se verdadeira, executar o corpo do loop
  3. Voltar ao passo 1

💡 Ponto-chave: O loop while atualiza a variável do loop dentro do corpo do loop!

▶ Exemplo 2: Exibir 1-10 com while (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
 int i = 1; // Inicialização
 
 while (i <= 10) { // Condição
 std::cout << i << " ";
 i++; // Atualização (dentro do corpo do loop!)
 }
 std::cout << std::endl;
 
 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
1 2 3 4 5 6 7 8 9 10 


3. O Loop do-while

(1) 3.1 Sintaxe Básica

TEXT 📖 Somente leitura
do {
 // Corpo do loop
} while (condition);

Fluxo de execução:

  1. Executar o corpo do loop (pelo menos uma vez)
  2. Verificar a condição
  3. Se verdadeira, voltar ao passo 1

💡 Ponto-chave: O loop do-while executa pelo menos uma vez!

▶ Exemplo 3: Jogo de Adivinhação de Números (Dificuldade ⭐⭐)

CPP
#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
 std::srand(static_cast<unsigned int>(std::time(nullptr)));
 int secretNumber = std::rand() % 100 + 1;
 int guess;
 
 do {
 std::cout << "Guess a number from 1-100: ";
 std::cin >> guess;
 
 if (guess > secretNumber) {
 std::cout << "Too high!" << std::endl;
 } else if (guess < secretNumber) {
 std::cout << "Too low!" << std::endl;
 }
 
 } while (guess != secretNumber);
 
 std::cout << "🎉 Got it!The answer is " << secretNumber << std::endl;
 
 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
Guess a number from 1-100: 
Too high!
Too low!
🎉 Got it!The answer is 42

💡 Por que usar do-while? Porque o usuário deve adivinhar pelo menos uma vez, então o corpo do loop deve executar pelo menos uma vez.



4. for vs while vs do-while

Tipo de Loop Melhor Uso Característica
for Número conhecido de iterações Inicialização, condição e atualização agrupadas — estrutura clara
while Iterações desconhecidas mas condição conhecida Variável do loop é atualizada dentro do corpo
do-while Deve executar pelo menos uma vez Corpo do loop executa pelo menos uma vez

Conselho de seleção:



5. break e continue

(1) 5.1 break: Sair do Loop Inteiro

break é usado para encerrar um loop antecipadamente.

Exemplo: Encontrar o primeiro número divisível por 7 (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
 for (int i = 1; i <= 100; i++) {
 if (i % 7 == 0) {
 std::cout << "The first number divisible by 7 is: " << i << std::endl;
 break; // Sai do loop após encontrar
 }
 }
 
 return 0;
}

(2) 5.2 continue: Pular Iteração Atual

continue é usado para pular a iteração atual e ir diretamente para a próxima.

Exemplo: Exibir números ímpares de 1-10 (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
 for (int i = 1; i <= 10; i++) {
 if (i % 2 == 0) {
 continue; // Se par, pula esta iteração
 }
 std::cout << i << " ";
 }
 std::cout << std::endl;
 
 return 0;
}


6. Loops Aninhados

Um loop pode conter outro loop dentro dele — isso é chamado de loop aninhado.

▶ Exemplo 4: Imprimir Tabuada (Dificuldade ⭐⭐)

CPP
#include <iostream>

int main() {
 for (int i = 1; i <= 9; i++) { // Loop externo: controla linhas
 for (int j = 1; j <= i; j++) { // Loop interno: controla colunas
 std::cout << j << " x " << i << " = " << i * j << "\t";
 }
 std::cout << std::endl; // Nova linha
 }
 
 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
1 x 1 = 1	
1 x 2 = 2	2 x 2 = 4	
...

💡 Fluxo de execução:



7. Loops Infinitos

Se a condição do loop é sempre verdadeira, um loop infinito é formado.

▶ Exemplo 5: Loop Infinito (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
 while (true) { // Condição é sempre verdadeira
 std::cout << "Infinite loop..." << std::endl;
 }
 
 return 0; // Esta linha nunca é alcançada
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
Infinite loop...

💡 Como parar? Pressione Ctrl + C para encerrar o programa à força.

💡 Loops infinitos são úteis? Sim! Por exemplo, programas de servidor precisam continuar executando e aguardar requisições de usuários.



8. Prática: Calculando Fatoriais

▶ Exemplo 6: Calcular n! (Dificuldade ⭐⭐)

CPP
#include <iostream>

int main() {
 int n;
 std::cout << "Please enter a positive integer: ";
 std::cin >> n;
 
 long long factorial = 1; // Use long long para prevenir overflow
 for (int i = 1; i <= n; i++) {
 factorial *= i;
 }
 
 std::cout << n << " ! is: " << factorial << std::endl;
 
 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
Please enter a positive integer: 5
5 ! is: 120

Resultado da execução:

TEXT 📖 Somente leitura
Please enter a positive integer: 5
5 ! is: 120

💡 Dica: 20! excede a faixa de long long, então mesmo com long long você só pode calcular até 20.


❓ Perguntas Frequentes

P: Os pontos e vírgulas no loop for podem ser omitidos? R: Você pode omitir partes mas não os pontos e vírgulas. for (; i <= 10; i++) omite a inicialização, for (;;) é um loop infinito (equivalente a while(true)). P: while e for podem ser convertidos entre si? R: Sim. Qualquer loop for pode ser reescrito como while, e vice-versa. Regra de seleção: use for quando você sabe a contagem, use while quando você sabe a condição. P: Como break e continue funcionam em loops aninhados? R: break só sai do nível atual do loop. Para sair de múltiplos níveis, use uma "variável de flag" ou goto (não recomendado como alternativa).


📖 Resumo


📝 Exercícios

  1. Básico (Dificuldade ⭐): Use um loop for para exibir todos os números de 1-100 que são divisíveis por 3.

  2. Intermediário (Dificuldade ⭐⭐): Use loops aninhados para imprimir o seguinte padrão:

TEXT 📖 Somente leitura
*
**
***
****
*****
  1. Desafio (Dificuldade ⭐⭐⭐): Escreva um programa que permita ao usuário digitar um inteiro positivo n, depois exiba n linhas do Triângulo de Pascal.
TEXT 📖 Somente leitura
Please enter number of rows: 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

9. 🚀 Próximo Passo

Agora que você aprendeu loops, a seguir vamos aprender funções (Aula 08) — empacotando código em módulos reutilizáveis para tornar programas mais limpos e fáceis de manter!

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%