O que são estruturas de repetição
Entenda como estado, condição, corpo, atualização e saída controlam iterações por condição, contagem ou coleção.

Uma estrutura de repetição executa um bloco várias vezes
Uma estrutura de repetição, também chamada de laço ou loop, controla a execução repetida de um bloco de instruções. Cada passagem pelo bloco é uma iteração.
Imagine cinco valores de venda que precisam ser somados. Sem repetição, o algoritmo poderia duplicar a mesma operação:
total <- total + vendas[0]
total <- total + vendas[1]
total <- total + vendas[2]
total <- total + vendas[3]
total <- total + vendas[4]
Um laço expressa o padrão uma única vez:
posicao <- 0
total <- 0
ENQUANTO posicao < 5 FAÇA
total <- total + vendas[posicao]
posicao <- posicao + 1
FIM ENQUANTO
O bloco continua o mesmo, mas o estado muda a cada passagem. posicao indica qual venda está sendo processada e total conserva a soma construída até aquele momento.
Repetir não é executar tudo ao mesmo tempo. As iterações ocorrem em uma ordem definida, e cada uma pode observar os resultados deixados pelas anteriores.
Os cinco elementos que mantêm um laço sob controle
Um laço bem definido normalmente possui:
- estado inicial: valores existentes antes da primeira iteração;
- condição de continuidade: pergunta que decide se haverá outra passagem;
- corpo: instruções repetidas;
- atualização: mudança que aproxima o fluxo do término ou do próximo item;
- saída: estado em que a condição não permite continuar.
No exemplo das vendas:
| Elemento | Representação |
|---|---|
| Estado inicial | posicao = 0, total = 0 |
| Condição | posicao < 5 |
| Corpo | adicionar vendas[posicao] ao total |
| Atualização | posicao = posicao + 1 |
| Saída | posicao = 5 |
A condição usa um operador relacional para produzir verdadeiro ou falso. A repetição combina essa decisão com um retorno: se for verdadeira, executa o corpo e volta a testar; se for falsa, segue após o laço.
Nem todo laço apresenta os cinco elementos no mesmo lugar. Uma construção que percorre uma coleção pode administrar posição e término automaticamente. Ainda assim, esses papéis existem no comportamento da estrutura.
Estado liga uma iteração à seguinte
O estado reúne as informações que podem mudar ao longo da execução. Ele pode incluir:
- um contador de posições ou tentativas;
- um total acumulado;
- o item atual de uma coleção;
- um indicador como
encontrado; - dados lidos da entrada;
- uma quantidade restante.
Considere vendas = [12, 8, 15]:
| Momento | posicao | Condição posicao < 3 | Valor usado | total depois do corpo |
|---|---|---|---|---|
| antes da 1ª iteração | 0 | verdadeiro | 12 | 12 |
| antes da 2ª iteração | 1 | verdadeiro | 8 | 20 |
| antes da 3ª iteração | 2 | verdadeiro | 15 | 35 |
| teste final | 3 | falso | — | 35 |
Uma afirmação útil para acompanhar o laço é: antes de cada teste, total contém a soma dos elementos anteriores a posicao. Esse tipo de propriedade ajuda a explicar por que o algoritmo funciona, não apenas que ele chegou ao resultado esperado.
As variáveis usadas para controle precisam ter papéis claros. Misturar na mesma variável posição, quantidade processada e valor do item favorece erros difíceis de rastrear.
Três formas de saber quanto repetir
A estrutura deve refletir o que determina o término.
Repetição controlada por condição
Use quando não se conhece antecipadamente o número de iterações, mas existe uma condição observável:
ENQUANTO resposta NÃO estiver válida FAÇA
solicitar nova resposta
FIM ENQUANTO
O número de tentativas depende dos dados recebidos. O estado precisa mudar de modo que a condição possa finalmente se tornar falsa.
Repetição controlada por contagem
Use quando existe uma quantidade ou faixa conhecida:
PARA posicao DE 0 ATÉ 4 FAÇA
processar vendas[posicao]
FIM PARA
Inicialização, limite e avanço formam uma progressão previsível. Muitas linguagens expressam esse controle com for, mas os limites inclusivos ou exclusivos variam.
Repetição controlada por coleção
Use quando a intenção é executar uma vez para cada elemento:
PARA CADA venda EM vendas FAÇA
total <- total + venda
FIM PARA
Essa forma comunica o domínio diretamente e evita administrar um índice quando a posição não é necessária.
Essas categorias podem se sobrepor na implementação. Um percurso de coleção também possui uma condição de término; a diferença é que a linguagem ou o iterador a administra. Escolha a forma que torne a intenção mais visível.
Testar antes ou depois muda a quantidade mínima
Alguns laços verificam a condição antes do corpo. Se ela começar falsa, executam zero vezes:
ENQUANTO possuiProximoItem FAÇA
processar item
FIM ENQUANTO
Outros verificam depois do corpo e, por isso, executam ao menos uma vez:
FAÇA
solicitar opção
ENQUANTO opção for inválida
Essa diferença não é apenas sintática. Se a coleção estiver vazia, um teste anterior evita tentar processar um item inexistente. Se a primeira tentativa precisa ocorrer para que a condição possa ser conhecida, o teste posterior pode representar melhor o fluxo.
As próximas aulas aprofundarão while, do while e for. Por enquanto, guarde a pergunta: é válido executar zero vezes ou a primeira passagem é obrigatória?
Progresso precisa aproximar o laço do término
Observe este erro:
posicao <- 0
ENQUANTO posicao < 5 FAÇA
exibir vendas[posicao]
FIM ENQUANTO
posicao nunca muda. Se começou em 0, a condição permanece verdadeira e o mesmo elemento é exibido indefinidamente.
Um laço potencialmente infinito nem sempre é acidental: servidores e filas podem esperar trabalho continuamente. Mesmo nesses casos existe uma estratégia de interrupção, cancelamento ou encerramento externo. Em um algoritmo finito, você deve conseguir explicar:
- qual variável ou fonte muda;
- em qual direção ela muda;
- qual estado torna a condição falsa;
- por que esse estado é alcançável.
Atualizar não significa obrigatoriamente somar um. Uma fila pode perder um item processado, uma busca pode avançar para o próximo nó e uma entrada pode mudar quando novos dados chegam. O requisito é progresso coerente com a condição.
Limites definem quais valores entram
Erros de uma posição são chamados frequentemente de erros de limite ou off-by-one. Compare:
posicao < quantidade
com:
posicao <= quantidade
Se uma coleção possui quantidade = 5 e suas posições vão de 0 a 4, a primeira condição aceita exatamente cinco posições. A segunda tenta alcançar também a posição 5, que está fora da coleção.
Não memorize apenas “use menor que”. Modele o intervalo:
- ponto inicial;
- primeiro valor incluído;
- último valor incluído;
- primeiro valor excluído;
- direção e tamanho do passo.
Uma contagem de 1 até 5 pode usar limites diferentes de um percurso pelas posições 0 até 4. O número de iterações pode ser igual, mas os valores do estado não são.
break e continue alteram o caminho normal
Muitas linguagens oferecem duas transferências:
breakencerra o laço imediatamente;continuepula o restante da iteração atual e segue para a próxima.
Uma busca pode parar ao encontrar o primeiro resultado:
PARA CADA produto EM produtos FAÇA
SE produto.id = idProcurado ENTÃO
encontrado <- produto
INTERROMPER LAÇO
FIM SE
FIM PARA
Uma filtragem pode ignorar itens inválidos:
PARA CADA leitura EM leituras FAÇA
SE leitura for inválida ENTÃO
CONTINUAR NA PRÓXIMA
FIM SE
adicionar leitura ao total
FIM PARA
Esses comandos podem simplificar o fluxo, mas também escondem caminhos quando aparecem em excesso. Com continue, confirme que a atualização necessária ao término não foi pulada. Em laços aninhados, uma interrupção sem rótulo normalmente afeta apenas o laço mais interno; esse tema será tratado adiante.
Repetir trabalho não garante repetir com segurança
Se o corpo envia uma cobrança, grava um arquivo ou chama um serviço, executar novamente pode duplicar o efeito. Antes de usar um laço para repetir uma operação externa, pergunte:
- cada iteração trabalha com uma unidade distinta?
- uma falha parcial pode fazer a mesma unidade ser processada outra vez?
- o estado é atualizado antes ou depois do efeito?
- existe uma forma de reconhecer o que já foi concluído?
Nesta trilha, começaremos com cálculos previsíveis em memória. A observação continua importante: um laço controla quantas vezes o corpo é alcançado, não garante sozinho que o corpo seja seguro ou reversível.
Teste zero, uma e muitas iterações
Para qualquer repetição, comece por três tamanhos:
| Cenário | O que revela |
|---|---|
| zero iterações | condição inicialmente falsa e coleção vazia |
| uma iteração | inicialização, corpo e saída imediata |
| várias iterações | atualização, conservação do estado e término |
Acrescente limites e situações específicas:
- último elemento da coleção;
- valor encontrado no começo, no meio e no fim;
- nenhum valor encontrado;
- entrada que permanece inválida por várias tentativas;
- condição que nunca muda;
- interrupção e continuação.
Faça um teste de mesa com uma linha por teste da condição e outra por iteração, ou declare claramente qual convenção está usando. Registre o teste final falso: ele explica por que o laço encerrou.
Erros comuns
Esquecer a atualização
O estado permanece igual e a condição nunca se aproxima da saída.
Atualizar na direção errada
Com posicao < 5, diminuir uma posição iniciada em zero afasta o estado do limite.
Errar o limite inclusivo ou exclusivo
O laço processa um elemento a menos ou tenta acessar uma posição inexistente.
Alterar a coleção durante o percurso sem conhecer a regra
Remover ou inserir elementos pode pular itens, repeti-los ou invalidar o mecanismo de iteração. Confira o contrato da linguagem e, quando necessário, percorra uma cópia ou produza outra coleção.
Usar contagem quando a intenção é percorrer itens
Um índice desnecessário aumenta as decisões sobre início, limite e acesso. Prefira a abstração “para cada” quando a posição não for usada.
Testar apenas o caso com vários elementos
Coleções vazias e unitárias revelam inicialização e limites que o caso comum pode esconder.
Confundir continue com break
Um pula somente a iteração atual; o outro encerra toda a repetição mais próxima.
Pratique com leituras de temperatura
Considere leituras = [21, 24, 19, 26]. Construa um algoritmo que percorra a coleção e produza:
- quantidade de leituras;
- soma das temperaturas;
- maior temperatura;
- média ao final.
Antes do laço, defina o estado inicial. Durante cada iteração, atualize contador, soma e maior valor. Depois do laço, calcule a média somente se a quantidade for maior que zero.
Teste também [], [21] e uma coleção com temperaturas negativas. Registre o estado após cada passagem e escreva, em uma frase, o que permanece verdadeiro antes de toda nova iteração.
O que você deve guardar
Uma estrutura de repetição executa um bloco em várias iterações controladas por condição, contagem ou coleção. O laço conecta decisões e estado: testa se deve continuar, realiza trabalho, atualiza informações e volta ao ponto de controle.
Defina início, corpo, progresso e saída; escolha limites conscientemente; teste zero, uma e muitas passagens; e trate interrupções como caminhos explícitos. Agora aprenda como funciona o laço while e construa uma repetição controlada por condição passo a passo.
Referências
- MDN Web Docs — Loops and iteration em JavaScript. Acesso em 10 set. 2026.
- Microsoft Learn — Iteration statements em C#. Acesso em 10 set. 2026.
- Python Documentation — Instruções compostas:
whileefor. Acesso em 10 set. 2026. - Python Documentation —
break,continuee iteração. Acesso em 10 set. 2026.