|
10.5 File
-
Declara um arquivo a ser manipulado pelo programa.
-
Os arquivos são acessados apenas seqüencialmente.
-
Possui a mesma estrutura, portanto é
homogêneo.
-
Possui número ilimitado de componentes.
Ex.:
ARQ: File of char;
ARQ2: File of array
of real;
Ao declarar um arquivo como variável,
cria-se implicitamente uma variável denominada VARIÁVEL BUFFER,
identificada pelo nome da variável File,
mais o caracter
Ex.:
ARQ
ARQ2
OBS: Turbo Pascal
não possui variável buffer
Cada arquivo possui uma variável buffer
própria, que não precisa ser declarada. A variável
buffer possui tipo igual ao do arquivo a que ela pertence, e contém
uma cópia do elemento do arquivo que está sendo acessado
neste momento.
.
Um programa não manipula arquivos
diretamente, porém sua variável buffer.
-
Arquivos padrão: Input,Output
-
Tipo padrão: Text
Função EOF:
-
detecta o fim do arquivo, retornando um valor
booleano true- tentativa de ler após o fim do arquivo
obs: após
a leitura do último elemento ele um arquivo, o valor de EOF
continua False
forma: EOF (ARQ);
Função RESET
-
indica que se quer começar a ler um arquivo
-
faz uma cópia do 1° elemento do arquivo
na variável buffer
forma: RESET (ARQ)
Função REWRITE
-
indica que se quer escrever em um arquivo
-
caso o arquivo já exista, seus registros
são descartados
forma: REWRITE (ARQ)
Função PUT
-
escreve o conteúdo da variável
buffer no arquivo
-
É sempre posto no final do arquivo
Forma: PUT (ARQ)
Função GET
-
Move o ponteiro do arquivo para o próximo
elemento e copia para ARQ

Forma GET (ARQ)
Funções READ e WRITE
-
Apenas para arquivos tipo texto (Text)
Forma: WRITE (ARQ, <elemento>)
-
escreve <elemento> em ARQ
READ (ARQ, <variável>)
-
equivalente a <variável>:= ARQ
;
GET (ARQ)
-
apenas para Text
files.
OBS: Turbo Pascal, por
não usar a variável Buffer, não possui também
as funções GET e PUT, descritas acima. Toda manipulação
de arquivos é feita através de READ e WRITE, que, neste caso,
servem para todos os tipos de dados.
Programa para fazer MERGE entre dois arquivos
de inteiros ordenados, de tal forma que o arquivo resultante também
esteja ordenado.
Program
MERGE(Input, Output, FILEA, FILEB, FILEC);
Var
FILEA, FILEB, FILEC:
file of integer;
ULTIMO_ELEMENTO: boolean;
Begin
Reset (FILEA);
Reset (FILEB);
Rewrite (FILEC);
ULTIMO_ELEMENTO:= eof
(FILEA) or eof (FILEB);
While
not ULTIMO_ELEMENTO do
Begin
If FILEA
<= FILEB Then
Begin
FILEC := FILEA ;
Get (FILEA);
ULTIMO_ELEMENTO:= eof (FILEA);
End
Else
Begin
FILEC := FILEB ;
Get (FILEB);
ULTIMO_ELEMENTO:= eof (FILEB);
End
Put
(FILEC);
End;
While
not eof (FILEB) do
Begin
FILEC :=
FILEB ;
Put (FILEC);
Get (FILEB);
End;
While not
eof (FILEA) do
Begin
FILEC :=
FILEA ;
Put (FILEC);
Get (FILEA);
End;
Close (FILEA);
Close (FILEB);
Close (FILEC);
End. |
Programa de cópia de arquivos.
Program copia;
Var
arq1,arq2:text;
c: char;
Begin
reset(arq1);
rewrite(arq2);
While not
eof(arq1) do
Begin
While not
eoln(arq1) do
Begin
read(arq1,c);
write(arq2,c);
End;
readln(arq1);
writeln(arq2);
End;
End. |
|