Capítulo 11: Repita X Vezes (Loops Contados e Iterações)

🎯 Objetivo da Aula

Quando sabemos exatamente quantas vezes uma tarefa precisa ser executada (como carregar exatamente 10 paletes em uma carreta ou disparar 5 alertas sonoros na saída de um caminhão), não usamos laços infinitos nem laços abertos: utilizamos o laço com Contagem Pré-Determinada. No Scratch, essa estrutura é implementada através do bloco repita (N) vezes.

Ao final desta aula, você será capaz de:

  1. Compreender o funcionamento do laço contado com o bloco 🟠 repita (N) vezes.
  2. Compreender a equivalência visual com o clássico laço para / for de linguagens como Python, Java e C#.
  3. Criar e atualizar Variáveis Contadoras (contador / índice) dentro de repetições.
  4. Construir o Carregador de Lotes e Empilhador de Cargas da FastLog.

📥 Material de Apoio e Roteiro de Blocos:


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

Situação: A doca 04 da FastLog opera com um braço robótico de carregamento que transfere caixas de uma esteira para dentro do contêiner. Cada contêiner recebe um lote fixo de 8 caixas. Para cada caixa carregada, o sistema deve:

  1. Incrementar o contador de caixas de 1 em 1.
  2. Acumular o peso unitário de 125 kg por caixa.
  3. Emitir um sinal sonoro de encaixe.
  4. Ao atingir a oitava caixa, finalizar o lote e emitir o manifesto de carga completo.

Missão: Programar o ciclo exato de carregamento no Scratch sem duplicar linhas de código.


🧠 Fundamentos: O Laço Determinado (For Loop)

1. A Estrutura do Bloco repita (N) vezes

O bloco 🟠 repita ( ) vezes possui um campo numérico onde você define a quantidade exata de repetições:

graph TD
    A["Início: define N = 5"] --> B["Inicializa Contador = 1 e Peso = 0"]
    B --> C{"Contador <= N?"}
    C -- "SIM" --> D["1. Carrega Caixa<br/>2. Toca Som<br/>3. adicione 1 ao Contador"]
    D --> C
    C -- "NÃO (Completou N voltas)" --> E["Sai do laço e emite Manifesto de Carga"]
    
    style B fill:#e67e22,stroke:#fff,color:#fff
    style C fill:#f39c12,stroke:#fff,color:#fff
    style D fill:#3498db,stroke:#fff,color:#fff
    style E fill:#27ae60,stroke:#fff,color:#fff

2. A Mágica da Variável Contadora

Muitas vezes, além de repetir, precisamos saber em qual volta do laço nós estamos (para dizer “Carregando item 1 de 8”, “Carregando item 2 de 8”). Fazemos isso combinando o laço com uma variável contadora:

1
2
3
4
5
mude [contador v] para (1)
repita (5) vezes
    diga (junte [Processando lote número: ] (contador)) por (1.5) segundos
    adicione (1) a [contador v] // Incrementa a cada volta!
fim

3. Clones: Criando Cópias Independentes de um Ator

Na Prática Obrigatória 2 deste capítulo você vai usar um bloco novo, da categoria 🟣 Controle: crie clone de [este ator v]. Um clone é uma cópia temporária e independente de um ator: ele nasce com as mesmas fantasias, sons e scripts do ator original, mas passa a ter sua própria posição e suas próprias variáveis locais na tela — como se cada palete empilhado no armazém fosse uma cópia idêntica do primeiro palete, só que ocupando uma posição diferente na pilha. O bloco 🟣 crie clone de [este ator v] simplesmente dá a ordem de nascimento: toda vez que ele é executado, um novo clone aparece exatamente na posição em que o ator original estava naquele instante.


📖 Exemplo Guiado: Carregamento de Lote na Carreta

Passo a Passo no Scratch 3.0:

  1. Crie as variáveis globais: Caixas_Carregadas e Peso_Total.
  2. Adicione o ator Braco_Robotico (ou Caminhao).
  3. Monte o script a seguir:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
quando clicar em 🏁
mude [Caixas_Carregadas v] para (0)
mude [Peso_Total v] para (0)
diga [Iniciando carregamento do lote padrão de 8 volumes...] por (2) segundos

// Laço determinado de 8 repetições
repita (8) vezes
    adicione (1) a [Caixas_Carregadas v]
    adicione (125) a [Peso_Total v]
    toque o som [Collect v] até o fim
    diga (junte (junte [Volume #] (Caixas_Carregadas)) [ embarcado!]) por (0.8) segundos
    espere (0.2) segundos
fim

// Bloco executado imediatamente após o término das 8 repetições:
toque o som [Tada v]
diga [LOTE COMPLETO: 8 caixas embarcadas (Peso: 1.000 kg)!] por (3) segundos

🛠️ Prática Obrigatória 1: Gerador de Tabuada de Fretes

O Desafio:

O setor de cotações da FastLog precisa de uma tabela rápida de frete para viagens curtas de 10 a 50 km:

  1. Crie a variável KM inicializada em 10.
  2. Use o bloco repita (5) vezes:
    • Calcule o custo a R$ 4,00 por km: mude [Custo v] para ((KM) * (4)).
    • Diga (junte (junte (KM) [ km = R$ ]) (Custo)) por 1.5 segundos.
    • Adicione 10 à variável KM: adicione (10) a [KM v].

🛠️ Prática Obrigatória 2: Animação de Empilhamento de Paletes

O Desafio:

Crie o ator Palete_Movel:

  1. Defina a posição inicial no chão: $x: 0, y: -120$.
  2. Use o bloco repita (4) vezes:
    • Crie um clone do palete: crie clone de [este ator v].
    • Suba 25 pixels na vertical: adicione (25) ao y.
    • Toque o som [Wood Tap v].
    • Espere 0.4 segundos.
  3. Observe a pilha de 4 paletes sendo erguida visualmente no armazém!

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo do projeto com o nome: Atividade_11_SeuNome_SeuSobrenome.sb3.
  2. Teste e comprove que o laço roda rigorosamente a quantidade de vezes especificada.
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 11 - Laços Contados”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Iteradores e Batch Processing (Processamento em Lote). Sistemas bancários e rotinas noturnas de faturamento corporativo agrupam milhares de faturas e as processam em blocos fechados usando esse exato modelo matemático de laço contado.


🔥 Desafio de Fixação: Lote Dinâmico com Pergunta

Pergunte ao operador: [Quantos volumes serão embarcados nesta remessa?]. Pegue a resposta e encaixe diretamente dentro do campo numérico do bloco repita (resposta) vezes! Teste digitando 3, depois teste digitando 10!


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

1
2
3
4
5
6
7
8
9
[Ator: Tabela_Frete]
quando clicar em 🏁
mude [KM v] para (10)
repita (5) vezes
    mude [Custo v] para ((KM) * (4))
    diga (junte (junte (KM) [ km = R$ ]) (Custo)) por (1.5) segundos
    adicione (10) a [KM v]
fim
diga [Tabela de tarifas concluída!] por (2) segundos

Prática 2:

1
2
3
4
5
6
7
8
9
[Ator: Palete_Movel]
quando clicar em 🏁
vá para x: (0) y: (-120)
repita (4) vezes
    crie clone de [este ator v]
    adicione (25) ao y
    toque o som [Wood Tap v]
    espere (0.4) segundos
fim

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Ator: Guindaste]
quando clicar em 🏁
pergunte [Quantos volumes serão embarcados nesta remessa?] e espere
mude [Total_Desejado v] para (resposta)
mude [Contador v] para (1)

repita (Total_Desejado) vezes
    diga (junte (junte [Embarcando item ] (Contador)) (junte [ de ] (Total_Desejado))) por (1.2) segundos
    toque o som [Collect v]
    adicione (1) a [Contador v]
    espere (0.3) segundos
fim
toque o som [Tada v]
diga [Todos os volumes do pedido foram embarcados com sucesso!] por (3) segundos

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_11.txt ou o pacote compactado (.zip) com os scripts e desafios da aula.


📝 Atividade Extra: Questionário de Fixação (Caderno)

Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.

  1. Qual bloco do Scratch é usado para criar um laço com contagem pré-determinada, quando já sabemos exatamente quantas vezes a tarefa deve se repetir?
  2. Além de usar o bloco de repetição, o que precisamos criar e atualizar dentro do laço para saber “em qual volta” ele está?
  3. No Exemplo Guiado do Carregamento de Lote, quais os nomes das duas variáveis globais criadas no início do script?
  4. Quantas repetições o laço executa no Exemplo Guiado de Carregamento de Lote, e quanto peso (em kg) é somado à variável de peso a cada repetição?
  5. Na Prática Obrigatória 1 (Tabuada de Fretes), qual é o valor inicial da variável KM e qual valor é somado a ela a cada repetição do laço?
  6. Qual operação matemática é usada para calcular a variável Custo na Prática Obrigatória 1?
  7. Na Prática Obrigatória 2 (Animação de Empilhamento de Paletes), quantas vezes o laço se repete e quantos pixels o ator sobe no eixo Y a cada repetição?
  8. Qual bloco é usado na Prática Obrigatória 2 para duplicar visualmente o palete a cada volta do laço?
  9. Qual é a posição inicial (x, y) definida para o ator Palete_Movel antes do laço começar, na Prática Obrigatória 2?
  10. Segundo o Checkpoint de Lógica & Engenharia de Software, a que conceito o laço “repita N vezes” está associado, e qual exemplo do mundo real (envolvendo faturas) é citado?