Estrutura de dados homogênea do tipo Matriz, capaz de armazenar vários valores do mesmo tipo de dados, em 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 e 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 no VisuAlg é a seguinte:
Var
Nome_da_matriz: vetor [linha_inicial .. linha_final , coluna_inicial .. coluna_final] de Tipo_de_dados
Exemplo:
Declaração de uma matriz 4x5 (quatro linhas e 5 colunas):
matriz: vetor [1..4,1..5] de inteiro
Também é possível definir matrizes com várias dimensões, por exemplo:
Matriz3dimensoes : vetor [1..4,1..5,1..7] de inteiro
Matriz4dimensoes : vetor [1..4,1..5,1..7,1..10] de inteiro
E assim por diante. A utilidade de matrizes, desta forma, é muito grande. No exemplo acima, cada matriz pode ser utilizada para armazenar uma quantidade maior de informações.
Operaçõ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 matriz capaz de armazenar 5 números inteiros em cada uma das 4 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 4 para a linha e um número de 1 a 5 para a coluna, neste caso).
Por exemplo:
• matriz[1,1] indica o primeiro elemento da primeira linha da matriz
• matriz[1,2] indica o segundo elemento da primeira linha da matriz
• matriz[1,5] indica o último elemento da primeira linha da matriz
• matriz[4,5] 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.
Atribuiçã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.
Exemplo:
matriz[1,1]:= 15
matriz[1,10]:= 10
matriz[3,5]:= 20
matriz[5,10]:= 35
Neste exemplo a posição linha 1 coluna 1 recebeu o valor de 15, a posição linha 1 coluna 10 recebeu o valor de 10 e assim por diante.
Leitura 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_matriz [Linha, Coluna])
Exemplo:
Leia ( matriz[1,1])
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:
Exemplo Leitura:
algoritmo "exemplo_leitura_de_matriz"
var
matriz:vetor[1..4,1..5] de inteiro
i, j : inteiro
inicio
Para i de 1 ate 4 faca
Para j de 1 ate 5 faca
leia (matriz[i, j])
fimpara
fimpara
fimalgoritmo
Veja uma possível saída do algoritmo, observe as posições de memória preenchidas pelos valores digitados pelo usuário:
Observe que a variável [i] do primeiro para é responsável por “andar” pelas linhas, quando ele entra no seu primeiro valor 1, o programa segue para o segundo para e o J é responsável por andar pelas colunas da matriz, no exemplo da coluna 1 a 5, após terminado o J, o programa volta para o primeiro para, que atualiza para a segunda linha, então o segundo para do J é executado de 1 a 5 novamente e assim por diante, até que toda a matriz tenha sido lida.
Veja o exemplo no GIF a seguir:
Escrita 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 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_matriz [Linha, Coluna])
Exemplo:
Escreva ( matriz[1,1])
O algoritmo a seguir exemplifica a operação de leitura e escrita de uma matriz, utilizando o laço contado Para:
Exemplo Escrita:
algoritmo "exemplo_escrita_de_matriz"
var
matriz:vetor[1..4,1..5] de inteiro
i, j : inteiro
inicio
Para i de 1 ate 4 faca
Para j de 1 ate 5 faca
leia (matriz[i, j])
fimpara
fimpara
Para i de 1 ate 4 faca
Para j de 1 ate 5 faca
escreva (matriz[i, j])
fimpara
fimpara
fimalgoritmo
Veja uma possível saída do algoritmo
Um exemplo mais interessante é mostrado a seguir, onde uma matriz de 4 linhas e 4 colunas é lida. Paralelamente, a soma destes números é calculada e mantida na variável soma, que posteriormente é escrita.
Este algoritmo foi escrito de maneira amigável para o usuário, pois mostra qual posição da matriz está sendo lida e escrita, e a matriz é escrita na forma de uma matriz convencional.
Exemplo:
algoritmo "exemplo_matriz_amigavel_soma"
var
matriz:vetor[1..4,1..4] de inteiro
i, j,soma : inteiro
inicio
soma:=0
Para i de 1 ate 4 faca
Para j de 1 ate 4 faca
escreval ("digite o valor para a posição [",i,"][",j,"]")
leia (matriz[i, j])
soma:= soma + matriz[i,j]
fimpara
fimpara
Para i de 1 ate 4 faca
escreval ("")
Para j de 1 ate 4 faca
escreva (matriz[i, j])
fimpara
fimpara
escreval ("")
escreval ("a soma dos valores da matriz é:", soma)
fimalgoritmo
Veja uma possível saída do algoritmo:
Canal: Node Studio Treinamentos
Site: Manual do VisuAlg 3.0