Universidade Federal do Pará
Centro de Ciências Exatas e Naturais
Curso de Bacharelado em Ciência da Computação
Estrutura de Dados I
Profº.: ABC Sampaio
Matrizes
&
Matrizes Especiais
Equipe
Adriano Martins - 0008802001
Marcelo Malcher - 0008802801
Luiz Tomé
- 0008803501
Noção de Matriz

Chama - se de matriz m x n toda tabela T de
dados homogêneos organizados de forma
contígua na memória.

Exemplo:
2
4
7
3
-5
0
10
1/3 -3/8
Armazenamento na memória

Uma matriz é armazenada na memória de forma
contígua, ou seja, seus elementos estão todos
uma ao lado do outro, ocupando um espaço
continuo na memória.
....
a11
a12
a13
....
Classificação das Matrizes
Matrizes Unidimensionais – Vetores
 Matrizes N-dimensionais

Matrizes Unidimensionais

Definição: Chamamos de matrizes
unidimensionais aquelas que possuem apenas
uma única dimensão. Essas matrizes são
comumente chamadas de vetores (linha ou
coluna)

Exemplo:
f d b
7
0.1
2.8
Matrizes – N-Dimensionais

Operações
Em Pascal há somente duas operações básicas a
serem efetuadas em uma matriz.

São elas
- Consulta
- Atribuição
Veremos agora a implementação em
Pascal.
Pascal – Exibição
Procedure exibicao (M : array [1..5,1..5] of real) ;
Var i, j: integer
for i := 1 to 5 do
for j := 1 to 5 do
writeln ( M [i,j] );
End;
Pascal - Atribuição
Procedure atribuicao (M: array [1..5,1..5] of real);
var i, j: integer;
For i := 1 to 5 do
for j := 1 to 5 do
writeln (‘Digite o conteúdo da matriz’);
readln( M [i,j] );
End;
Matrizes Especiais






Matrizes Diagonais
Matrizes Triangulares
Matrizes Simétricas
Matrizes Anti-Simétricas
Matrizes Tri-diagonais
Matrizes Faixas
Matrizes Diagonais

Definição
 Modelagem
 Modelagem da Interface

Implementação das Operações
Definição

As Matrizes diagonais são aquelas cujos
elementos fora da diagonal principal são nulos,
ou seja, M[i,j]=0 caso i  j .
-13
0
0
0
51
0
0
0
7
0
0
0
OBS.:
Freqüentemente, o termo Matriz Diagonal se aplica somente as
matrizes quadradas (m = n), porém como o exemplo acima mostra
incluímos também as retangulares.
Modelagem

Uma matriz diagonal pode ser implementada no
Pascal como um vetor linha ou coluna, que
armazena apenas os elementos da diagonal
principal.
Modelagem da Interface
Type Diagonal = object
Vet: array [1..3] of string;
Procedure Inicializa;
Procedure MostrarDiagonal;
Procedure Consulta(i,j:integer);
Procedure Altera (i,j:integer; X:string);
End;
Implementação das Operações
Procedure diagonal.inicializa;
Var i: integer;
Begin
For i:=1 to 3 do
Read(vet[i]);
End;
Procedure Diagonal.MostrarDiagonal;
Var i: integer;
Begin
For i:=1 to 3 do
Writeln(vet[i]);
End;
Implementação das Operações
Procedure diagonal.consulta(i, j: integer);
Begin
If i <> j then
writeln (‘0’)
else
writeln (vet[i]);
End;
Procedure Diagonal.Altera(i,j: integer;X: string);
Begin
If i <> j then
writeln (‘Matriz Diagonal, não é possível alterar esse elemento.’)
else
vet[i]) := X;
End;
Matriz Triangular

Definição
 Modelagem
 Modelagem da Interface
 Implementação das Operações
Definição

Uma matriz M é dita triangular inferior se mij = 0
com i < j, e triangular superior se mij = 0 com
i>j
M=
1
0
0
0
2
8
0
0
3
7
6
0
Triangular Superior
Modelagem

Podemos representar uma matriz triangular
como sendo um vetor linha em que seus
elementos são os diferentes de 0 (zero).
Dispostos ordenadamente de acordo com seus
índices.
Modelagem da Interface
Type TriangularInf = object
vet: array [1..6] of integer;
Procedure Inicializa;
Procedure MostrarElementos;
Procedure Consulta(i,j:integer);
Procedure Altera (i,j:integer; X:string);
End;
Implementação das Operações
Procedure TriangularSup.inicializa;
Var i: integer;
Begin
For i:=1 to 6 do
Read(vet[i]);
End;
Procedure TriangularSup.MostrarElementos;
Var i: integer
Begin
For i:=1 to 6 do
Writeln(vet[i]);
End;
Implementação das Operações
Procedure TriangularSup.consulta(i, j: integer);
Begin
If i > j then
writeln (‘0’)
else writeln(vet[((i * (i-1) div 2)+ j)]);
End;
Procedure TrangularSup.Altera(i,j: integer;X: string);
Begin
If i > j then
writeln (‘Erro: não é possível alterar esse elemento.’)
else
vet[((i * (i-1) div 2)+ j)] := X;
End;
Matriz Simétrica

Definição
 Modelagem
 Modelagem da Interface
 Implementação das Operações
Definição

Uma matriz é dita simétrica quando ela é igual a
sua transposta, ou seja, ela é simétrica em
relação a diagonal principal.
2
-3
0
-3
1
5
0
5
4
Modelagem

Uma matriz simétrica pode ser representada
como um vetor linha que contém todos os seus
elementos distintos ordenados de acordo com
seus índices.
Modelagem da Interface
Type MatSimetrica = object
vet: array [1..6] of integer;
Procedure Inicializa;
Procedure MostrarSimetrica;
Procedure Consulta(i,j:integer);
Procedure Altera(i,j:integer; X: string);
end;
Implementação das Operações
Procedure MatSimetrica.inicializa;
Var i:integer;
Begin
For i:=1 to 6 do
Readln(vet[i]);
End;
Procedure MatSimetrica.MostrarSimetrica;
Var i: integer
Begin
For i:=1 to 6 do
Writeln(vet[i]);
End;
Implementação das Operações
Procedure MatSimetrica.Consulta(i,j: integer);
Var aux:integer;
Begin
if i > j then
Begin
aux:=j;
j:=i;
i:=aux;
End ;
Writeln ( vet[((i * (i-1) div 2)+ j)] );
End;
Implementação das Operações
Procedure MatSimetrica.Altera(i,j: integer;X: string);
Var aux:integer;
Begin
if i > j then
Begin
aux:=j;
j:=i;
i:=aux;
End ;
vet[((i * (i-1) div 2)+ j)] := X;
End;
Matriz Anti-Simétrica

Definição
 Modelagem
 Modelagem da Interface
 Implementação das Operações
Definição

Uma matriz é dita anti-simétrica, se e somente
se, ela for igual a sua transposta com o sinal
trocado, ou seja, M = - Mt
0
-3
-2
3
0
-5
2
5
0
Modelagem

A matriz anti-simétrica,pode ser representada
da mesma forma que a simétrica, usando um
único vetor
Modelagem da Interface
Type MatAntiSimetrica = object
vet: array [1..3] of integer;
Procedure Inicializa;
Procedure MostrarAntiSimetrica;
Procedure Consulta(i,j:integer);
Procedure Altera(i,j:integer; X: real);
End;
Implementação das Operações
Procedure MatAntiSimetrica.inicializa;
Var i:integer;
Begin
For i:=1 to 3 do
Readln(vet[i]);
End;
Procedure MatAntiSimetrica.MostrarAntiSimetrica;
Var i: integer
Begin
For i:=1 to 3 do
Writeln(vet[i]);
End;
Implementação das Operações
Procedure MatAntiSimetrica.Consulta(i,j: integer);
Var aux:integer; AS: Boolean;
Begin
AS:=False;
if i > j then
Begin
aux:=j;
j:=i;
i:=aux;
AS := True;
End ;
Implementação das Operações
if i = j then writeln(‘0’)
else
Begin
If AS then writeln ( (-1*vet[((i * (i-1) div 2)+ j)]) );
else writeln (vet[((i * (i-1) div 2)+ j)]);
End;
End;
Implementação das Operações
Procedure MatAntiSimetrica.Altera(i,j: integer; X:real);
Var aux:integer; AS: Boolean;
Begin
AS:=False;
if i > j then
Begin
aux:=j;
j:=i;
i:=aux;
AS := True;
End ;
Implementação das Operações
if i = j then writeln(‘Matriz Anti-Simétrica, impossível alterar
esse elemento.’)
else
Begin
If AS then vet[((i * (i-1) div 2)+ j)]) := -X;
else writeln (vet[((i * (i-1) div 2)+ j)]) := X;
End;
End;
Matriz Tri-Diagonais

Definição
 Modelagem
 Modelagem da Interface
 Implementação das Operações
Definição

É a matriz onde todos os seus elementos são
nulos exceto a diagonal principal e as
diagonais vizinhas mais próximas.
-1
4
0
0
0
3
5
1
0
0
0
2
-2
4
0
0
0
-1
6
9
0
0
0
2
1
Modelagem

Uma matriz tri-diagonal pode ser implementada
transferindo os elementos das três diagonais
para um vetor linha.
Modelagem da Interface
Type TriDiagonal = object
vet: array [1..7] of string;
Procedure Inicializa;
Procedure MostrarTriDiagonal;
Procedure Consulta(i,j:integer);
Procedure Altera(i,j:integer; X: string);
End;
Implementação das Operações
Procedure TriDiagonal.Inicializa;
Var i: integer;
Begin
For i:=1 to 7 do
Readln (vet[i]);
End;
Procedure TriDiagonal.MostrarTriDiagonal;
Var i:integer;
Begin
For i:=1 to 7 do
Writeln (vet[i]);
End;
Implementação das Operações
Procedure TriDiagonal.consulta(i, j: integer);
Begin
If (i > j + 1) or (j > i + 1) then
writeln (‘0’)
else writeln (vet [2i +j - 2]);
End;
Procedure TriDiagonal.Altera(i,j: integer;X: string);
Begin
If (i > j + 1) or (j > i + 1) then
writeln (‘Matriz Tri-Diagonal, não é possível alterar esse
elemento.’)
else vet [2i +j - 2] := X;
End;
Matriz Faixa

Definição
 Modelagem
 Modelagem da Interface
 Implementação das Operações
Definição

É semelhante a Matriz Tri-Diagonal, porém possibilita
ao usuário definir a faixa de vizinhança da diagonal
principal a qual os elementos serão não-nulos.
M=
7
5
0
0
0
0
0
4
0
-4
0
0
0
0
-2
3
8
-1
0
0
0
0
6
2
3
1
0
0
0
0
9
5
-4
3
0
M é uma matriz de
faixa 2x1
Modelagem

Existem duas formas possíveis de se modelar
esta matriz. A primeira consiste em usar um
único vetor com todos os elementos diferentes
de zero; a segunda consiste em usar n vetores
de acordo com o número diagonais da faixa.
Download

para pegar a apresentação