introdução a programação com 100

36
1 Introdução a Programação COM 100 REGISTROS e ARQUIVOS Aula 09

Upload: floyd

Post on 11-Jan-2016

24 views

Category:

Documents


1 download

DESCRIPTION

Introdução a Programação COM 100. REGISTROS e ARQUIVOS Aula 09. Registros • tipo de estrutura de dados heterogêneo • é uma estrutura definida pelo usuário que representa uma diversidade de valores distintos - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introdução a Programação COM 100

1

Introdução a Programação

COM 100

REGISTROS e ARQUIVOS

Aula 09

Page 2: Introdução a Programação COM 100

2

Registros

• tipo de estrutura de dados heterogêneo

• é uma estrutura definida pelo usuário que representa uma diversidade de valores distintos

• os elementos de um record são denominados campos, onde cada campo de um determinado record possui um nome e um tipo definido.

• utiliza-se o Var ou Type para definir-se um record

Page 3: Introdução a Programação COM 100

3

Exemplo:

Type

TipoRegistro = Record

Nome : String[20];

CPF : String[14];

Tel : String[10];

Cidade : String[20];

Estado : String[10];

End; {fim do registro}

Var

X : TipoRegistro;

Page 4: Introdução a Programação COM 100

4

Begin

X.Nome := ‘Axl Rose’;

Readln(X.CPF);

Readln(X.Tel);

X.Cidade := ‘Maryanna’;

X.Estado := ‘Imprevisível’;

Writeln(X.Nome);

Writeln(X.CPF);

Writeln(X.Tel);

Writeln(X.Estado)

End.

Page 5: Introdução a Programação COM 100

5

Begin

X.Nome := ‘Axl Rose’;

Readln(X.CPF);

Readln(X.Tel);

X.Cidade := ‘Maryanna’;

X.Estado := ‘Imprevisível’;

With X Do

Writeln(Nome);

Writeln(Estado);

Writeln(Tel)

End.

Page 6: Introdução a Programação COM 100

6

Observação:

Quando se escreve um procedimento ou função que recebe um array como argumento, o tipo do array deve estar predefinido num comando TYPE.

Exemplo:

Type

TipoVetor ; Array[1..10] of Byte;

...

...

Procedure Inchalah( V : TipoVetor );

Page 7: Introdução a Programação COM 100

7

Comandos - Arquivo

ASSIGN: associa a variável do tipo arquivo a um nome de arquivo específico o disco

ASSIGN(VarArquivo, “NomeDisco.txt”);

Page 8: Introdução a Programação COM 100

8

Comandos - Arquivo

REWRITE: cria um novo arquivo e o abre para operações de gravação (escrita). Alternativamente, o comando APPEND abre um arquivo já existente, de modo que você possa adicionar um novo texto no fim do arquivo.

Utiliza-se os procedimentos WRITE E WRITELN.

Page 9: Introdução a Programação COM 100

9

Comandos - Arquivo

RESET: abre um arquivo existente, de modo que você pode usar o READ e READLN para ler os valores de dados e linhas de texto de um arquivo.

OBS. Um arquivo texto pode ser aberto somente para uma operação por vez: gravação, junção ou leitura.

Page 10: Introdução a Programação COM 100

10

Diretivas {$I-} e {$I+}

Desligam ou ligam a verificação de erros de I/O. Especificamente, você pode desligar a verificação de erros ara evitar um erro em tempo de execução, que ocorreria se você tenteasse abrir um arquivo inexistente para leitura ou junção. A função IORESULT informa se ocorreu ou não algum erro

Page 11: Introdução a Programação COM 100

11

Comandos - Arquivo

A função EOF retorna com um valor do tipo BOOLEAN, que indica se o programa chegou ou não ao fim de um arquivo, durante uma operação de leitura.

O comando CLOSE fecha o arquivo que foi aberto para leitura ou escrita.

Page 12: Introdução a Programação COM 100

12

Variável de Arquivo-Texto

Exemplo:Var VarDeArquivo : TEXT;

uma variável do tipo TEXT pode ser definida local ou globalmente, mas diferentemente das outras estruturas, o comprimento de uma variável de arquivo não é especificado.

Page 13: Introdução a Programação COM 100

13

Variável de Arquivo-Texto

Const NomeArqDisco = `AgendaRed.txt`

Var Agenda : TEXT;

BEGINAssign(Agenda, NomeArqDisco);

END.

Page 14: Introdução a Programação COM 100

14

BEGINAssign(Agenda, NomeArqDisco);

Rewrite(Agenda); {cria um novo arquivo para operação de escrita}

Append(Agenda); {bre um arquivo existente para escrever um novo texto no final do mesmo}

Reset(Agenda); {abre um arquivo existente para a leitura} END.

Page 15: Introdução a Programação COM 100

15

OBS.: se um nome de arquivo já existir no disco, o comando Rewrite escreverá por cima dele, logo a versão antiga será perdida.

Os comandos Append e Reset necessitam que um arquivo exista no disco.Para evitar erros em tempo de execução:

Page 16: Introdução a Programação COM 100

16

{$I-}Reset(Agenda)

{$I+}

If IORESULT = 0 Then{Lê o arquivo}

Else{Ocorreu um erro de I/O}

Page 17: Introdução a Programação COM 100

17

Escrevendo Dados:

Write(Agenda, ‘Esta string vai ser escrita’);

Writeln(Agenda, ‘Outra string !!!!’);

OBS.: caracteres de retorno de carro e nova linha o final.

Page 18: Introdução a Programação COM 100

18

Lendo Dados:

Read(Agenda, <lista de variáveis>);

OBS.: lê um ou mais valores de dados de um arquivo aberto e deixa o ponteiro de arquivo na linha atual; assim os comandos subseqüentes poderão ler informações adicionais na mesma linha.

Page 19: Introdução a Programação COM 100

19

Lendo Dados:

Readln(Agenda, <lista de variáveis>);

OBS.: lê um ou mais valores de dados, de um arquivo aberto, na linha atual e depois pula par ao início da próxima linha do arquivo.nformações adicionais na mesma linha.

Page 20: Introdução a Programação COM 100

20

Embora um arquivo do tipo texto contenha somente caracteres ASCII, um comando Read ou Readln pode ler apropriadamente os valores de dados para ambas as variáveis, numéricas ou string.

Page 21: Introdução a Programação COM 100

21

VarTotal : Real;Arq : Text;Produto : String[20];

BeginAssign(Arq, ‘ESTOQUE.TXT’);Reset(Arq);...Readln(Arq, Total, Produto);

....

Page 22: Introdução a Programação COM 100

22

Os caracteres a seguir, servem como delimitadores entre um e outro valor dentro de um arquivo texto:a) um caractere de espaçob) um caractere de tabulaçãoc) um caractere de return

Quando na leitura de uma seqüência de valores numéricos de um arquivo texto, a procedure READ reconhece esses caracteres como separadores entre um valor e outro.

Page 23: Introdução a Programação COM 100

23

Entretanto, uma tentativa de ler uma string de caracteres não-numéricos pra uma variável numérica resulta em erro em tempo de execução, exatamente como aconteceria com uma operação de entrada pelo teclado.

Tipicamente, um programa usa uma estrutura de loop para ler os dados armazenados em um arquivo seqüencial.

Page 24: Introdução a Programação COM 100

24

Cada iteração do loop pode ler um item de dado, ou uma linha de itens de dados. Se você tiver certeza do número de itens ou linhas que estão armazenadas no arquivo, pderá usar um loop FOR para ler os dados.

Entretanto, uma abordagem mais típica é usar a função EOF (end of file).

Page 25: Introdução a Programação COM 100

25

While not EOF(Agenda) DoBegin

Readln(Arq, Total, Produto);

...End;

OBS.: o programa deve fechar o arquivo quando a operação de leitura ou escrita terminar.

Page 26: Introdução a Programação COM 100

26

FECHANDO UM ARQUIVO

Close(Agenda);

esse comando fecha o arquivo externo em disco, mas não termina a associação entre a variável de arquivo o nome do arquivo. o programa pode usar novamente um comando RESET, REWRITE, ou APPEND, para reabrir o mesmo arquivo (sem fazer um novo ASSIGN).

Page 27: Introdução a Programação COM 100

27

Program Tabajara;Const

MaxAlunos = 30;Type

RegAluno : RecordNome : String[20];Nota : Real

End;Var

Classe : Array[1 .. MaxAlunos] of RegAluno

ArqClasse : Text;

Page 28: Introdução a Programação COM 100

28

BEGIN{lendo os dados}For i := 1 To MaxAlunos Do

BeginRead(Classe[ i ].Nome); Read(Classe[ i ].Nota)

End;

{escrevendo os dados}Assign(ArqClasse, “Classe.txt”);Rewrite(ArqClasse);

Page 29: Introdução a Programação COM 100

29

For i := 1 To MaxAlunos Do Begin Write(ArqClasse, Classe[ i ].Nome); Writeln(ArqClasse, Classe[ i ].Nota) End;

{fechando o arquivo}

Close(ArqClasse);

Page 30: Introdução a Programação COM 100

30

{abrindo o arquivo para leitura}Reset(ArqClasse);i := 1;While not EOF(ArqClasse) Do Begin Readln(Classe[ i ].Nome, Classe[ i ].Nota); Inc(i); End;

...END.

Page 31: Introdução a Programação COM 100

31

ARQUIVOS TIPADOS Um arquivo tipado contém uma seqüência de componentes individuais acessíveis, todos pertencendo ao mesmo tipo de dado ou estrutrua de dados.

Var VariavelARq : FILE OF TipoArquivo;

TipoArquivo: padrão, definido pelo usuário, exceto outro tipo FILE.

Page 32: Introdução a Programação COM 100

32

ARQUIVOS TIPADOS X TEXTO

um arquivo tipado aberto está disponível para ambas operações, leitura e escrita, ao mesmo tempo.

o Turbo Pascal usa os seus próprios formatos internos de dados para armazenar os componentes de um arquivo tipado no disco. (não é armazenado o formato de linha a linha de texto em ASCII).

Page 33: Introdução a Programação COM 100

33

ARQUIVOS TIPADOS X TEXTO

um programa que funciona com um arquivo tipado usa a procedure SEEK, embutida no Turbo Pascal, para acessar um determinado registro em qualquer posição especificada dentro do arquivo. O programa pode ler o registro para a memória ou escrever um novo registro na mesma posição.

Page 34: Introdução a Programação COM 100

34

o comando SEEK é utilizado na programação de arquivos com acesso randômico.

PASSOS BÁSICOS

1) defina o tipo do componente do arquivo e declare a variável de arquivo como uma estrutura do tipo FILE (as declarações TYPE e VAR).

Page 35: Introdução a Programação COM 100

35

2) estabeleça uma associação entre a variável de arquivo e um nome de arquivo no disco (a procedure Assign).

3) abra um novo arquivo ou um arquivo existente no disco (a procedure Reset ou Rewrite). Em ambos os casos, o arquivo está aberto tanto para a leitura como para a escrita ao mesmo tempo.

Page 36: Introdução a Programação COM 100

36

4) especifique uma determinada posição de registro no arquivo, como o alvo de uma operação subseqüente de leitura ou escrita (SEEK). Leia o registro para a memória (READ), ou escreva um novo registro para a posição de arquivo selecionada (WRITE).

5) feche os arquivos no final das operações (CLOSE).