beginner50 minLição 5 de 8

Loops e Repetição

Domine loops enquanto, loops para, padrões de iteração e entenda como algoritmos repetem ações de forma eficiente e terminam corretamente.

Loops e Repetição

Muitas tarefas exigem fazer a mesma coisa várias vezes. Em vez de escrever os mesmos passos repetidamente, algoritmos usam loops -- estruturas que repetem um conjunto de instruções até que uma condição seja atendida. Loops são uma das ferramentas mais poderosas no pensamento algorítmico.

Por que Loops Importam

Considere esta tarefa: imprimir os números de 1 a 100.

Sem um loop (tedioso e propenso a erros):

IMPRIMIR 1 IMPRIMIR 2 IMPRIMIR 3 ... (mais 97 linhas) IMPRIMIR 100

Com um loop (elegante e fácil de manter):

DEFINIR contador COMO 1 ENQUANTO contador for menor ou igual a 100 FAÇA IMPRIMIR contador DEFINIR contador COMO contador + 1 FIM ENQUANTO
AbordagemLinhas de CódigoFácil de Mudar?Propenso a Erros?
Sem loop100Não -- deve editar cada linhaSim -- fácil pular ou duplicar
Com loop4Sim -- mude o limiteNão -- a lógica é centralizada
100%

O Loop ENQUANTO (WHILE)

Um loop ENQUANTO repete um bloco de instruções enquanto uma condição permanecer verdadeira. A condição é verificada antes de cada iteração.

Estrutura

ENQUANTO condição for verdadeira FAÇA Executar estes passos (Certifique-se de que algo mude para eventualmente terminar o loop) FIM ENQUANTO

Como Funciona

100%

Exemplo: Contagem Regressiva

ALGORITMO: Contagem Regressiva ENTRADA: Número inicial SAÍDA: Sequência de contagem regressiva PASSO 1: LER numero_inicial PASSO 2: DEFINIR atual COMO numero_inicial PASSO 3: ENQUANTO atual for maior que 0 FAÇA IMPRIMIR atual DEFINIR atual COMO atual - 1 FIM ENQUANTO PASSO 4: IMPRIMIR "Já!" FIM ALGORITMO

Rastreando com numero_inicial = 3:

IteraçãoatualCondição (atual > 0)Ação
Antes do loop3----
13verdadeiraImprimir 3, atual torna-se 2
22verdadeiraImprimir 2, atual torna-se 1
31verdadeiraImprimir 1, atual torna-se 0
Após o loop0falsaSair do loop, imprimir "Já!"

Saída: 3, 2, 1, Já!

Exemplo: Encontrar um Número em uma Lista

ALGORITMO: Busca Linear ENTRADA: Uma lista de números, um número alvo para encontrar SAÍDA: Posição do alvo, ou "não encontrado" PASSO 1: DEFINIR indice COMO 0 PASSO 2: DEFINIR encontrado COMO falso PASSO 3: ENQUANTO indice for menor que tamanho da lista E encontrado for falso FAÇA SE lista[indice] for igual ao alvo ENTÃO DEFINIR encontrado COMO verdadeiro SENÃO DEFINIR indice COMO indice + 1 FIM SE FIM ENQUANTO PASSO 4: SE encontrado for verdadeiro ENTÃO IMPRIMIR "Encontrado na posição " + indice SENÃO IMPRIMIR "Não encontrado" FIM SE FIM ALGORITMO
ℹ️Note

Observe a condição composta no Passo 3: indice < tamanho E encontrado = falso. O loop para se chegarmos ao fim da lista OU se encontrarmos o alvo. Isso evita buscas desnecessárias.

O Loop PARA (FOR)

Um loop PARA repete um bloco de instruções um número conhecido de vezes. É ideal quando você sabe exatamente quantas iterações precisa.

Estrutura

PARA variavel DE valor_inicial ATÉ valor_final FAÇA Executar estes passos FIM PARA

Como Funciona

100%

Exemplo: Tabuada

ALGORITMO: Tabuada ENTRADA: Um número SAÍDA: Tabuada desse número (1-10) PASSO 1: LER numero PASSO 2: PARA multiplicador DE 1 ATÉ 10 FAÇA DEFINIR resultado COMO numero multiplicado por multiplicador IMPRIMIR numero + " x " + multiplicador + " = " + resultado FIM PARA FIM ALGORITMO

Saída para numero = 5:

5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 ... 5 x 10 = 50

Exemplo: Somar uma Lista

ALGORITMO: Soma de Lista ENTRADA: Uma lista de números SAÍDA: A soma total PASSO 1: DEFINIR total COMO 0 PASSO 2: PARA cada número na lista FAÇA DEFINIR total COMO total + numero FIM PARA PASSO 3: IMPRIMIR total FIM ALGORITMO

Comparando Loops ENQUANTO e PARA

AspectoLoop ENQUANTOLoop PARA
Quando usarNúmero desconhecido de iteraçõesNúmero conhecido de iterações
CondiçãoVerificada antes de cada iteraçãoImplícita (contador chega ao fim)
Risco de loop infinitoMaior (deve garantir que a condição muda)Menor (contador sempre avança)
FlexibilidadeMais flexívelMais estruturado
Exemplo"Continue buscando até encontrar""Processe cada item na lista"

Quando Escolher Qual

100%

O Loop REPITA-ATÉ (REPEAT-UNTIL)

Um loop REPITA-ATÉ executa o corpo pelo menos uma vez, depois verifica a condição após cada iteração. Ele repete até que a condição se torne verdadeira.

Estrutura

REPITA Executar estes passos ATÉ condição ser verdadeira

Diferença Principal do ENQUANTO

Loop ENQUANTOLoop REPITA-ATÉ
Verifica condição ANTES de executarVerifica condição DEPOIS de executar
Pode executar zero vezesSempre executa pelo menos uma vez
Continua ENQUANTO condição é verdadeiraContinua ATÉ condição ser verdadeira

Exemplo: Validação de Entrada

ALGORITMO: Obter Idade Válida ENTRADA: Nenhuma (lê do usuário) SAÍDA: Uma idade válida (1-120) PASSO 1: REPITA IMPRIMIR "Digite sua idade (1-120):" LER idade ATÉ idade for maior ou igual a 1 E idade for menor ou igual a 120 PASSO 2: IMPRIMIR "Idade válida: " + idade FIM ALGORITMO
💡Tip

REPITA-ATÉ é perfeito para validação de entrada porque você sempre precisa perguntar pelo menos uma vez. Um loop ENQUANTO exigiria duplicar o prompt de entrada antes e dentro do loop.

Loops Aninhados: Loops Dentro de Loops

Loops podem ser colocados dentro de outros loops. Isso é chamado de aninhamento. Cada iteração do loop externo dispara uma execução completa do loop interno.

Exemplo: Grade de Multiplicação

ALGORITMO: Grade de Multiplicação ENTRADA: Tamanho da grade N SAÍDA: Grade de multiplicação N x N PASSO 1: LER N PASSO 2: PARA linha DE 1 ATÉ N FAÇA PARA coluna DE 1 ATÉ N FAÇA DEFINIR produto COMO linha multiplicado por coluna IMPRIMIR produto com espaçamento FIM PARA IMPRIMIR nova linha FIM PARA FIM ALGORITMO

Saída para N = 3:

1 2 3 2 4 6 3 6 9

Visualizando Loops Aninhados

100%

Quantas Vezes o Loop Interno Executa?

Se o loop externo executa M vezes e o loop interno executa N vezes, o corpo interno executa M x N vezes no total.

Loop ExternoLoop InternoExecuções Totais
3 vezes3 vezes9 vezes
10 vezes5 vezes50 vezes
100 vezes100 vezes10.000 vezes
⚠️Warning

Loops aninhados multiplicam o número de operações. Um loop dentro de um loop dentro de um loop (aninhamento triplo) com 100 iterações cada executaria 1.000.000 de vezes! Cuidado com loops profundamente aninhados.

Terminação de Loops: Garantindo que Loops Terminem

Todo loop deve eventualmente terminar. Aqui estão as estratégias principais:

Estratégia 1: Terminação Baseada em Contador

DEFINIR contador COMO 0 ENQUANTO contador for menor que 10 FAÇA IMPRIMIR contador DEFINIR contador COMO contador + 1 FIM ENQUANTO

Estratégia 2: Valor Sentinela

LER numero ENQUANTO numero não for igual a -1 FAÇA IMPRIMIR "Você digitou: " + numero LER numero FIM ENQUANTO IMPRIMIR "Adeus!"
ℹ️Note

O valor -1 é chamado de "sentinela" -- um valor especial que sinaliza o fim da entrada. O usuário deve saber que deve digitar -1 para parar.

Estratégia 3: Terminação Baseada em Flag

DEFINIR encontrado COMO falso DEFINIR indice COMO 0 ENQUANTO encontrado for falso E indice for menor que tamanho_lista FAÇA SE lista[indice] for igual ao alvo ENTÃO DEFINIR encontrado COMO verdadeiro SENÃO DEFINIR indice COMO indice + 1 FIM SE FIM ENQUANTO

Erros Comuns de Terminação

ErroProblemaCorreção
Esquecer de atualizar o contadorLoop infinitoAdicionar contador = contador + 1
Operador de comparação erradoErro de off-by-oneUsar <= em vez de < (ou vice-versa)
Condição nunca se torna falsaLoop infinitoGarantir que o corpo do loop muda a condição
Usar = em vez de ==Erro de lógicaUsar comparação, não atribuição

Exemplo do Mundo Real: Processando Vendas Diárias

ALGORITMO: Processar Relatório de Vendas Diárias ENTRADA: Lista de transações de vendas diárias SAÍDA: Total de vendas, venda média, maior venda PASSO 1: DEFINIR total COMO 0 PASSO 2: DEFINIR contagem COMO 0 PASSO 3: DEFINIR maior COMO 0 PASSO 4: PARA cada transação na lista de vendas FAÇA DEFINIR valor COMO valor da transação DEFINIR total COMO total + valor DEFINIR contagem COMO contagem + 1 SE valor for maior que maior ENTÃO DEFINIR maior COMO valor FIM SE FIM PARA PASSO 5: SE contagem for maior que 0 ENTÃO DEFINIR media COMO total dividido por contagem SENÃO DEFINIR media COMO 0 FIM SE PASSO 6: IMPRIMIR "Total de Vendas: " + total PASSO 7: IMPRIMIR "Número de Transações: " + contagem PASSO 8: IMPRIMIR "Venda Média: " + media PASSO 9: IMPRIMIR "Maior Venda: " + maior FIM ALGORITMO
100%

Exercícios Práticos

Exercício 1: Rastreie o Loop

Qual é a saída deste algoritmo?

ALGORITMO: Loop Mistério PASSO 1: DEFINIR x COMO 1 PASSO 2: ENQUANTO x for menor que 20 FAÇA DEFINIR x COMO x multiplicado por 2 IMPRIMIR x FIM ENQUANTO FIM ALGORITMO

Exercício 2: Escreva um Loop PARA

Escreva um algoritmo usando um loop PARA que:

  • Lê um número N
  • Imprime todos os números pares de 2 a N
  • Conta quantos números pares foram impressos

Exercício 3: Escreva um Loop ENQUANTO

Escreva um algoritmo usando um loop ENQUANTO que:

  • Continua pedindo números ao usuário
  • Para quando o usuário digitar 0
  • Imprime a soma de todos os números digitados (excluindo o 0)

Exercício 4: Corrija o Loop Infinito

Este algoritmo tem um loop infinito. Corrija-o:

ALGORITMO: Contar até 10 PASSO 1: DEFINIR i COMO 1 PASSO 2: ENQUANTO i for menor ou igual a 10 FAÇA IMPRIMIR i FIM ENQUANTO FIM ALGORITMO

Exercício 5: Desafio de Loop Aninhado

Escreva um algoritmo que imprima este padrão usando loops aninhados:

* ** *** **** *****

O algoritmo deve funcionar para qualquer tamanho N (o exemplo mostra N = 5).

Exercício 6: Design do Mundo Real

Projete um algoritmo para uma biblioteca que:

  • Tem uma lista de livros atrasados
  • Para cada livro atrasado, calcula a multa (R$0,50 por dia)
  • Mantém um total acumulado de todas as multas
  • Imprime um relatório com a multa de cada livro e o total

Resumo

Nesta lição, você aprendeu:

  • Loops ENQUANTO: Repetem enquanto uma condição é verdadeira (verificação antes)
  • Loops PARA: Repetem um número conhecido de vezes (iteração estruturada)
  • Loops REPITA-ATÉ: Executam pelo menos uma vez, depois verificam a condição
  • Loops aninhados: Loops dentro de loops para tarefas multidimensionais
  • Estratégias de terminação: Contadores, sentinelas e flags
  • Erros comuns: Loops infinitos, erros de off-by-one e atualizações faltando
Success

Loops são o motor da eficiência algorítmica. Eles permitem que você lide com tarefas de qualquer tamanho com uma pequena quantidade de código. Domine loops, e você poderá resolver problemas que seriam impossíveis de escrever passo a passo.

Termos-Chave

TermoDefinição
LoopUma estrutura que repete um conjunto de instruções
Loop ENQUANTORepete enquanto uma condição é verdadeira (verificação prévia)
Loop PARARepete um número conhecido de vezes
Loop REPITA-ATÉExecuta pelo menos uma vez, repete até a condição ser verdadeira (verificação posterior)
IteraçãoUma execução completa do corpo do loop
Loop AninhadoUm loop colocado dentro de outro loop
Valor SentinelaUm valor especial que sinaliza o fim da entrada
Loop InfinitoUm loop que nunca termina
Erro de Off-by-oneUm erro comum onde o loop executa uma vez a mais ou a menos
Progresso63%