Você está na página 1de 11

1

Instituto Luterano de Ensino Superior de Ji-Paran Curso Bacharelado em Informtica Estrutura de Dados I Prof.: Jos Luiz A. Duizith LINGUAGEM ALGORITMICA Variveis : Toda em maiscula : CONSTANTE Iniciando em Maiscula : Comum Toda em minscula : apontador Se (condio) Ento [ comando Seno [ comando

Atribuio : Condio :

[ -indica que a condio ter vrios comandos

Repetio :

- Enquanto (condio) faa comandos - Repita comandos at (condio) - Para varivel_contadora valor inicial at valor final faa comando

Subprogramas : - Procedimento nome (parmetros) - Funo nome (parmetros) : retorno OBS.: Qualquer varivel utilizada num subprograma que no for parmetro deve ser considerada como varivel local.

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

MATRIZES Matrizes : M = - 4.3 2.1 8.7 3.9

Pascal : Type Matriz = Array [1..2, 1..2] of Real; Var M : Matriz ; Algortmo : M ( I, J ) , I = 1..2, J = 1..2

MATRIZ UNIDIMENSIONAL (VETOR) Ex.: Matriz unidimensional de 6 elemetos reais com ndices entre -2 e 3. M(I), I = 2..3 M I Operaes : Alterao : dada uma matriz M, um ndice I e um valor V, o valor de V armazenado na posio M [ I ]. Consulta : dada uma matriz M, e um ndice I, retorna o valor V, armazenado na posio M [ I ].
Operaes Bsicas

7.2 3.5 0.4 -1.0 2.3 -9.2 -2 -1 0 1 2 3

elementos ndices

Procedimento Alterao ( M, Ind_Min, Ind_Max, I, V ) { M : Matriz unidimensional c/ ndices entre Ind_Min e Ind_Max I : ndice da posio a ser alterada V : valor a ser armazenado } Se ( Ind_Min <= I <= Ind_Max) Entao M [ I ] V Senao ERRO Funo Consulta (M, Ind_Min, Ind_Max, I) : V Se (Ind_Min <= I <= Ind_Max) Entao V M [ I ] Senao ERRO

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

Tratamento de Erro 1) Ignorar : em Pascal no teria a condio seno; 2) Terminar a Execuo : em Pascal, no h continuao do programa enquanto o erro no for solucionado; 3) Mensagens de Erro 4) Rotinas de Tratamento de Erro Pascal Var M = Array {-2,+3] of real; x : real Begin M [1] := 7; alterao x := M [2]; consulta, porm a matriz fica do lado direito Algoritmo (aplicao)
Parmetros do procedimento alterao

M ( I ) , I = -2..3 Alterao (M, -2, 3, 1, 7) x consulta (M, -2, 3, 2)

{ M [1] := 7 } { x := M [2] }
Parmetros da funo consulta

Representao Natural M (I) , I = a1..a2 M : Matriz (representao natural) I : ndice (representao natural) a1 : ndice inicial a2 : ndice final Ex.: M I 7.2 -2 a1 +3.5 -1 0.4 0 -1.0 1 2.3 2 -9.2 3 a2

Representao Linear L(J) L : Matriz (repres. Linear) J : ndice (repres. Linear) b : ndice inicial (base)

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

Ex.: L J Linearizao Transformao da representao natural em linear. Matriz Unidimensional : L [J] = M [I], onde J = b + I - a1 Ex.: 0 b 1000 1001 1002 1003 1004 1005 640 K 7.2 3.5 0.4 -1.0 2.3 -9.4 7.2 b 3.5 b+1 0.4 b+2 -1.0 b+3 2.3 b+4 -9.2 b+5

-2, -1, 0, 1, 2, 3

Matriz J

I=2 I = b + I -a1 I = 100 + 2 - (-2) I = 1004

MATRIZES BIDIMENSIONAIS Representao Natural M ( I1 , I2 ) , I1 = a1..a2, I2 = b1..b2 M I1 I2 x1 x2 Ex.: M= a1 0 1 a2 2 7 5 2 -2 b1 3 2 9 -1 4 3 8 0 0 -1 6 1 b2 : : : : : Matriz (repres. Natural) ndice da 1 dimenso (linha) ndice da 2 dimenso (coluna) valor inicial valor final

T1 T2

= b2 - b1 + 1
1 +2 + 1

(n de elementos por linha) (n de elementos da matriz)

= T1 (a2 - a1 + 1)
2 - 0 +1 n de linha

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

Representao Linear L (J), J = b..b + T2 - 1 L : matriz (repres. Linear) J : ndice ( repres. Linear) b : ndice inicial (base) L (J) = M ( I1, I2 ) onde: J = b + ( I1 - a1) * T1 + (I2 - b1) J = b + (I1 - a1) * (b2 - b1 + 1) + (I2 - b1) Ex.: Pascal: M = Array [ 0..2, -2..1 ] of integer { M [x,y] } ou M = Array [0..2] of Array [-2..1] of integer { M [x] [y] } [ [ 7 3 4 0 ] [ 5 2 3 -1] [ 2 9 8 6 ] ] Como ficaria armazenado na Ex.: Arquivo (est. Linear) matriz linear um arquivo b 1 2 3 4 5 6 7 8 9 10 11 12 7 3 4 0 5 2 3 -1 2 9 8 6 0 1 2 - - - -2 -1 - - 8 0 +1
Quero obter este n no arquivo. Qual a posio? I1 = 2 (3 linha) I2 = 0 (3 coluna) memria

J = b + (I1 - a1) * (b2 - b1 + 1) + (I2 - b1) J = 1 + (2 - 0) * (1 - (-2) + 1) + (0 - -(2)) J = 1 + (2) * (4) + 2 J=1+8+2 J = 11

Tem que calcular o ndice e recuperar a informao no arquivo. Porque os elementos esto armazenados em 1 arquivo. Aps descoberto o elemento no arquivo, volta a representao natural.

Funo Consulta ( M, I1, I2 , a1, a2, b1, b2, L, b ) : V


Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

Limites Base { esta funo executada na matriz de representao linear } Se (a1 <= I1 <= a2 ) e ( b1 <= I2 <= b2 ) Entao J b + ( I1 - a1 ) * ( b2 - b1 + 1 ) + ( I2 - b1 ) Posiciona no registro J V(J) Senao ERRO { ndice invlido } Procedimento Alterao ( M, I1, I2 , a1, a2, b1, b2, L, b, V) Se ( a1 <= I1 <= a2 ) e ( b1 <= I2 <= b2 ) Entao J b + ( I1 - a1 ) * ( b2 - b1 + 1 ) + ( I2 - b1 ) L(J)V Senao ERRO { ndice invlido }

MATRIZ TRIDIMENSIONAL ( 3 DIMENSES ) M ( I1, I2, I3 ) , I1 = a1..a2, I2 = b1..b2, I3 = c1..c2


Coluna Linha Profundidade

L ( J ) = M ( I1, I2, I3 ) , onde : J = b + ( I 1 - a 1 ) * ( b2 - b1 + 1 ) * ( c 2 - c 1 + 1 ) + ( I 2 - b1 ) * ( c 2 - c 1 + 1 ) + ( I 3 - c 1 ) n2 n3 J = b + ( I1 - a1 ) * n2 * n3 + ( I2 - b1 ) * n3 + ( I3 - c1 ) Ex.: Pascal M : Array [ 1..3, 0..1, -1..1 ] of integer M= I1 a1 3 2 a2 1 b1 0 b2 1 I2 81 -9 9 10 0 6 -5 71 5 -11 -14 1 c2 I3 Ex.: Por a matriz tridimensional em uma memria
Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

n3

11 -13 -3 31

-15 2

7 -5 -1 c1

0 1 999 1000 1001 2 3 4 5 6 7 8 9 10 1011 1012 7 9 -11 -5 10 -14 81 71 -3 -9 5 31 .... I1 = 2 I2 = 0 I3 = 1


J = b + (I1 - a1) * (b2 -b1+1) * (c2-c1+1) + (I2-b1) * (c2-c1+1) + (I3-c1) J = 1000 + (2-1) * (1-0+1) * (1 -(-1)+1) + (0-0*(1-(-1)+1)+(1-(-1)) J = 1000 + 1 * (2) * (3) + 2 J = 1000 + 6 + 2 J = 1008

Matriz de n dimenses M ( I1, I2, I3 , ... , Ik ) , I1 = a1..a2, I2 = b1..b2, I3 = c1..c2, Ix = z1..z2 L ( J ) = M (I1, I2, I3 , ... , Ik ) , onde J = b+(I1-a1) * n2 * n3 + ... + nk + (I2-b1) * n3 * n4 * ... * nk ... + (Ik - z1)

MATRIZES ESPECIAIS 1) Matriz Diagonal Supondo M (L,C) seja uma matriz diagonal ento qualquer elemento de coordenadas L <> C nulo. Ex.: M= 1 2 3 -3.5 0 0 1 0 7.4 0 2 0 0 8.3 3 0 0 0 4

Uma matriz diagonal pode ser armazenada em um vetor N (P), onde P o menor valor entre L e C de M.

Ex.: M (45,10)

P = 10, N (10)
Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

M (100,1000) P = 100, N (100) M (3,4) P = 3, N (3) N = [ -3.5 1 7.4 2 8.3 ] 3


Vetor N onde a matriz est armazenada

Funo Consulta ( M, I1, I2 , a1, a2, b1, b2, N, nulo) : Valor Se ( a1 <= I1 <= a2 ) e ( b1 <= I2 <= b2 ) Entao Se (I1 = I2) {diagonal principal} Entao V N [ I1 ] {pode ser I2, porque eles so iguais} Senao V Nulo Senao ERRO {ndice invlido} Procedimento Alterao ( M, I1, I2 , a1, a2, b1, b2, N, V ) Se ( a1 <= I1 <= a2 ) e ( b1 <= I2 <= b2 ) Entao Se (I1 = I2) Entao N [ I1 ] V {diagonal principal} Senao ERRO

MATRIZES ESPARSAS Uma matriz esparsa pode ser definida sumariamente como sendo aquela que possui a maioria dos valores nulos (em torno de 70%). Outra forma de caracterizar uma matriz esparsa : Seja M (L,C), L linha e C coluna, e K elemento no nulo, se 3 . K < L . C ento M considerada uma matriz esparsa; justificando mtodos de armazenamento mais sofisticados que ofeream economia de espao de armazenamento. a) Caso Unidimensional: Ex.: M ( I ) , I = 4..11 M = [ 2.0 4 Valores ndices 2.0 4 0.0 5 0.0 5 0.7 6 0.7 6 1.0 7 1.0 7 0.0 8 0.0 8 0.0 9 0.0 9 3.5 10 3.5 10 0.0 11 0.0 ] 11

2 vetores de 8 clulas 16 bytes

Para poupar espao, armazena-se apenas as informaes dos valores no nulos: Valores 2.0 0.7 1.0 3.5

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

ndices

10

-1

-1

Posio de folga (usa-se ndices <> da matriz normal). Criou-se p/ poder incluir outros valores neste vetor.

Para permitir que a representao de uma matriz esparsa (em 2 vetores) seja flexvel, adicionam-se posies de folga que so identificados por ndices fora do intervalo normal. b) Caso Bidimensional
Ex: M= 1 2 3 4 5

10 1 10 12 10
1

7 10 3 10 10
2

10 -2 10 10 10
3

10 10 10 10 10
4

10 10 10 10 10
5

10 10 10 10 10
6

5x6 = 30 clulas
1 clula = 1 byte = 30 bytes

Valor

7 1 2

1 2 1

-2 2 3

3 3 2

12 4 1

-1 -1 -1 -1 15 bytes = 15 clulas

ndice (linha) ndice (coluna)

Posio de folga

MTODO DA MATRIZ DE BITS Matriz de bits Vetor de valores no nulos Matriz de bits Tem as mesmas dimenses da matriz original, sendo que a posio de 1 valor no nulo na matriz original corresponde a um bit ligado (1) na matriz de bits e um valor nulo (na original) corresponde a um bit desligado (0) na de bits. O vetor armazena os valores no nulos da matriz original na ordem em que os mesmos so localizados se a matriz esparsa fosse lida linha a linha.

Ex: M=

1 2 3

10 1 10

7 10 3

10 -2 10

10 10 10

10 10 10

10 10 10

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

10

12
1

10
2

10
3

10
4

10
5

10
6

Matriz

de bits

1 2 3 4

0 1 0 1
1

1 0 1 0
2

0 1 0 0
3

0 0 0 0
4

0 0 0 0
5

0 0 0 0
6

24 posies (bits) 3 bytes +

Vetor de valores nulos

-2

12

5 bytes ________ 8 bytes

MATRIZ DE 4 LINHAS Matriz de 4 linhas x K colunas (onde K o n de elementos no nulos) Vetor VL e VC Matriz de 4 linhas (Q) uma matriz de 4 linhas por K colunas, onde K o n de elementos no nulos onde as linhas so: 1 linha : O valor do elemento no nulo (os elementos devem entrar na ordem de linha por linha da matriz esparsa). 2 linha : Coordenada de linha do elemento no nulo 3 linha : Coordenada de coluna do elemento no nulo 4 linha : referncia (elo) a coluna da matriz de 4 linhas que contm a descrio do elemento seguinte na mesma coluna do elemento no-nulo. VL : Vetor utilizado para localizar o incio da descrio de uma linha. VC : Vetor utilizado para localizar o incio da descrio de uma coluna. 1 Matriz 7 1 -2 1 2 2 2 1 3 4 5 1 2 3

1 2 3 4

3 3 2 4

12 4 1 5

Q(4,k) onde K o n de elem. nulos. Esta matriz contm 5 elementos nulos Q(4,5)

4 - na segunda matriz existe 1 outro elemento nulo logo abaixo do elemento 7 ? Sim, o elemento 3. Agora na 1 matriz (1 linha) em que coluna est o elemento 3? Est na 4 coluna, ento coloca o n 4 na 4 linha e 1 coluna da 1 matriz. 2 Matriz 7 1 -2 3
Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

1 2 3

11

12 1 2 1
1

3 2
2

4 5 4
3

VL (4)

5
4

procura na 2 matriz o elemento no nulo e procura a linha em que ele se encontra (se existe na mesma linha vrios elementos, pega s o 1)

VL (6)

1 3 - 2 3 4 5

1 2 coluna

procura na 2 matriz o 1 elemento no nulo, (coluna) aps procura na 1 matriz a coluna em que ele est.

Estrutura de Dados I Prof. Jos Luiz Andrade Duizith

Você também pode gostar