Ana səhifə

Universidade Regional Integrada do Alto Uruguai e das Missões Campus Frederico Westphalen Departamento de Engenharias e Ciência da Computação Algoritmos e Estrutura de Dados I informática I


Yüklə 0.52 Mb.
səhifə10/23
tarix25.06.2016
ölçüsü0.52 Mb.
1   ...   6   7   8   9   10   11   12   13   ...   23

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.
1   ...   6   7   8   9   10   11   12   13   ...   23


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət