Estruturas de Repetição: Entenda For, While e Do-While na Lógica de Programação

Entenda como funcionam os laços for, while e do-while, quando usar cada um e como evitar os erros mais comuns em lógica de programação.

Compartilhar no Linkedin Compartilhar no WhatsApp

Tempo estimado de leitura: 8 minutos

Imagem do artigo Estruturas de Repetição: Entenda For, While e Do-While na Lógica de Programação

Repetir tarefas é uma das coisas que os computadores fazem melhor. Imprimir uma lista com mil nomes, somar todos os itens de um carrinho de compras ou verificar cada linha de um arquivo são tarefas que ninguém escreveria manualmente, linha por linha. É aí que entram as estruturas de repetição, também chamadas de laços ou loops. Neste artigo, você vai entender como funcionam o for, o while e o do-while, quando usar cada um e quais erros evitar.

O que é uma estrutura de repetição

Uma estrutura de repetição é um bloco de código que executa as mesmas instruções várias vezes, enquanto uma condição for verdadeira. Em vez de escrever a mesma linha dez vezes, você escreve uma vez e informa ao programa quantas vezes (ou até quando) ela deve se repetir.

Todo laço, independentemente da linguagem, é formado por três ideias básicas:

  1. Inicialização: o ponto de partida, geralmente uma variável de controle (um contador).
  2. Condição: o teste que decide se o laço continua ou para.
  3. Atualização: a mudança que aproxima o laço do fim, como somar 1 ao contador.

Se qualquer uma dessas três partes estiver errada, o laço pode repetir menos vezes do que deveria — ou nunca parar.

O laço for: quando você sabe quantas repetições quer

O for é a escolha natural quando o número de repetições é conhecido antes de o laço começar. Ele reúne inicialização, condição e atualização em uma única linha, o que deixa o código compacto e fácil de ler.

// Exibe os números de 1 a 5
for (int i = 1; i <= 5; i++) {
    imprimir(i);
}

Lendo em voz alta: comece com i valendo 1; enquanto i for menor ou igual a 5, execute o bloco; ao fim de cada volta, some 1 em i. O laço roda exatamente cinco vezes.

Use o for quando a resposta para “quantas vezes isso vai repetir?” já existe antes da primeira volta: percorrer os 12 meses do ano, os 50 itens de uma lista ou as 3 tentativas de senha permitidas.

O laço while: quando você não sabe quantas repetições serão necessárias

O while repete enquanto uma condição continuar verdadeira, sem se importar com contagem. Ele testa a condição antes de executar o bloco. Se a condição já começar falsa, o bloco nunca roda.

// Continua pedindo até o usuário digitar um número válido
enquanto (numero <= 0) {
    imprimir("Digite um número positivo:");
    numero = lerEntrada();
}

Aqui não há como saber de antemão quantas tentativas o usuário fará. Pode acertar de primeira ou errar oito vezes. O while é ideal para situações que dependem de algo externo: entrada do usuário, leitura de um arquivo até o fim ou espera por uma resposta.

O laço do-while: quando o bloco precisa rodar pelo menos uma vez

O do-while é irmão do while, com uma diferença importante: ele testa a condição depois de executar o bloco. Isso garante no mínimo uma execução, mesmo que a condição seja falsa desde o início.

// Exibe o menu ao menos uma vez e repete até o usuário escolher sair
faca {
    exibirMenu();
    opcao = lerEntrada();
} enquanto (opcao != "sair");

Menus interativos são o exemplo clássico: o menu precisa aparecer ao menos uma vez para que o usuário possa escolher alguma coisa — inclusive escolher sair. Vale saber que nem toda linguagem oferece o do-while; em Python, por exemplo, ele é simulado com um while e uma condição de saída interna.

Comparando os três laços

Característicaforwhiledo-while
Quando o teste aconteceAntes de cada voltaAntes de cada voltaDepois de cada volta
Execuções mínimasZeroZeroUma
Número de repetiçõesGeralmente conhecidoGeralmente desconhecidoGeralmente desconhecido
Uso típicoPercorrer listas e contagensAguardar uma condição mudarMenus e validações iniciais

Vale reforçar: os três são intercambiáveis. Qualquer for pode ser reescrito como while e vice-versa. A escolha é sobre clareza, não sobre capacidade. Escolha o laço que deixa a intenção do código mais evidente para quem for lê-lo depois — inclusive você.

Erros comuns em estruturas de repetição

Alguns tropeços aparecem com frequência para quem está começando:

  • Laço infinito: esquecer de atualizar a variável de controle. Se o contador nunca muda, a condição nunca fica falsa e o programa trava.
  • Erro de um a mais ou um a menos: confundir < com <= e acabar processando um item a mais ou deixando o último de fora.
  • Modificar a coleção durante o laço: remover itens de uma lista enquanto a percorre costuma gerar resultados imprevisíveis.
  • Trabalho desnecessário dentro do laço: repetir um cálculo que poderia ser feito uma única vez antes do laço começar.

Uma técnica simples ajuda muito a evitar esses problemas: o teste de mesa. Pegue papel e caneta, escolha valores pequenos e anote o valor de cada variável a cada volta do laço. Em poucos minutos, você enxerga exatamente onde a lógica desvia do esperado — sem depender do computador.

Comandos que alteram o fluxo do laço

Duas instruções aparecem com frequência dentro de laços e valem ser conhecidas desde cedo:

  • break: interrompe o laço imediatamente e segue para o código seguinte. Útil quando você encontrou o que procurava e não precisa continuar.
  • continue: pula o restante da volta atual e vai direto para a próxima. Útil para ignorar itens que não interessam.

Use os dois com moderação. Em excesso, eles espalham as saídas do laço por vários pontos do código e dificultam o entendimento.

Laços aninhados

Um laço pode conter outro laço dentro dele. É assim que se percorre uma tabela: o laço externo caminha pelas linhas e o interno, pelas colunas. Se o externo roda 10 vezes e o interno roda 10 vezes a cada volta, o bloco mais interno executa 100 vezes. Esse crescimento é rápido, então tenha atenção ao aninhar muitos níveis — o custo se multiplica.

Conclusão

Estruturas de repetição são um dos pilares da lógica de programação. O for brilha quando o número de voltas é conhecido, o while resolve situações que dependem de uma condição externa e o do-while garante ao menos uma execução. Dominar os três é menos sobre decorar sintaxe e mais sobre reconhecer qual deles descreve melhor o problema que você tem em mãos.

A melhor forma de fixar esses conceitos é praticando: escreva pequenos programas que contem, somem, filtrem e percorram listas, e faça o teste de mesa sempre que o resultado surpreender. Se quiser se aprofundar de forma estruturada, vale explorar os cursos gratuitos de lógica de programação e desenvolvimento disponíveis na Cursa, que acompanham você desde os primeiros conceitos até a prática em linguagens como Python, Java e C.

Cursos gratuitos em vídeo

Imagem do Curso gratuito Algoritmos e Lógica de Programação

Curso GratuitoAlgoritmos e Lógica de Programação

5

EstrelaEstrelaEstrelaEstrelaEstrela

(5)

Clock icon

4h06m

List icon

14 exercícios

Imagem do Curso gratuito Lógica de Programação

Curso GratuitoLógica de Programação

5

EstrelaEstrelaEstrelaEstrelaEstrela

(10)

Clock icon

1h55m

List icon

15 exercícios

Imagem do Curso gratuito Aprenda Programação criando games

Curso GratuitoAprenda Programação criando games

5

EstrelaEstrelaEstrelaEstrelaEstrela

(4)

Clock icon

2h52m

List icon

13 exercícios

Imagem do Curso gratuito Lógica de programação

Curso GratuitoLógica de programação

4.96

EstrelaEstrelaEstrelaEstrelaEstrela

(53)

Clock icon

7h35m

List icon

15 exercícios

Recomendado
Imagem do Curso gratuito Algoritmo e lógica de programação em C

Curso GratuitoAlgoritmo e lógica de programação em C

4.88

EstrelaEstrelaEstrelaEstrelaEstrela

(121)

Clock icon

8h44m

List icon

27 exercícios

Ideal para iniciantes
Imagem do Curso gratuito Lógica de programação na prática com desafios

Curso GratuitoLógica de programação na prática com desafios

4.86

EstrelaEstrelaEstrelaEstrelaEstrela

(7)

Clock icon

3h02m

List icon

5 exercícios

Imagem do Curso gratuito Lógica de Programação com Python para Iniciantes

Curso GratuitoLógica de Programação com Python para Iniciantes

4.8

EstrelaEstrelaEstrelaEstrelaEstrela

(5)

Clock icon

1h05m

List icon

5 exercícios

Imagem do Curso gratuito Logica de programação

Curso GratuitoLogica de programação

4.78

EstrelaEstrelaEstrelaEstrelaEstrela

(79)

Clock icon

1h11m

List icon

8 exercícios

Imagem do Curso gratuito Lógica de programação

Curso GratuitoLógica de programação

4.74

EstrelaEstrelaEstrelaEstrelaMeia estrela

(143)

Clock icon

4h18m

List icon

31 exercícios

Imagem do Curso gratuito Lógica de programação completa

Curso GratuitoLógica de programação completa

4.67

EstrelaEstrelaEstrelaEstrelaMeia estrela

(9)

Clock icon

9h19m

List icon

24 exercícios

Ideal para iniciantes
Imagem do Curso gratuito Lógica de programação com Javascript do zero para iniciantes em programação

Curso GratuitoLógica de programação com Javascript do zero para iniciantes em programação

4.5

EstrelaEstrelaEstrelaEstrelaMeia estrela

(2)

Clock icon

3h07m

List icon

6 exercícios

Imagem do Curso gratuito Lógica de programação

Curso GratuitoLógica de programação

4.38

EstrelaEstrelaEstrelaEstrelaMeia estrela

(8)

Clock icon

1h29m

List icon

17 exercícios

Imagem do Curso gratuito Lógica de Programação em Portugol para Iniciantes

Curso GratuitoLógica de Programação em Portugol para Iniciantes

1

Estrela

(1)

Clock icon

1h59m

List icon

8 exercícios

Imagem do Curso gratuito Linguagem e lógica de programação

Curso GratuitoLinguagem e lógica de programação

Novo

Clock icon

9h32m

List icon

8 exercícios

Imagem do Curso gratuito Lógica de Programação e Algoritmos

Curso GratuitoLógica de Programação e Algoritmos

Novo

Clock icon

5h56m

List icon

20 exercícios

Imagem do Curso gratuito Pensamento Computacional

Curso GratuitoPensamento Computacional

Novo

Clock icon

2h32m

List icon

11 exercícios

Recomendado
Imagem do Curso gratuito Portugol Studio: Algoritmos e Lógica de Programação do Zero

Curso GratuitoPortugol Studio: Algoritmos e Lógica de Programação do Zero

Novo

Clock icon

5h50m

List icon

25 exercícios

Imagem do Curso gratuito Lógica de Programação em Flutter: Do Zero ao App

Curso GratuitoLógica de Programação em Flutter: Do Zero ao App

Novo

Clock icon

2h38m

List icon

15 exercícios

Imagem do Curso gratuito Lógica de Programação e Algoritmos do Zero ao Avançado

Curso GratuitoLógica de Programação e Algoritmos do Zero ao Avançado

Novo

Clock icon

2h17m

List icon

6 exercícios

Ideal para iniciantes
Imagem do Curso gratuito Lógica de Programação e Algoritmos no Visualg (do Zero ao Avançado)

Curso GratuitoLógica de Programação e Algoritmos no Visualg (do Zero ao Avançado)

Novo

Clock icon

4h43m

List icon

10 exercícios

Estruturas de Repetição: Entenda For, While e Do-While na Lógica de Programação

Entenda como funcionam os laços for, while e do-while, quando usar cada um e como evitar os erros mais comuns em lógica de programação.

Formatação Condicional no Excel: Como Destacar Dados Automaticamente

Aprenda o que é a formatação condicional no Excel e como usá-la para destacar dados importantes de forma automática e visual.

Engenharia de Prompts: Como Escrever Comandos Eficientes para a Inteligência Artificial

Aprenda o que é engenharia de prompts e conheça técnicas simples para escrever comandos claros e obter respostas melhores da inteligência artificial.

Testes Exploratórios em QA: como encontrar bugs rápido com charters, heurísticas e sessões timeboxed

Aprenda testes exploratórios com charters, heurísticas e sessões timeboxed para encontrar bugs com mais rapidez e foco.

TDD, BDD e ATDD em QA: como escolher a abordagem certa e transformar requisitos em testes

Entenda TDD, BDD e ATDD na prática e saiba quando aplicar cada abordagem para transformar requisitos em testes eficazes.

Pirâmide de Testes na Prática: como equilibrar testes unitários, de API e UI para entregar com confiança

Aprenda a aplicar a Pirâmide de Testes na prática e equilibrar unit, API e UI para entregas mais rápidas e confiáveis.

Matriz de Risco em QA: como priorizar testes e encontrar bugs que realmente importam

Aprenda a usar matriz de risco em QA para priorizar testes por impacto e probabilidade e encontrar bugs críticos primeiro.

Estratégia de Teste em QA: Como Desenhar Um Plano Enxuto, Rastreável e Orientado a Resultados

Estratégia de testes em QA: defina objetivos, escopo, rastreabilidade, dados/ambiente, métricas e automação com foco em risco.