pascal arquivos

24
http://regispiresmag.googlepages.com/cefet [email protected] PASCAL Regis Pires Magalhães Última atualização em 03/09/2007 Arquivos

Upload: regis-magalhaes

Post on 13-Jul-2015

28.779 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

PASCAL

Regis Pires MagalhãesÚltima atualização em 03/09/2007

Arquivos

Page 2: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos

O Pascal possui dois tipos de arquivos: Arquivos FILE

Conhecido por Arquivo randômico, ou de acesso aleatório.

É possível buscar uma determinada informação em qualquer posição, sem necessidade de percorrer todo o arquivo até alcançar a informação desejada.

O acesso a informação é direto. É o tipo de arquivo mais usado no Pascal. Sintaxe:

<Nome da variável> : File of <tipo>;

Page 3: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos FILE

Page 4: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos

Arquivos TEXT Conhecido por arquivo seqüencial. Tipo especial de arquivo que pode ser editado

normalmente através de um editor de textos qualquer.

É dito seqüencial porque a leitura tem que ser feita seqüencialmente do início ao fim do arquivo.

Sintaxe:<Nome da variável> : Text

Page 5: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos FILE

Por exemplo, o conjunto de dados sobre as pessoas:

Nome (string); Idade (integer);

Cada conjunto de dados sobre uma determinada pessoa recebe o nome de registro.

Um registro é composto por tipos de dados diferentes.

Cada dado que compõe o registro (nome, idade, etc) é dito ser um campo.

Page 6: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos FILEProgram grava_pessoas;Type Registro = Record nome : String; idade : integer; End;Var arquivo : File of Registro; reg : Registro; continua : char;Begin Assign(arquivo, 'pessoas.dat'); Rewrite(arquivo); Repeat Write('Digite o Nome: '); Readln(reg.nome); Write('Digite a Idade: '); Readln(reg.idade); Write(arquivo, reg); Writeln('Deseja continuar (s/n)? '); continua := uppercase(ReadKey()); Until continua = 'N'; Close(arquivo);End.

Page 7: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos FILEProgram grava_pessoas;Uses Crt;Type Registro = Record nome : String; idade : integer; End;Var arquivo : File of Registro; reg : Registro; continua : char;Begin Assign(arquivo, '/media/REGIS_PIRES/Pascal/pessoas.dat'); {$I-} Reset(arquivo); {$I+} If IOResult = 0 then Seek(arquivo, FileSize(arquivo)) {Vai p/fim do arquivo} Else ReWrite(arquivo); Repeat Write('Digite o Nome: '); Readln(reg.nome); Write('Digite a Idade: '); Readln(reg.idade); Write(arquivo, reg); Writeln('Deseja continuar (s/n)? '); continua := upcase(ReadKey); Until continua = 'N'; Close(arquivo);End.

Page 8: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos FILE

{$I} é uma diretiva de compilação para checagem de erros de entrada e/ou saída.

Ela retorna um código de erro em uma função chamada IOResult.

Page 9: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos FILEProgram le_pessoas;Type Registro = Record nome : String; idade : integer; End;Var arquivo : File of Registro; reg : Registro; continua : char;Begin Assign(arquivo, 'pessoas.dat'); Reset(arquivo); While not EOF(Arquivo) do Begin Read(arquivo, reg); Writeln('Nome: ', reg.nome, ' - Idade: ', reg.idade); End; Close(arquivo);End.

Page 10: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos TEXTProgram grava_algo;Var Arquivo : Text; algo : String; i : integer;Begin Assign(Arquivo, 'algo.txt'); Rewrite(Arquivo); Write('Digite algo: '); Readln(algo); For i := 1 to 10 do Writeln(Arquivo, algo); Close(Arquivo);End.

Page 11: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos TEXTProgram le_algo;Var Arquivo : Text; algo : String;Begin Assign(Arquivo, 'algo.txt'); Reset(Arquivo); While not EOF(Arquivo) do Begin Readln(Arquivo, algo); Writeln(algo); End; Close(Arquivo);End.

Page 12: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Assign Associa o nome externo de um arquivo a uma

variável do tipo FILE ou TEXT. Sintaxe:

Assign(Var nome-pascal:File; nome-externo:String);

Exemplo:Assign(cadastro,'C:\cadastro.dat');

Page 13: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Reset Abre um arquivo já existente. Caso o arquivo

não exista, haverá um erro de execução. Sintaxe:

Reset(Var arquivo:File);

Exemplo:Reset(cadastro);

Page 14: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Rewrite Permite criar e abrir um novo arquivo. Caso o

arquivo já exista, terá seu conteúdo eliminado e será gerado um novo arquivo.

Sintaxe:Rewrite(Var arquivo:File);

Exemplo:Rewrite(cadastro);

Page 15: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Append Abre um arquivo TEXT para inclusão de

novas informações do tipo Write-Only (somente para escrita). Caso o arquivo não exista ocorrerá um erro de execução. As inclusões se processam no final do arquivo.

Sintaxe:Append(Var arquivo:File);

Exemplo:Append(cadastro);

Page 16: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Close Fecha um arquivo aberto. Sintaxe:

Close(Var arquivo:File);

Exemplo:Close(cadastro);

Page 17: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Erase Apaga um arquivo. Sintaxe:

Erase(Var arquivo:File);

Exemplo:Erase(cadastro);

Page 18: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Rename Renomeia um arquivo. Sintaxe:

Rename(Var arq_ant:File, arq_novo:File);

Exemplo:Rename(tmp, cadastro);

Page 19: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Write / Writeln Grava informações em um arquivo. Após a

execução, o ponteiro de registros do arquivo será deslocado um registro para a frente.

Sintaxe:Write(arquivo:File; registro:Record);

Exemplo:Write(cadastro, registro);

Page 20: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Read / Readln Atribui um valor obtido por um dispositivo de

entrada a uma variável. Esse dispositivo pode ser um arquivo. Após a execução, o ponteiro de registros do arquivo será deslocado um registro para a frente.

Sintaxe:Read(arquivo:File; registro:Record);

Exemplo:Read(cadastro, registro);

Page 21: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

EOF – End of File (Fim de Arquivo) Esta função nos retorna o valor TRUE quando

for encontrada a marca de fim de arquivo. Sintaxe:

EOF(Var arquivo:File) : boolean;

Exemplo:fim := EOF(cadastro);

Page 22: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

Seek Move o ponteiro do arquivo para uma

determinada posição. Sintaxe:

Seek(Var arquivo:File; posição:Longint);

Exemplo:{posiciona o ponteiro no 6º registro}

Seek(cadastro, 5);

Page 23: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

FilePos Esta função retorna a posição atual do

ponteiro do arquivo. Sintaxe:

FilePos(Var arquivo:File) : Longint;

Exemplo:ponteiro := FilePos(cadastro);

Page 24: Pascal Arquivos

http://regispiresmag.googlepages.com/[email protected]

Arquivos – Funções e Procedimentos

FileSize Esta função retorna a quantidade de registros

do arquivo. Sintaxe:

FileSize(Var arquivo:File) : Longint;

Exemplo:tamanho := FileSize(cadastro);