Capítulo 16: Matrizes II: Processamento Complexo

🎯 Objetivo da Aula

Uma tabela não serve apenas para guardar dados, mas para gerar informações. Nesta aula, você aprenderá a processar matrizes de forma avançada. O objetivo é dominar a técnica de percorrer a matriz para realizar Somas Totais, Médias por Linha e identificar padrões em grades de dados complexas.


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

Situação: O setor financeiro da FastLog registrou o faturamento de 3 filiais durante os primeiros 3 meses do ano em uma matriz 3x3. O Problema: O gerente precisa saber o faturamento total de cada filial separadamente (soma das linhas) e o faturamento total da empresa no trimestre (soma de toda a matriz).

Missão: Criar um programa que processe essa matriz financeira e gere os totais automaticamente.


🧠 Fundamentos: A Teoria Traduzida

1. Acumuladores em Matrizes

Para somar dados em uma tabela, usamos variáveis acumuladoras.

🎮 Exemplo 1: Cotidiano (Pontos de Jogo)

Somar a pontuação de 3 jogadores em 3 fases diferentes.

💰 Exemplo 2: Técnico (Faturamento de Filiais)

Somar o faturamento de 3 filiais da transportadora nos últimos 3 meses.

graph LR
    M[Matriz Financeira] --> L0[Filial Norte: Soma Linha 0]
    M --> L1[Filial Sul: Soma Linha 1]
    M --> L2[Filial Leste: Soma Linha 2]
    
    style L0 fill:#2ecc71,stroke:#fff,color:#fff

📖 Exemplo Guiado: Relatório de Faturamento

Para processar dados em matrizes, usamos acumuladores. Observe como zeramos a soma_filial dentro do primeiro loop para não misturar os dados:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
programa {
	funcao inicio() {
		real faturamento[3][3]
		real total_empresa = 0.0
		
		para (inteiro l = 0; l < 3; l++) {
			real soma_filial = 0.0
			para (inteiro c = 0; c < 3; c++) {
				escreva("Faturamento Filial ", l+1, " Mês ", c+1, ": ")
				leia(faturamento[l][c])
				soma_filial += faturamento[l][c]
			}
			escreva("TOTAL FILIAL: ", soma_filial, "\n")
			total_empresa += soma_filial
		}
		escreva("FATURAMENTO TOTAL: ", total_empresa)
	}
}

🛠️ Prática Obrigatória 1: Controle de Estoque por Setor

Crie uma matriz 2x2 representando 2 Galpões com 2 Prateleiras cada. O programa deve calcular e exibir a soma total de itens de cada prateleira (soma das colunas).

✅ Resultado Esperado

1
2
Total Prateleira 1: 40 itens
Total Prateleira 2: 60 itens

🛠️ Prática Obrigatória 2: A Diagonal Principal FastLog

Crie uma matriz 3x3 e exiba apenas os números que estão na diagonal principal (onde o índice da linha é igual ao índice da coluna: [0][0], [1][1], [2][2]).

✅ Resultado Esperado

1
2
3
4
DIAGONAL PRINCIPAL:
10
20
30

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

Crie um programa que gere automaticamente uma matriz 3x3 onde os elementos da diagonal principal são 1 e todos os outros são 0.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Dominar acumuladores em loops aninhados é essencial para relatórios financeiros.
  2. Salve os arquivos com a extensão .por (Ex: Atividade_16_SeuNome.por).
  3. Envie no Microsoft Teams na tarefa “Capítulo 16 - Processamento de Matrizes”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
programa {
	funcao inicio() {
		inteiro estoque[2][2] = {{10, 20}, {30, 40}}
		para (inteiro c = 0; c < 2; c++) {
			inteiro soma_prateleira = 0
			para (inteiro l = 0; l < 2; l++) {
				soma_prateleira += estoque[l][c]
			}
			escreva("Total Prateleira ", c+1, ": ", soma_prateleira, "\n")
		}
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
programa {
	funcao inicio() {
		inteiro m[3][3]
		para (inteiro l = 0; l < 3; l++) {
			para (inteiro c = 0; c < 3; c++) {
				se (l == c) { m[l][c] = 1 }
				senao { m[l][c] = 0 }
				escreva("[ ", m[l][c], " ] ")
			}
			escreva("\n")
		}
	}
}