Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ARQUIVOS
Prof.ª Ms. Eng.ª Elaine Cecília Gatto
Algoritmos e Estruturas de Dados
Engenharia de Computação
Universidade Sagr...
Pesquisar no arquivo sequencial
inicio
tipo pessoa = registro
caracter: nome;
inteiro: fone;
fimregistro;

repita

tipo pe...
Pesquisar no arquivo sequencial
inicio
Não é possível apenas
tipo pessoa = registro
avançar pelos registros,
caracter: nom...
Alteração - sequencial
inicio
tipo pessoa = registro
caracter: nome;
inteiro: fone;
fimregistro;
tipo pessoal = arquivo co...
Alteração - sequencial
inicio
copie(agenda, aux);
É preciso ter o cuidado
tipo pessoa = registro
fimenquanto;
de não avanç...
Exclusão - sequencial
inicio
tipo pessoa = registro
caracter: nome;
inteiro: fone;
fimregistro;
tipo pessoal = arquivo com...
Exclusão - sequencial

É importante certificarse de que a posição
correntese(aux.nomeé=anomeprocurado)
no arquivo
inicio
c...
RANDÔMICO
• É quando a circusntância de armazenamento que perfaz o
algoritmo é a da localização do registro dentro do arqu...
RANDÔMICO
• O campo que determina a posição do registro no arquivo é
denominado CHAVE, pois é a informação capaz de acessa...
Cadastro randômico
inicio
tipo aluno = registro
caracter : nome;
inteiro : numero;
real : n1, n2, n3, n4;
fimregistro;
tip...
Cadastro randômico
inicio
tipo aluno = registro
Precisamos atribuir
caracter : nome; a n1, n2 e n3
o valor zero para que t...
Acessando registros
diretamente
inicio
tipo aluno = registro
caracter : nome;
inteiro : numero;
real : n1, n2, n3, n4;
fim...
Acessando registros
diretamente
inicio
Após a execução do
tipo aluno = registro
comando
POSICIONE,
o
caracter : nome;
regi...
Alteração
inicio
tipo aluno = registro
caracter : nome;
inteiro : numero;
real : n1, n2, n3, n4;
fimregistro;
tipo sala = ...
Alteração
escreva(aux.nome, “possui
nota”, qualnota, “=”, nota);
escreva(“nova nota: ”);
leia(nota);
escolha qualnota
caso...
ARQUIVOS EM PASCAL
type nome_do_registro = record
nome_do_campo : tipo do dado;
end;
nome_do_arquivo = file of nome_do_reg...
ARQUIVOS EM PASCAL
type registro = record
nome : string;
endereco : string;
telefone : string;
end;
arquivo = file of regi...
COMANDOS EM PASCAL
• ASSING: associa nomes de arquivos e variáveis locais, do programa
com arquivos de dispositivos de mem...
COMANDOS EM PASCAL
• READ: lê os dados que estão armazenados nos registros de um
arquivo.
• WRITE: grava os dados nos regi...
ARQUIVOS EM PASCAL
type carro= record
placa: string;
marca: string;
ano: integer;
end;
frota = file of carro;
var
detran: ...
Criando um arquivo em Pascal
Program cria;
Uses crt, wincrt;
Type carro = record
Placa : string;
Marca : string;
Ano : int...
Arquivos em Pascal
•
•
•
•
•
•
•
•

Inclusão sequencial de dados em arquivos
Inclusão ordenada de dados em um arquivo
Excl...
Exercícios
Upcoming SlideShare
Loading in …5
×

Algoritmos - Arquivos Parte 3

864 views

Published on

Algoritmos - Arquivos Parte 3

Published in: Education
  • Be the first to comment

  • Be the first to like this

Algoritmos - Arquivos Parte 3

  1. 1. ARQUIVOS Prof.ª Ms. Eng.ª Elaine Cecília Gatto Algoritmos e Estruturas de Dados Engenharia de Computação Universidade Sagrado Coração
  2. 2. Pesquisar no arquivo sequencial inicio tipo pessoa = registro caracter: nome; inteiro: fone; fimregistro; repita tipo pessoal = arquivo composto de pessoa; pessoa: aux, pessoal: agenda; caracter: nomeprocurado; se(aux.nome = nomeprocurado) então escreva(aux.fone); senão escreva(“telefone não registrado”); fimse; abra(agenda); leia(nomeprocurado); feche(agenda); fim. copie(agenda, aux); avance(agenda); até(aux.nome = nomeprocurado) ou (fda(agenda));
  3. 3. Pesquisar no arquivo sequencial inicio Não é possível apenas tipo pessoa = registro avançar pelos registros, caracter: nome; vez uma que inteiro: precisamos verificar se fone; o conteúdo de cada um fimregistro; deles é o esperado, por isso se copia para um registro auxiliar cada tipo pessoal = arquivo composto de dos registros pessoa;um armazenados. repita copie(agenda, aux); avance(agenda); até(aux.nome = nomeprocurado) ou (fda(agenda)); pessoa: aux, pessoal: agenda; caracter: nomeprocurado; se(aux.nome = nomeprocurado) então escreva(aux.fone); senão escreva(“telefone não registrado”); fimse; abra(agenda); leia(nomeprocurado); feche(agenda); fim.
  4. 4. Alteração - sequencial inicio tipo pessoa = registro caracter: nome; inteiro: fone; fimregistro; tipo pessoal = arquivo composto de pessoa; pessoa: aux, pessoal: agenda; caracter: nomeprocurado inteiro: novofone; abra(agenda); leia(nomeprocurado); copie(agenda,aux); enquanto(aux.nome <> nomeprocurado) e (não fda(agenda)) faça avance(agenda); copie(agenda, aux); fimenquanto; se(aux.nome = nomeprocurado) então inicio escreva(aux.nome, “possui fone”, aux.fone); escreva(“novo telefone”); leia(novofone); aux.fona  novofone; guarde(agenda, aux); fim; senão escreva(“telefone não registrado!”); fimse; feche(agenda); fim.
  5. 5. Alteração - sequencial inicio copie(agenda, aux); É preciso ter o cuidado tipo pessoa = registro fimenquanto; de não avançar a caracter: nome; posição se(aux.nome = nomeprocurado) corrente inteiro: fone; depois então ter sido de inicio fimregistro; escreva(aux.nome, “possui encontrado o registro, fone”, aux.fone); pois temos, após a tipo pessoal = arquivo composto de pessoa; escreva(“novo telefone”); atualização, de regraválo na mesma posição. pessoa: aux, leia(novofone); pessoal: agenda; aux.fona  novofone; caracter: nomeprocurado guarde(agenda, aux); inteiro: novofone; fim; abra(agenda); senão escreva(“telefone não registrado!”); leia(nomeprocurado); fimse; copie(agenda,aux); feche(agenda); enquanto(aux.nome <> nomeprocurado) e (não fda(agenda)) faça fim. avance(agenda);
  6. 6. Exclusão - sequencial inicio tipo pessoa = registro caracter: nome; inteiro: fone; fimregistro; tipo pessoal = arquivo composto de pessoa; pessoa: aux, pessoal: agenda; caracter: nomeprocurado, confirmacao; abra(agenda); leia(nomeprocurado); repita copie(agenda, aux); avance(agenda); até(aux.nome = nomeprocurado) ou (fda(agenda)); se(aux.nome = nomeprocurado) então inicio escreva(aux.nome, aux.fone); escreva(“confirma exclusão (s/n) ?”); leia(confirmacao); se confirmacao = “s” então elimine(agenda); fimse; fim; senão escreva(“nome não encontrado”); fimse; feche(agenda); fim.
  7. 7. Exclusão - sequencial É importante certificarse de que a posição correntese(aux.nomeé=anomeprocurado) no arquivo inicio correta, então inicio apresentando tipo pessoa = registro os dados queescreva(aux.nome, aux.fone); nela caracter: nome; constam; inteiro: fone; escreva(“confirma exclusão (s/n) ?”); fimregistro; Sempre é leia(confirmacao); tipo pessoal = arquivo composto de recomendável solicitar pessoa; se confirmacao = “s” uma confirmação para pessoa: aux, então elimine(agenda); uma operação de pessoal: agenda; fimse; exclusão, porque caracter: nomeprocurado, confirmacao;depois de executa não fim; abra(agenda); senão escreva(“nome não haverá mais volta encontrado”); leia(nomeprocurado); fimse; repita copie(agenda, aux); feche(agenda); avance(agenda); fim. até(aux.nome = nomeprocurado) ou (fda(agenda));
  8. 8. RANDÔMICO • É quando a circusntância de armazenamento que perfaz o algoritmo é a da localização do registro dentro do arquivo ficar diretamente relacionada a uma informação constituinte desse arquivo. • Através de um dos campos do registro podemos determinar o lugar onde ele está guardado, podendo acessá-lo de modo instantaneo. • Podemos acessar um registro específico diretamente, sem nos preocuparmos com seus antecessores, utilizando nesse acesso o mesmo campo que determinou sua posição no arquivo no instante da gravação.
  9. 9. RANDÔMICO • O campo que determina a posição do registro no arquivo é denominado CHAVE, pois é a informação capaz de acessar o registro. • A CHAVE determinada no algoritmo deve ser única, pois nunca podemos armazenar dois registros diferentes em uma mesma localização. • Em um arquivo randômico os arquivos não ficam localizados na ordem em que são gravados. • Cada registro possui um lugar reservado para ser guardado, identificado através da chave.
  10. 10. Cadastro randômico inicio tipo aluno = registro caracter : nome; inteiro : numero; real : n1, n2, n3, n4; fimregistro; tipo sala = arquivo composto de aluno; aluno : aux; sala : diario; abra(diario); Repita Leia(aux.numero, aux.n1, aux.nome); se(aux.numero>0) então inicio aux.n2  0; aux.n2  0; aux.n4  0; posicione(diario, aux.numero); guarde(diario, aux); fim; fimse; até aux.numero = 0; feche(diario); fim.
  11. 11. Cadastro randômico inicio tipo aluno = registro Precisamos atribuir caracter : nome; a n1, n2 e n3 o valor zero para que todos os inteiro : numero; armazenados campos a serem realestejamn2, n3, n4; : n1, preenchido; fimregistro; O comando posicione determina tipoque a localização nocomposto sala = arquivo arquivo seja de aluno; a estabelecida pelo número de chamada, aluno : aux; que é a chave de salaacesso utilizada pelo professor. : diario; abra(diario); Repita Leia(aux.numero, aux.n1, aux.nome); se(aux.numero>0) então inicio aux.n2  0; aux.n2  0; aux.n4  0; posicione(diario, aux.numero); guarde(diario, aux); fim; fimse; até aux.numero = 0; feche(diario); fim.
  12. 12. Acessando registros diretamente inicio tipo aluno = registro caracter : nome; inteiro : numero; real : n1, n2, n3, n4; fimregistro; tipo sala = arquivo composto de aluno; aluno : aux; sala : diario; Inteiro: numeroAluno; abra(diario); leia(numeroaluno); posicione(diario, numeroaluno); copie(aux.nome, “possui nota”, aux.n1); feche(diario); fim.
  13. 13. Acessando registros diretamente inicio Após a execução do tipo aluno = registro comando POSICIONE, o caracter : nome; registro que está inteiro : numero; a apto ser real : n1, n2, manipulado é o n3, n4; indicado pela chave fimregistro; numeroAluno fornecida tipo sala = arquivo composto anteriormente de aluno; aluno : aux; sala : diario; Inteiro: numeroAluno; abra(diario); leia(numeroaluno); posicione(diario, numeroaluno); copie(aux.nome, “possui nota”, aux.n1); feche(diario); fim.
  14. 14. Alteração inicio tipo aluno = registro caracter : nome; inteiro : numero; real : n1, n2, n3, n4; fimregistro; tipo sala = arquivo composto de aluno; aluno : aux; sala : diario; inteiro: numeroaluno, qualnota; real: nota; abra(diario); leia(numeroaluno, qualnota); posicione(diario, numeroaluno); copie(diario, aux); escolha qualnota caso 1: nota  aux.n1; caso 2: nota  aux.n2; caso 3: nota  aux.n3; caso 4: nota  aux.n4; fimescolha;
  15. 15. Alteração escreva(aux.nome, “possui nota”, qualnota, “=”, nota); escreva(“nova nota: ”); leia(nota); escolha qualnota caso 1 : aux.n1 nota; caso 2 : aux.n2 nota; caso 3 : aux.n3 nota; caso 4 : aux.n4 nota; fimescolha; guarde(diario, aux); feche(diario) fim.
  16. 16. ARQUIVOS EM PASCAL type nome_do_registro = record nome_do_campo : tipo do dado; end; nome_do_arquivo = file of nome_do_registro; var variável_do_arquivo : nome_do_arquivo; variável_do_registro : nome_do_registro;
  17. 17. ARQUIVOS EM PASCAL type registro = record nome : string; endereco : string; telefone : string; end; arquivo = file of registro; var agenda : arquivo; reg : registro;
  18. 18. COMANDOS EM PASCAL • ASSING: associa nomes de arquivos e variáveis locais, do programa com arquivos de dispositivos de memória secundária, como por exemplo, disco. • REWRITE: abre novos arquivos, pois, antes de posicionar o ponteiro no registro de número zero, o comando rewrite apagará todo o conteúdo do arquivo. • RESET: abre arquivos e posiciona o ponteiro no registro de número zero, sem destruir os dados já existentes no arquivo. • CLOSE: fecha arquivos que foram abertos pelo comando REWRITE ou pelo comando RESET. As atualizações só serão efetuadas em um arquivo assim que ele for fechado.
  19. 19. COMANDOS EM PASCAL • READ: lê os dados que estão armazenados nos registros de um arquivo. • WRITE: grava os dados nos registros de um arquivo. • SEEK: posiciona o ponteiro no registro desejado. O primeiro registro do arquivo é sempre o de número zero. • FILESIZE: retorna o número de registros presentes em um arquivo. • FILEPOS: retorna o número do registro em que o ponteiro está localizado. • NOT EOF: verifica o final do arquivo
  20. 20. ARQUIVOS EM PASCAL type carro= record placa: string; marca: string; ano: integer; end; frota = file of carro; var detran: frota; carros : carro;
  21. 21. Criando um arquivo em Pascal Program cria; Uses crt, wincrt; Type carro = record Placa : string; Marca : string; Ano : integer; End; Frota = file of carro; Var Detran : frota; Carros : carro; Begin Assing(detran, ‘carros.dat’); Rewrite(detran); Close(detran); End.
  22. 22. Arquivos em Pascal • • • • • • • • Inclusão sequencial de dados em arquivos Inclusão ordenada de dados em um arquivo Exclusão física de dados de um arquivo Exclusão lógica de dados de um arquivo Alteração de dados de um arquivo Consulta geral de dados em um arquivo Consulta específica de dados em um arquivo Consulta formulada de dados em um arquivo • Ascencio, A. F. G. Lógica de Programação com Pascal. São Paulo: Makron Books, 1999. Página 86.
  23. 23. Exercícios

×