1. 1
Estruturas CompostasEstruturas Compostas
HomogêneasHomogêneas
(Matrizes)(Matrizes)
Programação I
ALG
2
Matrizes
Vimos que vetores são utilizados para armazenar dados de uma
única “fileira”.
Porém, existem situações em que a natureza dos dados exige uma
forma de armazenamento em mais de uma dimensão.
Para estas situações, existem as matrizes, que podem ser vistas
como vetores que possuem mais de uma dimensão (normalmente
duas).
Por ser bidimensional, uma matriz representa uma tabela de valores
colocados em linhas e colunas.
Para identificar um valor é necessário informar a linha e a coluna
Conhecidas como tabelas, ou variáveis indexadas bidimensionais
Um vetor pode ser visto como uma matriz com uma única linha.
3
Matrizes
Sintaxe para declaração de uma matriz:
Sintaxe para referenciação de uma posição:
Exemplos:
Declaração:
Referenciação:
<var> : vetor[<inicio1>..<fim1>,<inicio2>..<fim2>,...] de <tipo>;
valor : vetor[1..3,1..4] de real;
valor[1,1] <- 8.50;
<nome_vetor>[<posicao1>,<posicao2>,...];
valor[2,3] <- 7.3;
4
Matrizes
Exemplo
Um distribuidor de refrigerantes vende seu produto em todo o
país. Em cada trimestre do ano passado ele vendeu uma certa
quantidade de garrafas em cada região do Brasil. Faça um
algoritmo para ler as quantidades vendidas e escrever a
quantidade total vendida em todo o país.
Solução
Pelo enunciado do problema, vimos que existem 20 dados de
entrada, pois temos 4 trimestres no ano e cada trimestre teve
uma venda para cada uma das cinco regiões do Brasil.
O enunciado do problema também no leva a concluir que
devemos utilizar uma estrutura matricial ao invés de vetorial.
Temos vendas para regiões por trimestre.
5
Matrizes
Solução (cont.)
A tabela abaixo mostra uma representação possível para os dados do
problema:
840260014001600210
50021009501000140
65023001100980180
40015009001150150
1 - Norte 2 - Nordeste 3 - Sul 4 - Sudeste 5 – Centro-
Oeste
1º Trimestre
2º Trimestre
3º Trimestre
4º Trimestre
6
Matrizes
Solução (cont.):
Então o algoritmo fica assim:
Variáveis
quant : vetor[1..4,1..5] de inteiro;
i, j, soma : inteiro;
Início
para i de 1 até 4 faça
para j de 1 até 5 faça [[
escrever “Informe a quantidade do “, i, “º trimestre e “, j, “ª região: “;
ler quant[i,j];
]];
soma = 0;
para i de 1 até 4 faça
para j de 1 até 5 faça
soma = soma + quant[i,j];
escrever “O total das quantidades vendidas é ”, soma;
Fim.
2. 2
7
Matrizes em VisuAlg
Acessando os elementos de um array multidimensional:
var
i , j : inteiro
a : vetor [1..3, 1..2] de inteiro
inicio
para i de 1 ate 3 faca
para j de 1 ate 2 faca
escrevaL(a[ i , j ] )
fimpara
fimpara
fimalgoritmo
8
Solução Exemplo em VisuAlg
algoritmo "matriz_vendas"
var
quant : vetor [1..4, 1..5] de inteiro
i , j , soma : inteiro
inicio
para i de 1 ate 4 faca
para j de 1 ate 5 faca
escreva("Informe a quantidade do ", i,"º trimestre e ", j, "ª região: ")
leia(quant[ i , j ])
fimpara
fimpara
soma <- 0
para i de 1 ate 4 faca
para j de 1 ate 5 faca
soma <- soma + quant[ i , j ]
fimpara
fimpara
escrevaL("O total das quantidades vendidas é ", soma)
fimalgoritmo
9
Matrizes
Exercício
Faça um programa que solicite ao usuário os dados de uma
matriz com 3 linhas e 4 colunas de números inteiros. Em
seguida, exiba a matriz digitada pelo usuário, colocando todos
os elementos de cada linha em uma mesma linha da tela.
10
Solução
algoritmo "matriz"
var
i , j : inteiro
a : vetor [1..3, 1..4] de inteiro
inicio
para i de 1 ate 3 faca
para j de 1 ate 4 faca
escreva("digite o valor do elemento da ",i,"º linha e ",j,"º coluna: ")
leia(a[ i , j ])
fimpara
fimpara
escrevaL("A matriz digitada foi:")
para i de 1 ate 3 faca
para j de 1 ate 4 faca
escreva(a[ i , j ] )
fimpara
escrevaL()
fimpara
fimalgoritmo
11
Matrizes
Exercícios
Faça um programa que leia uma matriz e exiba o menor valor, o
maior valor e a média dos elementos presentes nesta matriz.
Crie uma matriz 7x8 onde cada elemento é a soma dos índices
de sua posição dentro da matriz.
DÚVIDAS ?DÚVIDAS ?
Programação I
ALG