edii06 [2012.1] arquivos sequenciais ordenados por link

36
Arquivos Sequenciais Ordenados por Link Estrutura de Dados II Unidade 06 UFS - DComp - Prof. Kenia Kodel 1

Upload: kianeledok

Post on 18-May-2015

628 views

Category:

Education


1 download

TRANSCRIPT

Page 1: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

Arquivos Sequenciais

Ordenados por LinkEstrutura de Dados II

Unidade 06 UFS - DComp - Prof. Kenia Kodel 1

Page 2: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

O verbo educar é originário do latim e quer dizer extrair de dentro. Logo, a educação não se constitui em mero estabelecimento de informações, mas sim de se trabalhar as potencialidades do ser, a fim de que floresçam.

Flores?

UFS - DComp - Prof. Kenia Kodel 2

Page 3: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

O segredo é não correr atrás das

borboletas... É cuidar do jardim para que elas venham até

você..

Mário QuintanaUFS - DComp - Prof. Kenia Kodel 3

Page 4: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

Podem ser:

1. Desordenados

2. Ordenados, por chave(s)

2.1. Fisicamente

2.2. Por links (lógica)

Arquivos Sequenciais

Page 5: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 5

O que é um arquivo

sequencial

ordenado por link?

Page 6: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

São arquivos sequenciais, ou seja, o acesso a um determinado registro implica na varredura de todos os itens que o antecedem.

São ordenados logicamente – a partir de campo que indica o endereço do próximo registro em ordem – campo link.

Arquivo Sequencial

Ordenado por Link

Page 7: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

PACIENTE SANGUE RH DOAÇÃO CONTATO PESO LINK

0 2

1 Zé A + 12/12/03 (79)223.1542 80 -1

2 Beto B - 12/10/02 (79)8801.2017 70 4

3Gil O + 11/09/04 (79)9941.1388 72 5

4 Clô AB - 02/02/05 (81)2212.6711 95 3

5 Sara A - 10/01/04 (11)2213.0909 73 1

Arquivo Sequencial

Ordenado por Link

Page 8: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 8

Em aplicações computacionais que manipulam arquivos sequenciais ordenados por link, que operações são úteis para manipulação da respectiva base de dados?

Page 9: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

1. Inserção2. Remoção3. Consulta4. Alteração

5. Classificação?6. Recuperação ?

9

Operações sobre Arquivos

Sequenciais Ordenados

Page 10: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Na inserção em arquivos ordenados por links:

(1) o novo registro é inserido fisicamente no final;

(2) são identificados os registros antecessor e sucessor (lógicos) do novo registro (ponto de inserção);

(3) o link do antecessor deve apontar para o

endereço do novo registro e

(4) o link do novo registro deve apontar para o

sucessor.

Inclusão em Arquivos Sequenciais Ordenados por Link

Page 11: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

PACIENTE SANGUE RH DOAÇÃO CONTATO PESO LINK

0 2

1 Zé A + 12/12/03 (79)223.1542 80 -1

2 Beto B - 12/10/02 (79)8801.2017 70 4

3 Gil O + 11/09/04 (79)9941.1388 72 5

4 Clô AB - 02/02/05 (81)2212.6711 95 35 Sara A - 10/01/04 (11)2213.0909 73 1

Arquivo Sequencial

Ordenado por Link

Como efetuar a inserção de ANA, EVA e TEL no arquivo dado?

Page 12: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar

inclusão em arquivos sequenciais

ordenados por links:

Cuidando do

jardim!!!

Cuidando do

jardim!!!

Page 13: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar inclusão em arquivos sequenciais ordenados por links:

type TpCliente = record Nome: string[5]; Link: longint; end;var Arq: file of TpCliente; Reg, RNovo, RAux: TpCliente; Anterior, PtIns: longint;begin {associacao a nome externo} assign(Arq,'Entrada.dat'); {abertura de arquivo} {$I-} reset(Arq); {$I+} if IOResult <> 0 then rewrite(Arq); ...

Page 14: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar inclusão em arquivos sequenciais ordenados por links:

{inicializacao}

Anterior:=0;

if filesize(Arq)<>0 then

begin seek(Arq,0); read(Arq,Reg);

PtIns:=Reg.Link end

else begin PtIns:=-1; seek(Arq,0);

Raux.Chave:=’-1’;

RAux.Link:=-1; write(Arq,RAux); end; {inclusao do novo registro} writeln('Nome: '); readln(RNovo.Nome);

Page 15: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar inclusão em arquivos seqüenciais ordenados por links:

repeat if PtIns<>-1 then begin seek(Arq,PtIns); read(Arq,Reg); end; if (Reg.Nome>RNovo.Nome) or (PtIns=-1) then begin {atualizando anterior} seek(Arq,Anterior); read(Arq,RAux); RAux.Link:=filesize(Arq); seek(Arq,Anterior); write(Arq,RAux); {atualizando novo} RNovo.Link:=PtIns; seek(Arq,filesize(Arq)); write(Arq,RNovo); break; end else begin Anterior:=PtIns; seek(Arq,PtIns); read(Arq,Reg); PtIns:=Reg.Link; end; until false;

Page 16: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 16

Qual o custo da operação de inserção em arquivo sequenciais ordenados por links? Linear, no

pior caso.

Page 17: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Como efetuar remoção em arquivos sequenciais ordenados por link?

17

Page 18: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

PACIENTE SANGUE RH DOAÇÃO CONTATO PESO LINK

0 2

1 Zé A + 12/12/03 (79)223.1542 80 -1

2 Beto B - 12/10/02 (79)8801.2017 70 4

3 Gil O + 11/09/04 (79)9941.1388 72 5

4 Clô AB - 02/02/05 (81)2212.6711 95 35 Sara A - 10/01/04 (11)2213.0909 73 1

Arquivo Sequencial

Ordenado por Link

Como efetuar a exclusão de CLÔ no arquivo dado?

Page 19: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Para efetuar a exclusão em arquivos

sequenciais ordenados por links é

recomendada a remoção lógica dos registros,

por meio do ajuste dos ponteiros, tomando o

devido cuidado para posterior reutilização dos

espaços livres.

Remoção em Arquivos Sequenciais Ordenados por Link

Page 20: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Quais os efeitos da aplicação da exclusão

física (com movimentação de dados,

por exemplo) sobre arquivos ordenados por

link?

20

Page 21: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar

exclusão em arquivos sequenciais

ordenados por links:

Cuidando do

jardim!!!

Cuidando do

jardim!!!

Page 22: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar exclusão em arquivos sequenciais ordenados por links:

type TpCliente = record Chave: string[5]; Link: longint; end;var Arq: file of TpCliente; Reg, RExc, RAux: TpCliente; Anterior, PtExc : integer; Erro: integer;

Page 23: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar exclusão em arquivos seqüenciais ordenados por links:

begin {associacao a nome externo} assign(Arq,'Entrada.dat'); {abertura de arquivo} {$I-} reset(Arq); {$I+} if IOResult <> 0 then rewrite(Arq); {inicializacao} Anterior:=0; {if filesize(Arq)<>0 then} seek(Arq,0); read(Arq,Reg); PtExc:=Reg.Link; writeln('Chave a excluir: '); readln(RExc.Chave);

Page 24: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Elaborar algoritmo para efetuar exclusão em arquivos sequenciais ordenados por links:

repeat seek(Arq,PtExc); read(Arq,Reg); if (Reg.Chave=RExc.Chave) then begin {atualizando anterior} seek(Arq,Anterior); read(Arq,RAux); RAux.Link:=Reg.Link; seek(Arq,Anterior); write(Arq,RAux); {atualizando excluido e lista de excluidos} seek(Arq,0); read(Arq,Reg); val(Reg.Chave,RExc.Link,Erro); seek(Arq,PtExc); write(Arq,Reg); str(PtExc,Reg.Chave); seek(Arq,0); write(Arq,Reg); end else begin Anterior:=PtExc; seek(Arq,PtExc); read(Arq,Reg); PtExc:=Reg.Link; end; until PtExc=-1; {if PtExc=-1 then REGISTRO INEXISTENTE} close(Arq);end.

Page 25: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 25

Qual o custo da operação de remoção em arquivo sequenciais ordenados por links? Linear, no

pior caso.

Page 26: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Como efetuar busca em arquivos sequenciais ordenados por link?

26

Page 27: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

É conveniente aplicar

busca binária em

arquivo sequencial

ordenado por link?

27

Page 28: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 28

Qual o custo da operação de busca em arquivo

sequenciais ordenados por links?

Se total, linear (com o agravante da necessidade de deslocamento do dispositivo de leitura).

Se a partir de chave (específica): linear, no pior caso.

Page 29: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 29

Operações sobre Arquivos

Sequenciais OrdenadosComo efetuar a

operação de alteração (edição) em arquivo sequencial ordenado por link?

Page 30: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 30

Operações sobre Arquivos

Sequenciais OrdenadosÉ preciso efetuar a

operação de classificação em arquivo sequencial ordenado por link?

Isto vale para todos os links?

Page 31: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel 31

Operações sobre Arquivos

Sequenciais OrdenadosÉ preciso efetuar a

operação de transferência entre memórias em arquivo sequencial ordenado por link?

Que estrutura usar, neste caso, em memória principal?

Page 32: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Quanto de espaço

de

armazenamento

os arquivo

sequenciais

ordenados por

links usam?

32

Sendo n o tamanho dos dados, usam n acrescido do espaço necessário aos links.

Page 33: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Visando garantir máxima eficiência na implementação de arquivos sequenciais, que forma de organização deve-se adotar? Desordenada, ordenada fisicamente ou ordenada por link? Justifique:

33

Cuidando do

jardim!!!

Cuidando do

jardim!!!

Page 34: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

UFS - DComp - Prof. Kenia Kodel

Quando aplicar arquivos sequenciais ordenados por link?

34

Analisar frequência das operações x custo destas na situação

problema.

Page 35: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

35 UFS - DComp - Prof. Kenia Kodel

Complementar Estudos...

File Organization and ProcessingAllan L Tharp

Capítulo 2Sequential File Organization

Page 36: EDII06 [2012.1]   Arquivos Sequenciais Ordenados por Link

36UFS - DCOMP - Prof. Kenia Kodel

Arquivos DiretosDicionário

Próximo passo...

UFS - DCOMP - Prof. Kenia Kodel

36