Capítulo 15: Matrizes Bidimensionais (Tabelas e Grades em Memória)
🎯 Objetivo da Aula
Uma lista unidimensional (vetor) resolve problemas simples, mas a maioria das informações empresariais é inerentemente bidimensional: planilhas do Excel, relatórios de vendas por filial e mês, tabuleiros de xadrez e posições de paletes em armazéns verticais.
Nesta aula, você aprenderá a:
- Compreender o conceito de Matriz Bidimensional (Array 2D / Tabela em Memória).
- Dominar a sintaxe de declaração:
nomeMatriz : vetor [1..Linhas, 1..Colunas] de tipo. - Acessar e alterar elementos utilizando o par de coordenadas cartesianas
matriz[linha, coluna]. - Percorrer e imprimir tabelas completas com Laços Aninhados (
iej).
📥 Material de Apoio e Código-Fonte da Aula:
- 📄 Arquivo Pronto (.alg): Baixar Capitulo_15.alg (abra diretamente no VisuAlg 3.0)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_15.zip
🏢 O Cenário Prático (Seu Desafio)
Situação: O Diretor de Operações da FastLog administra 3 Filiais (SP, RJ, PR). Cada filial comercializa 3 Categorias de Produtos (Insumos, Peças, Embalagens). Ele precisa de um sistema no terminal que permita digitar o saldo de estoque de cada categoria em cada filial e exiba uma Matriz Consolidada de Estoques 3×3 perfeitamente alinhada em formato de tabela.
Missão: Você deve construir a Grade de Estoque Multirregional FastLog, utilizando uma matriz bidimensional de números inteiros preenchida interativamente pelo teclado.
🧠 Fundamentos: A Estrutura de uma Matriz 2D
1. Linhas e Colunas na Memória
Uma Matriz é um vetor de vetores: uma grade bidimensional organizada em Linhas Horizontais ($L$) e Colunas Verticais ($C$):
graph TD
subgraph Matriz_Estoque ["Matriz 3x3: estoque[linha, coluna]"]
E11["[1,1]: SP/Insumos"] --- E12["[1,2]: SP/Peças"] --- E13["[1,3]: SP/Embalagens"]
E21["[2,1]: RJ/Insumos"] --- E22["[2,2]: RJ/Peças"] --- E23["[2,3]: RJ/Embalagens"]
E31["[3,1]: PR/Insumos"] --- E32["[3,2]: PR/Peças"] --- E33["[3,3]: PR/Embalagens"]
end
style E11 fill:#2980b9,stroke:#fff,color:#fff
style E12 fill:#2980b9,stroke:#fff,color:#fff
style E13 fill:#2980b9,stroke:#fff,color:#fff
style E21 fill:#27ae60,stroke:#fff,color:#fff
style E22 fill:#27ae60,stroke:#fff,color:#fff
style E23 fill:#27ae60,stroke:#fff,color:#fff
style E31 fill:#8e44ad,stroke:#fff,color:#fff
style E32 fill:#8e44ad,stroke:#fff,color:#fff
style E33 fill:#8e44ad,stroke:#fff,color:#fff2. A Sintaxe de Declaração no VisuAlg
Na seção var:
A Regra Mnemônica Clássica: “LC” (Linha primeiro, Coluna depois):matriz[2, 3] refere-se à Linha 2, Coluna 3. Nunca inverta a ordem das coordenadas!
3. Preenchimento e Exibição de Matrizes com Laços Aninhados
📖 Exemplo Guiado: Grade de Estoque Multirregional (3×3)
Código do Algoritmo:
✅ Exemplo de Execução no Console (F9):
🛠️ Prática Obrigatória 1: Mapa de Ocupação de Posições no Galpão (3×3)
Passo 1: O Desafio
Crie um algoritmo "Mapa_Galpao_3x3" que declare uma matriz de inteiros 3×3 representando as 9 posições físicas de armazenagem do galpão:
- Digite
0para Posição Vazia e1para Posição Ocupada por Palete. - Ao final, imprima a grade visual com colchetes
[0]e[1]e conte quantas posições estão ocupadas e quantas estão livres.
✅ Resultado Esperado (Prática 1):
🛠️ Prática Obrigatória 2: Matriz de Faturamento Semestral de 2 Unidades (2×3)
Crie um algoritmo "Faturamento_2x3" que declare uma matriz de real de dimensão 2x3 (2 Filiais × 3 Meses do Trimestre).
O programa deve:
- Receber os valores de faturamento de cada filial mês a mês.
- Imprimir a tabela formatada com moeda (R$).
✅ Resultado Esperado (Prática 2):
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_15_SeuNome_SeuSobrenome.alg. - Verifique se o desenho da tabela no console mantém o alinhamento das colunas com espaçadores (
:8). - No Microsoft Teams, envie na tarefa “VisuAlg Cap 15 - Matrizes 2D”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica & Engenharia de Software
Você acabou de dominar Tabelas Relacionais em Memória. Softwares de planilhas eletrônicas (como o Microsoft Excel e Google Sheets) e bancos de dados SQL armazenam suas tabelas de dados exatamente sob o modelo matricial de linhas e colunas bidimensionais.
🔥 Desafio de Fixação: Matriz Identidade de Ordem 3
Crie um algoritmo que preencha automaticamente uma matriz 3×3 com a Matriz Identidade (colocando o valor 1 onde a linha for igual à coluna l = c, e 0 em todas as outras posições), imprimindo a grade na tela sem pedir digitação ao usuário.
🔑 Gabarito de Código Completo
Prática 1:
Prática 2:
Desafio:
📝 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.
- O que é uma Matriz, segundo a definição apresentada nos Fundamentos deste capítulo?
- Escreva a sintaxe de declaração, na seção
var, de uma matriz de inteiros com 3 linhas e 3 colunas. - O que diz a regra mnemônica “LC” apresentada no aviso importante, e o que representa exatamente
matriz[2, 3]? - No trecho de preenchimento e exibição com laços aninhados, para que serve o comando
escreval("")colocado logo após ofimparado laço interno, na etapa de impressão tabular? - No Cenário Prático, quantas filiais e quantas categorias de produtos a FastLog administra, e qual é a dimensão resultante da matriz de estoques?
- No algoritmo
Matriz_Estoque_Regional, o que a variáveltotalGeralacumula, e dentro de qual dos dois laços aninhados ela é incrementada? - Na Prática Obrigatória 1 (
Mapa_Galpao_3x3), o que significam os valores0e1digitados para cada posição da grade? - Na Prática Obrigatória 2 (
Faturamento_2x3), qual é a dimensão da matriz de faturamento (quantas filiais por quantos meses)? - Segundo o Checkpoint de Lógica, quais dois tipos de software citados armazenam suas tabelas de dados sob o modelo matricial de linhas e colunas?
- Segundo os objetivos da aula, qual é o par de coordenadas usado para acessar e alterar um elemento específico dentro de uma matriz?