Pagina anteriorIndiceProxima pagina

Algoritmos Computacionais

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.
 


Pagina anteriorIndiceProxima pagina

araujo@eng.uerj.br