Capítulo 09: Introdução à Repetição (Loop ENQUANTO)

🎯 Objetivo da Aula

O computador é excelente em fazer a mesma coisa milhares de vezes sem se cansar. Nesta aula, você aprenderá sobre as Estruturas de Repetição (Loops). O objetivo é dominar o laço ENQUANTO (while), que permite que um bloco de código seja executado repetidamente enquanto uma condição for verdadeira.


🏢 O Cenário Prático (Seu Desafio)

Situação: A FastLog precisa imprimir 100 etiquetas de envio numeradas de 1 a 100. O Problema: Escrever 100 vezes o comando escreva seria um trabalho braçal e sujeito a erros.

Missão: Criar um “robô” que conte e escreva esses números para você em menos de 5 linhas de código.


🧠 Fundamentos: A Teoria Traduzida

1. O que é um Loop?

Um loop é um círculo. O computador lê o código e decide se deve repetir o bloco.

🏃 Exemplo 1: Cotidiano (Caminhada)

enquanto (não cheguei no destino) { dar um passo }

📦 Exemplo 2: Técnico (Carregamento)

enquanto (tem caixas no pátio) { carregar caminhão }

graph TD
    A[Início: pallet = 1] --> B{pallet <= 10?}
    B -- "Sim" --> C[Bipar Código de Barras]
    C --> D[Somar +1 ao contador]
    D --> B
    B -- "Não" --> E[Caminhão Liberado]
    
    style B fill:#f39c12,stroke:#fff,color:#fff

3. O Perigo do Loop Infinito

Se você esquecer de somar +1 ao contador, ele valerá sempre 1. A pergunta 1 <= 100 será sempre verdadeira e o computador ficará preso no círculo para sempre (ou até travar).


📖 Exemplo Guiado: Contador de Etiquetas

O laço enquanto repete um bloco de código enquanto a condição for verdadeira. Observe como o contador precisa ser atualizado:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
programa {
	funcao inicio() {
		inteiro contador = 1
		
		enquanto (contador <= 10) {
			escreva("Etiqueta de Envio Nº: ", contador, "\n")
			
			// Atualização (MUITO IMPORTANTE!)
			contador = contador + 1
		}
		
		escreva("Processo finalizado.")
	}
}

🛠️ Prática Obrigatória 1: Contagem Regressiva

Crie um programa que faça uma contagem regressiva de 10 até 0. Ao final, exiba a mensagem: “LANÇAR FOGUETE! 🚀”.

✅ Resultado Esperado

1
2
3
4
5
Tempo restante: 10
Tempo restante: 9
...
Tempo restante: 0
LANÇAR FOGUETE! 🚀

🛠️ Prática Obrigatória 2: Controle de Estoque Progressivo FastLog

Comece com estoque = 10. Enquanto o estoque for maior que 0, peça para o usuário digitar quantos itens saíram e subtraia do total. Quando chegar a 0, exiba “ESTOQUE ZERADO”.

✅ Resultado Esperado

1
2
3
Estoque atual: 10. Quantos itens saíram? 3
Estoque atual: 7. Quantos itens saíram? 7
ESTOQUE ZERADO - EMITIR COMPRA!

🔥 Desafio de Fixação (Opcional): Somador Infinito

Crie um programa que peça números ao usuário e vá somando-os. O programa só deve parar quando o usuário digitar o número 0. Ao final, exiba a soma total.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Certifique-se de que o contador sempre mude de valor para evitar um “Loop Infinito”.
  2. Salve os arquivos com a extensão .por (Ex: Atividade_09_SeuNome.por).
  3. Envie no Microsoft Teams na tarefa “Capítulo 09 - Laço Enquanto”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
programa {
	funcao inicio() {
		inteiro cont = 10
		enquanto (cont >= 0) {
			escreva("Tempo restante: ", cont, "\n")
			cont = cont - 1 
		}
		escreva("LANÇAR FOGUETE! 🚀")
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
programa {
	funcao inicio() {
		inteiro num = 1, soma = 0
		enquanto (num != 0) {
			escreva("Digite um número (0 para parar): ")
			leia(num)
			soma = soma + num
		}
		escreva("Soma total: ", soma)
	}
}