28
Eng. Comp. Eng. Comp. ARQUIVOS Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado Coração USC Bauru/SP 28/11/2013 1

Algoritmos - Arquivos Parte 1

Embed Size (px)

Citation preview

Page 1: Algoritmos - Arquivos Parte 1

Eng.Comp.Eng.Comp.

ARQUIVOS

Profª Ms. Engª Elaine Cecília GattoCurso de Bacharelado em Engenharia de ComputaçãoUniversidade do Sagrado Coração – USCBauru/SP

28/11/2013

1

Page 2: Algoritmos - Arquivos Parte 1

Eng.Comp.

Introdução

• São estruturas de Dados manipuladas forado ambiente do programa.

• Ambiente do programa: memória principalou memória ram.

• Um arquivo é armazenado em umdispositivo de memória secundária

28/11/2013

2

Page 3: Algoritmos - Arquivos Parte 1

Eng.Comp.

Introdução

• Memória secundária: discos rígidos.

• Discos rídigos:

– Podem ser lidos ou escritos por umprograma

– É formado por uma coleção de caracteresou bytes

28/11/2013

3

Page 4: Algoritmos - Arquivos Parte 1

Eng.Comp.

Introdução

• Arquivo de texto: coleção de caracteres

• Arquivo binário: bytes armazenados

• Sistema de banco de dados: Composto porum ou vários arquivos de dados 2

8/11/2013

4

Page 5: Algoritmos - Arquivos Parte 1

Eng.Comp.

Introdução

• Programas de manutenção de um arquivo:

– Inclusão

– Exclusão Lógica

– Exclusão física

– Alteração

– Consulta geral

– Consulta específica

– Relatórios

28/11/2013

5

Page 6: Algoritmos - Arquivos Parte 1

Eng.Comp.

Introdução

• Exclusão física: após a eliminação de umregistro, os demais são deslocados

• Exclusão lógica: os registros possuem umcampo adicional, identificando se estão ativosou inativos (se foram ou não excluídos)

• CAMPO ATIVO = 0 : o arquivo foi excluído

• CAMPO ATIVO = 1 : o arquivo NÃO foiexcluído

28/11/2013

6

Page 7: Algoritmos - Arquivos Parte 1

Eng.Comp.

Declaração

• TYPE : palavra chave utilizada para a criação de novos tipos de dados emPASCAL

TYPE nome_do_registro = RECORD

Campo1: tipo_do_campo1;

Campo2: tipo_do_campo2;

...

CampoN: tipo_do_campoN;

END;

nome_do_arquivo = FILE OF nome_do_registro;

VAR

variavel_do_arquivo: nome_do_arquivo;

variavel_do_registro: nome_do_registro;

28/11/2013

7

Page 8: Algoritmos - Arquivos Parte 1

Eng.Comp.

EXEMPLO 1

//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;

//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;

28/11/2013

8

Page 9: Algoritmos - Arquivos Parte 1

Eng.Comp.

EXEMPLO 2

//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;

//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;

28/11/2013

9

Page 10: Algoritmos - Arquivos Parte 1

Eng.Comp.

Associando variáveis a arquivos

• ASSIGN:

– Comando usado para associar nomes dearquivos físicos a variáveis de umprograma.

–Uma ligação é estabelecida entre aexecução de um programa na memóriaprincipal e os dados armazenados namemória secundária

28/11/2013

10

Page 11: Algoritmos - Arquivos Parte 1

Eng.Comp.

Associando variáveis a arquivos

ASSIGN(nome_da_variável_do_tipo_arquivo,

’caminho do arquivo no disco’);

ASSIGN(AGENDA,‘AGENDA.DAT’);

• A variável AGENDA permite acesso ao arquivoAGENDA.DAT

• Neste exemplo, o arquivo AGENDA.DAT serágravado no mesmo local do arquivo que estiversendo executado.

28/11/2013

11

Page 12: Algoritmos - Arquivos Parte 1

Eng.Comp.

Associando variáveis a arquivos

ASSIGN(DETRAN,’C:\EXEMPLO\CARROS.DAT’);

• A variável DETRAN permite acesso ao arquivoCARROS.DAT

• CARROS.DAT será armazenado no caminhoC:\EXEMPLOS

28/11/2013

12

Page 13: Algoritmos - Arquivos Parte 1

Eng.Comp.

Criando um novo Arquivo

• REWRITE

• 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ÃOexistir, o comando forçará a sua criação.

28/11/2013

13

Page 14: Algoritmos - Arquivos Parte 1

Eng.Comp.

Criando um novo Arquivo

REWRITE(nome_da_variavel_do_tipo

_arquivo);

REWRITE(AGENDA);

REWRITE(DETRAN); 28/11/2013

14

Page 15: Algoritmos - Arquivos Parte 1

Eng.Comp.

Abrindo arquivos já existentes

• RESET

• Usado para abrir arquivos;

• Posiciona o ponteiro no primeiro registro,SEM destruir os dados já existentes; 2

8/11/2013

15

Page 16: Algoritmos - Arquivos Parte 1

Eng.Comp.

Abrindo arquivos já existentes

RESET(nome_da_variavel_do_tipo_

arquivo);

RESET(AGENDA);

RESET(DETRAN); 28/11/2013

16

Page 17: Algoritmos - Arquivos Parte 1

Eng.Comp.

Fechando um arquivo

• CLOSE

• Usado para fechar arquivos abertos pelocomando 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 umarquivo fechado

28/11/2013

17

Page 18: Algoritmos - Arquivos Parte 1

Eng.Comp.

Fechando um arquivo

CLOSE(nome_da_variavel_do_tipo_ar

quivo);

CLOSE(AGENDA);

CLOSE(DETRAN); 28/11/2013

18

Page 19: Algoritmos - Arquivos Parte 1

Eng.Comp.

Lendo dados de um arquivo

• READ

• Comando para leitura de arquivos;

• Para ler dados de um arquivo, devemosexecutar uma leitura no disco; 2

8/11/2013

19

Page 20: Algoritmos - Arquivos Parte 1

Eng.Comp.

Lendo dados de um arquivo

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);

//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);

28/11/2013

20

Page 21: Algoritmos - Arquivos Parte 1

Eng.Comp.

Gravando dados em um arquivo

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 REG

serão copiados para o arquivo associado à

variável AGENDA

WRITE(AGENDA, REG);

//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

21

Page 22: Algoritmos - Arquivos Parte 1

Eng.Comp.

Movimentando o ponteiro em um arquivo

• SEEK:

• Usado para posicionar o ponteiro no registrodesejado;

• O primeiro registro do arquivo é sempre o denúmero zero;

28/11/2013

22

Page 23: Algoritmos - Arquivos Parte 1

Eng.Comp.

Movimentando o ponteiro em um arquivo

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);

//O ponteiro do arquivo DETRAN está na

posição zero, no início do primeiro

registro gravado no arquivo

SEEK(DETRAN, 0);

28/11/2013

23

Page 24: Algoritmos - Arquivos Parte 1

Eng.Comp.

Obtendo o número de registros de um arquivo

• FILESIZE: Usado para retornar o número deregistros existentes em um arquivo

FILESIZE(nome_da_variavel_do_tipo_arquivo);

//retorna a quantidade de registros gravados

no arquivo AGENDA

Tamanho := FILESIZE(AGENDA);

//retorna a quantidade de registros gravados

no arquivo DETRAN

Tamanho := FILESIZE(DETRAN);

28/11/2013

24

Page 25: Algoritmos - Arquivos Parte 1

Eng.Comp.

Verificando o final do arquivo

• EOF:

• Verifica se o ponteiro chegou ao final do arquivo;

• Retorno verdadeiro: o final do arquivo foiencontrado;

• Retorno falso: o final do arquivo não foiencontrado

28/11/2013

25

Page 26: Algoritmos - Arquivos Parte 1

Eng.Comp.

Verificando o final do arquivo

WHILE NOT EOF(nome_da_variavel_do_tipo_arquivo) DO

BEGIN

comandos;

END;

//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.

WHILE NOT EOF(DETRAN) DO

BEGIN

READ(DETRAN, REG);

END;

28/11/2013

26

Page 27: Algoritmos - Arquivos Parte 1

Eng.Comp.

Exemplo

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-Pas\ALUNOS.TXT');

REWRITE(ALUNOS);

CLOSE(ALUNOS);

WRITELN('Arquivo de ALUNOS criado com sucesso!!!');

READLN;

END.

28/11/2013

27

Page 28: Algoritmos - Arquivos Parte 1

Eng.Comp.

Exemplo

Pegar no syllabus

28/11/2013

28