O documento fornece uma introdução sobre arquivos no Pascal, definindo arquivos como estruturas de dados armazenadas fora da memória do programa e explicando como arquivos são manipulados por programas.
2. Introdução
Eng.
Comp.
• São estruturas de Dados manipuladas fora
do ambiente do programa.
• Ambiente do programa: memória principal
ou memória ram.
um
28/11/2013
• Um arquivo é armazenado em
dispositivo de memória secundária
2
3. Introdução
Eng.
Comp.
• Memória secundária: discos rígidos.
• Discos rídigos:
– É formado por uma coleção de caracteres
ou bytes
28/11/2013
– Podem ser lidos ou escritos por um
programa
3
4. Introdução
Eng.
Comp.
• Arquivo de texto: coleção de caracteres
• Arquivo binário: bytes armazenados
28/11/2013
• Sistema de banco de dados: Composto por
um ou vários arquivos de dados
4
5. Introdução
Eng.
Comp.
• Programas de manutenção de um arquivo:
28/11/2013
– Inclusão
– Exclusão Lógica
– Exclusão física
– Alteração
– Consulta geral
– Consulta específica
– Relatórios
5
6. Introdução
Eng.
Comp.
• Exclusão física: após a eliminação de um
registro, os demais são deslocados
• Exclusão lógica: os registros possuem um
campo adicional, identificando se estão ativos
ou inativos (se foram ou não excluídos)
28/11/2013
• CAMPO ATIVO = 0 : o arquivo foi excluído
• CAMPO ATIVO = 1 : o arquivo NÃO foi
excluído
6
7. Declaração
•
Eng.
Comp.
TYPE : palavra chave utilizada para a criação de novos tipos de dados em
PASCAL
TYPE nome_do_registro = RECORD
Campo1: tipo_do_campo1;
Campo2: tipo_do_campo2;
...
CampoN: tipo_do_campoN;
END;
28/11/2013
nome_do_arquivo = FILE OF nome_do_registro;
VAR
variavel_do_arquivo: nome_do_arquivo;
variavel_do_registro: nome_do_registro;
7
8. EXEMPLO 1
Eng.
Comp.
//definindo um registro
TYPE registro = RECORD
nome : string[30];
endereco : string[20];
telefone : string[10];
END;
//variável capaz de referenciar arquivos que armazenam dados no
formato registro
arquivo = FILE OF registro;
28/11/2013
//as informações geradas pelo programa serão armazenadas em REG.
A variável REG será gravada no arquivo referenciado por AGENDA.
VAR
agenda: arquivo;
reg : registro;
8
9. EXEMPLO 2
Eng.
Comp.
//definindo um registro
TYPE registro = RECORD
placa: string[7];
marca : string[20];
ano : integer;
END;
//variável capaz de referenciar arquivos que armazenam dados no
formato registro
frota = FILE OF registro;
28/11/2013
//as informações geradas pelo programa serão armazenadas em
CARROS. A variável CARROS será gravada no arquivo referenciado
por DETRAN.
VAR
detran: arquivo;
carros : registro;
9
10. Associando variáveis a
arquivos
Eng.
Comp.
• ASSIGN:
– Comando usado para associar nomes de
arquivos físicos a variáveis de um
programa.
28/11/2013
– Uma ligação é estabelecida entre a
execução de um programa na memória
principal e os dados armazenados na
memória secundária
10
13. Criando um novo Arquivo
Eng.
Comp.
• REWRITE
28/11/2013
• Comando para criar novos arquivos;
• Posiciona o seu ponteiro no primeiro registro,
apagando todo o conteúdo do arquivo;
• Se o arquivo referenciado na criação existir,
ele perderá todo o seu conteúdo
• Se o arquivo referenciado na criação NÃO
existir, o comando forçará a sua criação.
13
14. Criando um novo Arquivo
Eng.
Comp.
REWRITE(nome_da_variavel_do_tipo
_arquivo);
REWRITE(AGENDA);
28/11/2013
REWRITE(DETRAN);
14
15. Abrindo arquivos já existentes
Eng.
Comp.
• RESET
• Usado para abrir arquivos;
28/11/2013
• Posiciona o ponteiro no primeiro registro,
SEM destruir os dados já existentes;
15
17. Fechando um arquivo
Eng.
Comp.
• CLOSE
28/11/2013
• Usado para fechar arquivos abertos pelo
comando REWRITE ou RESET;
• Todas as mudanças feitas em um arquivo só
são efetivadas quando ele for fechado;
• Nenhuma mudança poderá ser feita em um
arquivo fechado
17
19. Lendo dados de um arquivo
Eng.
Comp.
• READ
• Comando para leitura de arquivos;
28/11/2013
• Para ler dados de um arquivo, devemos
executar uma leitura no disco;
19
20. Lendo dados de um arquivo
Eng.
Comp.
READ(nome_da_variavel__do_tipo_arquivo,
nome_da_variavel_do_tipo_registro);
//os dados lidos no arquivo associado à variável
AGENDA serão copiados para a variável de programa
REG, que será tratada pelo programna como um
registro qualquer
READ(AGENDA, REG);
28/11/2013
//os dados lidos no arquivo associado à variável
DETRAN serão copiados para a variável de programa
CARROS, que será tratada pelo programna como um
registro qualquer
READ(DETRAN, CARROS);
20
21. Gravando dados em um
arquivo
Eng.
Comp.
WRITE: Permite a gravação de dados
WRITE(nome_da_variável_do_tipo_arquivo,
nome_da_variavel_do_tipo_registro);
//Os dados contidos na variável de programa
CARROS serão copiados para o arquivo associado à
variável AGENDA
WRITE(AGENDA, CARROS);
28/11/2013
//Os dados contidos na variável de programa REG
serão copiados para o arquivo associado à
variável AGENDA
WRITE(AGENDA, REG);
21
22. Movimentando o ponteiro em
um arquivo
Eng.
Comp.
• SEEK:
• Usado para posicionar o ponteiro no registro
desejado;
28/11/2013
• O primeiro registro do arquivo é sempre o de
número zero;
22
23. Movimentando o ponteiro em
um arquivo
Eng.
Comp.
SEEk(nome_da_variavel_do_tipo_arquivo,
numero_do_registro);
//O ponteiro do arquivo DETRAN está na
posição
dois,
no
início
do
terceiro
registro gravado no arquivo
SEEK(AGENDA, 2);
28/11/2013
//O ponteiro do arquivo DETRAN está na
posição
zero,
no
início
do
primeiro
registro gravado no arquivo
SEEK(DETRAN, 0);
23
24. Obtendo o número de registros
de um arquivo
Eng.
Comp.
• FILESIZE: Usado para retornar o número de
registros existentes em um arquivo
FILESIZE(nome_da_variavel_do_tipo_arquivo);
//retorna a quantidade de registros gravados
no arquivo DETRAN
Tamanho := FILESIZE(DETRAN);
28/11/2013
//retorna a quantidade de registros gravados
no arquivo AGENDA
Tamanho := FILESIZE(AGENDA);
24
25. Verificando o final do arquivo
Eng.
Comp.
• EOF:
• Verifica se o ponteiro chegou ao final do arquivo;
• Retorno verdadeiro: o final do arquivo foi
encontrado;
28/11/2013
• Retorno falso: o final do arquivo não foi
encontrado
25
26. Verificando o final do arquivo
Eng.
Comp.
WHILE NOT EOF(nome_da_variavel_do_tipo_arquivo) DO
BEGIN
comandos;
END;
WHILE NOT EOF(DETRAN) DO
BEGIN
READ(DETRAN, REG);
END;
28/11/2013
//percorre todos os registros de um arquivo. A cada
leitura feita no arquivo DETRAN, o ponteiro movimenta-se
para o registro seguinte. Enquanto foram obtidas
informações no arquivo, a repetição continuará. Quando o
ponteiro chegar ao final do arquivo DETRAN, o WHILE será
finalizado.
26
27. Exemplo
28/11/2013
PROGRAM EX1;
USES CRT;
TYPE aluno = RECORD
numero : INTEGER;
nome : STRING[20];
curso: STRING[15];
nota1, nota2 : REAL;
END;
classe = FILE OF aluno;
VAR ALUNOS: classe;
A: aluno;
BEGIN
CLRSCR;
ASSIGN(ALUNOS, 'C:Dev-PasALUNOS.TXT');
REWRITE(ALUNOS);
CLOSE(ALUNOS);
WRITELN('Arquivo de ALUNOS criado com sucesso!!!');
READLN;
END.
Eng.
Comp.
27