Capítulo 15: Matrizes I: Tabelas de Dados

🎯 Objetivo da Aula

Um vetor é uma linha de dados. Uma Matriz é uma tabela inteira. Nesta aula, você aprenderá sobre as estruturas de dados bidimensionais. O objetivo é entender como localizar informações usando duas coordenadas: a Linha e a Coluna, permitindo que seu programa processe dados como se estivessem em uma planilha de Excel.


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

Situação: O galpão da FastLog é dividido em 3 corredores, e cada corredor tem 3 prateleiras (nichos). O Problema: Você precisa registrar a quantidade de caixas em cada endereço (Ex: Corredor 1, Prateleira 2).

Missão: Criar um mapa digital do galpão usando uma matriz 3x3 e exibir a ocupação total de cada setor.


🧠 Fundamentos: A Teoria Traduzida

1. O que é uma Matriz?

Pense em uma matriz como um prédio ou uma grade de coordenadas.

💺 Exemplo 1: Cotidiano (Cinema)

Localizar seu assento: Fila (Linha) F, Cadeira (Coluna) 12.

🏭 Exemplo 2: Técnico (Endereçamento de Galpão)

Localizar um pallet: Rua (Linha) 3, Prateleira (Coluna) 5.

graph TD
    M[Matriz Galpão]
    M --> L1[Rua 1]
    M --> L2[Rua 2]
    M --> L3[Rua 3]
    L1 --> C1["Endereço [1,1]"]
    L1 --> C2["Endereço [1,2]"]
    
    style C1 fill:#3498db,stroke:#fff,color:#fff

2. Declaração no VisuAlg

No VisuAlg, declaramos o intervalo das linhas e das colunas separados por vírgula dentro dos colchetes.

1
2
var
   galpao : vetor [1..3, 1..3] de inteiro

📖 Exemplo Guiado: Mapa de Galpão

Matrizes são tabelas com linhas e colunas. Para percorrer uma matriz, usamos dois laços para aninhados.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
algoritmo "Mapa_Galpao"
var
   grade : vetor [1..3, 1..3] de inteiro
   l, c : inteiro
inicio
   para l de 1 ate 3 faca
      para c de 1 ate 3 faca
         escreva("Qtd na Rua ", l, ", Prateleira ", c, ": ")
         leia(grade[l,c])
      fimpara
   fimpara
   
   escreval("--- MAPA VISUAL ---")
   para l de 1 ate 3 faca
      para c de 1 ate 3 faca
         escreva("[ ", grade[l,c], " ] ")
      fimpara
      escreval("")
   fimpara
fimalgoritmo

🛠️ Prática Obrigatória 1: Agenda de Contatos

Crie um algoritmo chamado “Agenda_Contatos”. Crie uma matriz de caractere com 3 linhas e 2 colunas. A Coluna 1 guarda o Nome e a Coluna 2 guarda o Telefone. Peça os dados e exiba a lista formatada no final.

✅ Resultado Esperado

1
2
3
Nome: João | Fone: 9988-7766
Nome: Ana     | Fone: 9955-4433
...

🛠️ Prática Obrigatória 2: Relatório de Vendas FastLog

Crie uma matriz 3x3 onde as linhas representam 3 Vendedores e as colunas os meses de Janeiro, Fevereiro e Março. Peça os valores de venda e, ao final, exiba a tabela organizada.

✅ Resultado Esperado

1
2
3
4
VENDAS TRIMESTRE:
[ 1500 ] [ 1200 ] [ 1800 ]
[ 2000 ] [ 2100 ] [ 1900 ]
...

🔥 Desafio de Fixação (Opcional): Matriz Identidade

Crie um programa que gere automaticamente uma matriz 3x3 onde a diagonal principal (quando linha = coluna) é preenchida com o número 1, e o restante com o número 0. Exiba a matriz na tela.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Em matrizes, a declaração é [1..L, 1..C].
  2. Salve os arquivos com a extensão .alg (Ex: Atividade_15_SeuNome.alg).
  3. Envie no Microsoft Teams na tarefa “VisuAlg Cap 15 - Matrizes Básicas”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
algoritmo "Agenda"
var
   contatos : vetor [1..3, 1..2] de caractere
   i : inteiro
inicio
   para i de 1 ate 3 faca
      escreva("Nome: ") leia(contatos[i,1])
      escreva("Fone: ") leia(contatos[i,2])
   fimpara
   para i de 1 ate 3 faca
      escreval("Nome: ", contatos[i,1], " | Fone: ", contatos[i,2])
   fimpara
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
algoritmo "Identidade"
var
   mat : vetor [1..3, 1..3] de inteiro
   l, c : inteiro
inicio
   para l de 1 ate 3 faca
      para c de 1 ate 3 faca
         se (l = c) entao
            mat[l,c] <- 1
         senao
            mat[l,c] <- 0
         fimse
         escreva(mat[l,c], " ")
      fimpara
      escreval("")
   fimpara
fimalgoritmo