Capítulo 09: Repetição I (ENQUANTO-FACA)

🎯 Objetivo da Aula

O computador nunca se cansa de repetir. Nesta aula, você aprenderá sobre o laço ENQUANTO-FACA (While). O objetivo é permitir que seu programa execute o mesmo bloco de código várias vezes enquanto uma condição for verdadeira, o que é fundamental para processar listas e conferir estoques.


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

Situação: Um caminhão de entrega da FastLog chegou com 10 pallets. O Problema: O conferente precisa bipar cada pallet, um por um. Fazer 10 códigos idênticos seria perda de tempo.

Missão: Criar um loop que conte e processe os 10 pallets automaticamente.


🧠 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) faca dar_um_passo fimenquanto

📦 Exemplo 2: Técnico (Carregamento)

enquanto (tem_caixas_no_patio) faca carregar_caminhao fimenquanto

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

2. A Sintaxe no VisuAlg

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
enquanto (condicao) faca
   // comandos que serão repetidos
## 📖 Exemplo Guiado: Conferência de Pallets
O laço `enquanto` executa um bloco enquanto uma condição for verdadeira. Lembre-se de sempre atualizar a variável de controle para evitar um loop infinito.

```pascal
algoritmo "Conferencia_Lote"
var
   contador : inteiro
inicio
   contador <- 1
   enquanto (contador <= 10) faca
      escreval("Bipando Pallet: ", contador)
      contador <- contador + 1
   fimenquanto
   escreval("--- LOTE CONFERIDO ---")
fimalgoritmo

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

Crie um algoritmo chamado “Regressiva”. Comece um contador em 10 e use o laço enquanto para diminuir o valor até chegar em 0. Exiba cada número no console.

✅ Resultado Esperado

1
2
3
4
10
9
...
0

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

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
4
5
Estoque Atual: 10
Saída: 3
Estoque Atual: 7
...
ESTOQUE ZERADO

🔥 Desafio de Fixação (Opcional): Média de Notas com Flag

Crie um programa que peça notas de alunos. O programa deve continuar pedindo notas enquanto a nota digitada for diferente de -1. No final, exiba a média das notas válidas digitadas.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Verifique se a variável de controle está sendo alterada dentro do loop.
  2. Salve os arquivos com a extensão .alg (Ex: Atividade_09_SeuNome.alg).
  3. Envie no Microsoft Teams na tarefa “VisuAlg Cap 09 - Laço Enquanto”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
algoritmo "Regressiva"
var
   i : inteiro
inicio
   i <- 10
   enquanto i >= 0 faca
      escreval(i)
      i <- i - 1
   fimenquanto
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
algoritmo "MediaNotas"
var
   nota, soma, cont : real
inicio
   nota <- 0
   enquanto (nota <> -1) faca
      escreva("Nota (-1 p/ sair): ") leia(nota)
      se (nota <> -1) entao
         soma <- soma + nota
         cont <- cont + 1
      fimse
   fimenquanto
   escreva("Média: ", soma / cont)
fimalgoritmo