Logica_de_Programacao_3_Edicao_Livro
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
11 O J Lógica de programação
Va1nos agora apresentar uma aplicação prática n1ais complexa para os arquivos seqüe11-
ciais. Imagine dois arquivos de 1101nes e telefones que são iniciahne11te idênticos, e são entregues
a pessoas diferentes, as quais freqüentemente os vão atualizando, poré1n cada u1na
faz atualizações em regisu·os diferentes. Resultado: pouco ternpo depois os arquivos estão
diferentes, mas deseja-se unificar as alterações, gerando u1n novo arquivo que contemple as
alterações 111ais recentes.
CURIOSIDADE -------------------~
Essa categoria de algoritmo, que visa sincronizar alterações feitas em arquivos seqüenciais de forma
independente, também é conhecida por Balance Line. O Balance Line era muito utilizado na época em que
as atualizações de arquivos era off-line, ou seja, na ausência de linhas de comunicação que permitissem
atualizar diretamente o arquivo principal. Utilizavam-se arquivos secundários, oriundos de diversas localidades,
contendo alterações que seriam submetidas através de um algoritmo de Balance Line ao arquivo
principal.
A estsutura do registro é a que se segue:
Nome:
Telefone:
Tipo de operação:
Data da alteração:
[A-Alteração, E-Exclusão, !-Inserção]
Observan1os que existe u1n campo Tipo de Operação, que vale A para u1n.a Alteração, E
para uma Exclusão e I para uma Inserção. Considere1nos tan1bém que os registros excluídos
não são eliminados (são apenas marcados como excluídos).
\!<=:jamos u,na soluç.ão possível para o proble1na:
ALGORITMO 5.5
Balance Line
1. ;nicio
2. t;po Ficha= registro
3.
4.
5.
6.
7.
8.
9.
10.
11.
13.
14.
15.
caracter: Nome, Telefone, DataAlter, TipoOper;
fimregistro;
tipo ArqAgenda = arquivo composto de Ficha;
Ficha: Fichal, Ficha2, FichaNova;
ArqAgenda: Agendal, Agenda2, AgendaNova;
abra (Agendal);
abra (Agenda2);
abra (AgendaNova);
repita
copie (Agendal, Fichal);
copie (Agenda2, Ficha2);
se (Fichal.TipoOper=''I'')
(Continu<i)