Capítulo 12: Aninhamento de Blocos (Loops Dentro de Loops e Matrizes)

🎯 Objetivo da Aula

O espaço físico de uma empresa não é unidimensional: galpões possuem múltiplos corredores, e cada corredor possui dezenas de prateleiras verticais e horizontais. Para que um robô autônomo consiga escanear todas as gavetas de um armazém, precisamos de Laços Aninhados (Nested Loops): um laço externo que controla as linhas (andares) e um laço interno que percorre as colunas (posições).

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

  1. Compreender o funcionamento de Laços de Repetição Aninhados (repita dentro de repita).
  2. Calcular a relação multiplicativa total de iterações ($Linhas \times Colunas$).
  3. Controlar coordenadas bidimensionais ($X$ e $Y$) de forma sincronizada.
  4. Construir o Robô Autônomo de Inventário e Auditoria (AGV) da FastLog.

📥 Material de Apoio e Roteiro de Blocos:


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

Situação: A FastLog adquiriu um drone/robô leitor de código de barras para realizar a contagem noturna de estoque no galpão de peças. O armazém é organizado em uma matriz 2D:

  • São 3 Andares de Prateleiras (Eixo vertical Y).
  • Cada andar possui 4 Gavetas de Produtos (Eixo horizontal X).
  • Total a ser inspecionado: $3 \times 4 = 12$ gavetas.

Missão: Programar o robô no Scratch para percorrer linha por linha, bipando em cada gaveta e registrando a auditoria de todas as 12 posições sem intervenção humana.


🧠 Fundamentos: Como Funcionam os Laços Aninhados?

1. A Relação entre o Laço Externo e o Laço Interno

Imagine um relógio de ponteiros: o ponteiro dos minutos precisa dar 60 voltas completas para que o ponteiro das horas dê apenas 1 passo. Nos laços aninhados ocorre o mesmo:

graph TD
    A["Início: Laço Externo (Andares de 1 a 3)"] --> B["Posiciona no Andar Y"]
    B --> C["Entra no Laço Interno (Gavetas de 1 a 4)"]
    C --> D["Muda X, Toca Laser e Bipa Gaveta"]
    D --> E{"Terminou as 4 Gavetas?"}
    E -- "NÃO" --> C
    E -- "SIM" --> F["Desce/Sobe para o próximo Andar Y"]
    F --> G{"Terminou os 3 Andares?"}
    G -- "NÃO" --> B
    G -- "SIM" --> H["FIM DA AUDITORIA: 12 posições conferidas!"]
    
    style B fill:#e67e22,stroke:#fff,color:#fff
    style C fill:#3498db,stroke:#fff,color:#fff
    style D fill:#2980b9,stroke:#fff,color:#fff
    style H fill:#27ae60,stroke:#fff,color:#fff
  • Laço Externo: Executa 3 vezes (1 vez para cada andar de prateleira).
  • Laço Interno: Executa 4 vezes para CADA volta do laço externo ($3 \times 4 = 12$ execuções totais).

2. A Fórmula da Multiplicação de Iterações

$$\text{Total de Execuções} = \text{Repetições do Laço Externo} \times \text{Repetições do Laço Interno}$$

Se tivermos 5 corredores e 6 docas em cada um, o bloco interno rodará exatamente $5 \times 6 = 30$ vezes!


📖 Exemplo Guiado: Robô Leitor de Prateleiras 3×4

Passo a Passo no Scratch 3.0:

  1. Crie as variáveis globais: Pos_X, Pos_Y e Total_Auditado.
  2. Adicione o ator Robo_Auditor (ou uma esfera/drone).
  3. Insira o script com os dois laços encaixados:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
quando clicar em 🏁
mude [Total_Auditado v] para (0)
mude [Pos_Y v] para (80) // Andar Superior

// LAÇO EXTERNO (3 Andares de Prateleiras)
repita (3) vezes
    mude [Pos_X v] para (-150) // Reinicia na 1ª gaveta da esquerda
    
    // LAÇO INTERNO (4 Gavetas no mesmo andar)
    repita (4) vezes
        vá para x: (Pos_X) y: (Pos_Y)
        toque o som [Laser v]
        adicione (1) a [Total_Auditado v]
        diga (junte [Gaveta #] (Total_Auditado)) por (0.4) segundos
        adicione (100) a [Pos_X v] // Avança 100 pixels para a direita
        espere (0.2) segundos
    fim
    
    // Preparação para o próximo andar: desce 70 pixels no Y
    adicione (-70) a [Pos_Y v]
fim

// Conclusão da auditoria total:
toque o som [Tada v]
diga [INVENTÁRIO 100% CONCLUÍDO: 12 posições auditadas!] por (3) segundos

🛠️ Prática Obrigatória 1: Matriz de Lâmpadas do Pátio (Grade 2×3)

O Desafio:

Crie uma simulação de inspeção elétrica das 6 torres de iluminação do pátio (2 linhas de 3 refletores):

  1. Use um laço externo de 2 repetições (Linhas Norte e Sul).
  2. Use um laço interno de 3 repetições (Torres 1, 2 e 3).
  3. A cada torre visitada, troque o efeito visual da lâmpada para amarelo e toque o som [Bell].

🛠️ Prática Obrigatória 2: Varredura com Leitura de Peso Fictício

O Desafio:

Expanda o robô de inventário:

  1. A cada gaveta visitada no laço interno, sorteie um peso simulado de 10 a 50 kg usando o bloco verde 🟢 número aleatório entre (10) e (50).
  2. Acumule esse peso em uma variável Peso_Inventariado.
  3. Ao final de todas as gavetas, exiba o total acumulado de quilos armazenados na estante.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo do projeto com o nome: Atividade_12_SeuNome_SeuSobrenome.sb3.
  2. Observe o robô desenhando o padrão de “leitura de texto” (da esquerda para a direita, descendo linha por linha).
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 12 - Laços Aninhados”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Estruturas de Dados Matriciais e Varredura de Imagem (Raster Scan). É exatamente através de laços aninhados de Linha $\times$ Coluna que as placas de vídeo (GPU) desenham cada pixel na tela do seu computador e os algoritmos de Visão Computacional identificam placas de veículos em fotos.


🔥 Desafio de Fixação: Scanner de Galpão 4×4 com Alerta de Vazio

Crie uma matriz $4 \times 4$ (16 gavetas). Se o peso sorteado na gaveta for menor que 15 kg, emita um balão avisando: [GAVETA QUASE VAZIA - Reabastecer].


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Ator: Eletricista_Drone]
quando clicar em 🏁
mude [Y v] para (60)
repita (2) vezes
    mude [X v] para (-120)
    repita (3) vezes
        vá para x: (X) y: (Y)
        mude o efeito [cor v] para (40) // Amarelo
        toque o som [Bell v] até o fim
        adicione (120) a [X v]
        espere (0.3) segundos
    fim
    adicione (-100) a [Y v]
fim
diga [Todas as 6 torres inspecionadas!] por (2) segundos

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[Ator: Robo_Auditor]
quando clicar em 🏁
mude [Peso_Inventariado v] para (0)
mude [Pos_Y v] para (80)
repita (3) vezes
    mude [Pos_X v] para (-150)
    repita (4) vezes
        vá para x: (Pos_X) y: (Pos_Y)
        mude [Peso_Sorteado v] para (número aleatório entre (10) e (50))
        adicione (Peso_Sorteado) a [Peso_Inventariado v]
        adicione (100) a [Pos_X v]
        espere (0.2) segundos
    fim
    adicione (-70) a [Pos_Y v]
fim
diga (junte [Peso Total em Estoque: ] (junte (Peso_Inventariado) [ kg])) por (4) segundos

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[Ator: Scanner_Avancado]
quando clicar em 🏁
mude [Y_Coord v] para (90)
repita (4) vezes
    mude [X_Coord v] para (-150)
    repita (4) vezes
        vá para x: (X_Coord) y: (Y_Coord)
        mude [Peso_Sorteado v] para (número aleatório entre (5) e (50))
        se <(Peso_Sorteado) < (15)> então
            toque o som [Buzz v]
            diga [GAVETA QUASE VAZIA - Reabastecer] por (0.5) segundos
        senão
            toque o som [Pop v]
        fim
        adicione (100) a [X_Coord v]
    fim
    adicione (-60) a [Y_Coord v]
fim
diga [Varredura 4x4 concluída com sucesso!] por (3) segundos

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_12.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. O que são “Laços Aninhados” (Nested Loops) e qual bloco fica encaixado dentro de qual, segundo os Fundamentos?
  2. Qual é a fórmula usada para calcular o total de execuções em laços aninhados?
  3. No Exemplo Guiado (Robô Leitor de Prateleiras 3×4), quantas vezes o laço externo se repete e quantas vezes o laço interno se repete a cada volta do laço externo?
  4. Quais são os nomes das três variáveis globais criadas no Exemplo Guiado?
  5. No Exemplo Guiado, quantos pixels a variável Pos_X avança a cada gaveta visitada, e quantos pixels a variável Pos_Y diminui ao passar para o próximo andar?
  6. Na Prática Obrigatória 1 (Matriz de Lâmpadas do Pátio), quantas repetições tem o laço externo e quantas o laço interno, e o que cada um representa?
  7. Na Prática Obrigatória 2, qual bloco (verde) é usado para sortear um peso simulado a cada gaveta, e qual o intervalo de valores sorteados?
  8. Qual é o nome da variável criada na Prática Obrigatória 2 para acumular o peso sorteado a cada gaveta visitada?
  9. Segundo o Checkpoint de Lógica & Engenharia de Software, a que conceito do mundo real (relacionado a placas de vídeo/GPU) os laços aninhados em Linha × Coluna são comparados?
  10. Segundo o Cenário Prático, quantos andares de prateleiras e quantas gavetas por andar existem no armazém da FastLog, e qual é o total de gavetas a inspecionar?