8.2Matrizes com Mais de Uma Dimensão
Este tipo de estrutura também tem sua principal utilização vinculada à criação de tabelas. Caracteriza-se por ser definida uma única variável vinculada dimensionada com um determinado tamanho. A dimensão de uma matriz é constituída por constantes inteiras e positivas. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados para indicar as variáveis simples.
A sintaxe do comando de definição de matrizes de duas dimensões é a seguinte:
Var
<nome_da_variável> : MATRIZ [<linha_inicial> .. <linha_final> , <coluna_inicial> .. <coluna_final> ] DE <tipo_de_dado>
Ex.: Var
m : Matriz [1 .. 5 , 1 .. 10] De Inteiro
Também é possível definir matrizes com várias dimensões, por exemplo:
Ex.: Var
N : Matriz [1 .. 4] De Inteiro
O : Matriz [1 .. 50 , 1 .. 4] De Inteiro
P : Matriz [1 .. 5, 1 .. 50 , 1 .. 4] De Inteiro
Q : Matriz [1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] De Inteiro
R : Matriz [1 .. 2 , 1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] De Inteiro
S : Matriz [1 .. 2 , 1 .. 2 , 1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] De Inteiro
A utilidade de matrizes desta forma é muito grande. No exemplo acima, cada matriz pode ser utilizada para armazenar uma quantidade maior de informações:
-
a matriz N pode ser utilizada para armazenar 4 notas de um aluno
-
a matriz O pode ser utilizada para armazenar 4 notas de 50 alunos.
-
a matriz P pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas.
-
a matriz Q pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas, de 3 turmas.
-
a matriz R pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas, de 3 turmas, de 2 colégios.
-
a matriz S pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas, de 3 turmas, de 2 colégios, de 2 cidades
8.2.1Operações Básicas com Matrizes de Duas Dimensões
Do mesmo modo que acontece com os vetores, não é possível operar diretamente com o conjunto completo, mas com cada um de seus componentes isoladamente.
O acesso individual a cada componente de uma matriz é realizado pela especificação de sua posição na mesma por meio do seu índice. No exemplo anterior foi definida uma variável M capaz de armazenar 10 número inteiros em cada uma das 5 linhas. Para acessar um elemento desta matriz deve-se fornecer o nome da mesma e o índice da linha e da coluna do componente desejado da matriz (um número de 1 a 5 para a linha e um número de 1 a 10 para a coluna, neste caso).
Por exemplo, M[1,1] indica o primeiro elemento da primeira linha da matriz, M[1,2] indica o segundo elemento da primeira linha da matriz, M[1,10] indica o último elemento da primeira linha da matriz e M[5,10] indica o último elemento da última linha da matriz
Da mesma forma como vetores, não é possível operar diretamente sobre matrizes como um todo, mas apenas sobre seus componentes, um por vez. Por exemplo, para somar duas matrizes é necessário somar cada um de seus componentes dois a dois. Da mesma forma as operações de atribuição, leitura e escrita de matrizes devem ser feitas elemento a elemento.
8.2.1.1Atribuição de Uma Matriz de Duas Dimensões
Na atribuição de matrizes, da mesma forma que nos vetores, além do nome da variável deve-se necessariamente fornecer também o índice do componente da matriz onde será armazenado o resultado da avaliação da expressão. O índice referente ao elemento é composto por tantas informações quanto o número de dimensões da matriz. No caso de ter duas dimensões, o primeiro número se refere à linha e o segundo número se refere à coluna da matriz em que se encontra a informação
Ex.: m[1,1] := 15
m[1,10] := 10
m[3,5] := 20
m[5,10] := 35
8.2.1.2Leitura de Dados de Uma Matriz de Duas Dimensões
A leitura de uma matriz é feita passo a passo, um de seus componentes por vez, usando a mesma sintaxe da instrução primitiva da entrada de dados, onde além do nome da variável, deve ser explicitada a posição do componente lido:
LEIA <nome_da_variável> [ <índice_1>, ... , < índice_n> ]
Uma observação importante a ser feita é a utilização de construções Para aninhadas ou encadeada a fim de efetuar a operação de leitura repetidas vezes, em cada uma delas lendo um determinado componente da matriz. Esta construção é muito comum quando se opera com matrizes, devido à necessidade de se realizar uma mesma operação com os diversos componentes das mesmas.
O algoritmo a seguir exemplifica a operação de leitura de uma matriz:
Algoritmo exemplo_leitura_de_matriz
Var
numeros : matriz[1..5, 1..10] de inteiro
i, j : inteiro
Início
Para i de 1 até 5 faça
Início
Para j de 1 até 10 faça
Início
Leia numeros[i,j]
Fim
Fim
Fim.
8.2.1.3Escrita de Dados de Uma Matriz de Duas Dimensões
A escrita de uma matriz obedece à mesma sintaxe da instrução primitiva de saída de dados e também vale lembrar que, da mesma forma que com vetores, além do nome da matriz, deve-se também especificar por meio do índice o componente a ser escrito:
ESCREVA <nome_da_variável> [ <índice_1> , ... , <índice_n> ]
O algoritmo a seguir exemplifica a operação de leitura e escrita de uma matriz, utilizando as construções Para aninhadas ou encadeadas:
Algoritmo exemplo_escrita_de_matriz
Var
numeros : matriz[1..5,1..10] de inteiro
i, j : inteiro
Início
Para i de 1 até 5 faça
Início
Para i de 1 até 10 faça
Início
Leia numeros[i,j]
Fim
Fim
Para i de 1 até 5 faça
Início
Para j de 1 até 10 faça
Início
Escreva numeros[i,j]
Fim
Fim
Fim.
Um exemplo mais interessante é mostrado a seguir, onde uma matriz de 5 linhas por 10 colunas é lida e guardada na matriz numeros. A seguir é efetuada e escrita a soma dos elementos da 2ª linha e também a soma dos elementos da 3ª coluna
Algoritmo exemplo_escrita_de_matriz_com_soma
Var
numeros : matriz[1..5,1..10] de inteiro
i, j : inteiro
somal2, somac3 : inteiro
Início
Para i de 1 até 5 faça
Início
Para i de 1 até 10 faça
Início
Leia numeros[i,j]
Fim
Fim
Para i de 1 até 5 faça
Início
Para i de 1 até 10 faça
Início
Escreva numeros[i,j]
Fim
Fim
somal2 := 0
somac3 := 0
Para j de 1 até 10 faça
Início
somal2 := somal2 + numeros[2,j]
Fim
Para i de 1 até 5 faça
Início
somac3 := somac3 + numeros[i,3]
Fim
Escrever “Soma Linha 2 = ”, somal2
Escrever “Soma Coluna 3 = ”, somac3
Fim.
|