Aula 9 - Matrizes

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.

1 - Matrizes

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.

Escute essa aula: Matrizes

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.

Escute essa aula: Matrizes - Atribuição

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:

Escute essa aula: Matrizes - Leitura

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

Escute essa aula: Matrizes - Escrita

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:

Escute essa aula: Matrizes

Links Úteis

Canal: Node Studio Treinamentos

Site: Manual do VisuAlg 3.0

Referências

  • CORMEN, Thomas H. et al. Algoritmos: teoria e prática. Editora Campus, v. 2, p. 296, 2002.
  • FARRER, Harry; BECKER, Christiano Gonçalves. Algoritmos estruturados: programação estruturada de computadores. Rio de Janeiro: Guanabara, 2000.
  • NETO, Benedito; PEREIRA, Diego; FERNANDES, Sabrina. Apostila de Algoritmo - CEP - Centro De Educação Profissional "Tacredo Neves".
  • Manual do VisuAlg 3.0