Capítulo 12: Laços de Repetição Aninhados

🎯 Objetivo da Aula

No mundo real, as coisas acontecem em ciclos dentro de ciclos. Nesta aula, você aprenderá sobre Laços Aninhados (um loop dentro do outro). O objetivo é entender como processar dados que possuem mais de uma dimensão, como uma planilha com várias colunas ou o funcionamento de um relógio digital.


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

Situação: A FastLog quer gerar um relatório de produtividade para 3 equipes, onde cada equipe será avaliada durante os 5 dias da semana. O Problema: Como fazer o computador percorrer cada equipe e, para cada uma delas, percorrer todos os dias da semana sem repetir código manualmente?

Missão: Criar uma estrutura de repetição dupla para gerar esse cronograma de avaliação.


🧠 Fundamentos: A Teoria Traduzida

1. O Conceito de Ninho

Imagine o ponteiro de um relógio: o ponteiro dos minutos precisa dar 60 voltas completas para que o ponteiro das horas dê apenas 1 passo.

⌚ Exemplo 1: Cotidiano (Relógio)

para hora de 1 ate 24 faca para min de 1 ate 60 faca ... fimpara fimpara

📊 Exemplo 2: Técnico (Tabela de Custos)

para regiao de 1 ate 5 faca para faixa_peso de 1 ate 10 faca ... fimpara fimpara

graph TD
    A[Início Loop Região] --> B[Início Loop Faixa Peso]
    B --> C{Fim da Faixa?}
    C -- "Sim" --> D[Próxima Região]
    C -- "Não" --> B
    
    style B fill:#8e44ad,stroke:#fff,color:#fff
    style D fill:#2ecc71,stroke:#fff,color:#fff

2. A Sintaxe no VisuAlg

Você pode colocar qualquer laço dentro de outro (para dentro de para, enquanto dentro de para, etc.).

1
2
3
4
5
para i de 1 ate 3 faca
   para j de 1 ate 5 faca
      // Este código rodará 15 vezes (3 * 5)
   fimpara
fimpara

📖 Exemplo Guiado: Cronograma de Avaliação

Loops aninhados (um dentro do outro) são usados para processar tabelas. O loop externo controla as linhas (Equipes) e o interno as colunas (Dias).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
algoritmo "Cronograma_Equipes"
var
   equipe, dia : inteiro
inicio
   para equipe de 1 ate 3 faca
      escreval(">>> EQUIPE: ", equipe)
      para dia de 1 ate 5 faca
         escreval("   Dia ", dia, ": Pendente")
      fimpara
   fimpara
fimalgoritmo

🛠️ Prática Obrigatória 1: Tabuadas Completas

Use dois laços para aninhados para exibir as tabuadas do 1 ao 5. Cada tabuada deve mostrar a multiplicação de 1 até 10.

✅ Resultado Esperado

1
2
3
4
5
6
TABUADA DO 1
1 x 1 = 1
...
TABUADA DO 2
2 x 1 = 2
...

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

Imagine um galpão com 3 corredores e 5 prateleiras em cada. Use loops aninhados para exibir o endereço de cada posição: “Corredor 1 - Prateleira 1”, “Corredor 1 - Prateleira 2”, etc.

✅ Resultado Esperado

1
2
3
4
Corredor 1 - Prateleira 1
Corredor 1 - Prateleira 2
...
Corredor 3 - Prateleira 5

🔥 Desafio de Fixação (Opcional): Desenhar Retângulo

Crie um programa que peça a largura e a altura de um retângulo ao usuário. Use loops aninhados para desenhar esse retângulo no console usando o caractere asterisco *.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. O loop interno deve completar todas as voltas antes que o externo mude de valor.
  2. Salve os arquivos com a extensão .alg (Ex: Atividade_12_SeuNome.alg).
  3. Envie no Microsoft Teams na tarefa “VisuAlg Cap 12 - Laços Aninhados”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
algoritmo "Tabuadas"
var
   i, j : inteiro
inicio
   para i de 1 ate 5 faca
      escreval("TABUADA DO ", i)
      para j de 1 ate 10 faca
         escreval(i, " x ", j, " = ", i * j)
      fimpara
   fimpara
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
algoritmo "Retangulo"
var
   l, a, i, j : inteiro
inicio
   escreva("Largura: ") leia(l)
   escreva("Altura: ") leia(a)
   para i de 1 ate a faca
      para j de 1 ate l faca
         escreva("* ")
      fimpara
      escreval("")
   fimpara
fimalgoritmo