sexta-feira, 16 de novembro de 2012

Módulo 7 - Ficheiros



 1- Caracteristicas de um ficheiro?
O tipo estruturado file(ficheiro) representa, em Pascal, uma estrutura de dados capaz de armazenar dados ou resultados de qualquer outro tipo
  •        É uma estrutura externa e, em geral, uma estrutura permanente;
  •        Permite a comunicação com o utilizador ou entre programas;
  •        Estruturalmente é semelhante a uma tabela (array);
  •        Tamanho dinâmico;
  •        Acesso sequencial; 
 2-Tipos de ficheiros:

O Pascal possui dois tipos de ficheiros:

  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.
  
   Sintaxe:

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

       Exemplo de um programa sobre ficheiros do tipo file: 
  •   program Parque_estacionamento;
  •   type carros=record
  •      marca,tipo,matricula:string;
  •      tempo:integer;
  • end;
  • var fich:file of carros;
  •     auto:carros;
  •     escolha:integer;
  • procedure criacao;
  • begin
  •   assign(fich,'automoveis.txt');
  •   rewrite(fich);
  •   close(fich);
  • end;
  •  
  • procedure leitura;
  • begin
  •   reset(fich);
  •   seek(fich,filesize(fich));
  •   write('Introduza a marca do veiculo:');
  •   readln(auto.marca);
  •   write('Introduza a matricula:');
  •   readln(auto.matricula);
  •   write('Introduza o tempo de estacionamento:');
  •   readln(auto.tempo);
  •   write('Introduza tipo de veiculo:');
  •   readln(auto.tipo);
  •   write(fich,auto);
  •   close(fich);
  • end;
  •  
  • procedure apresentacao;
  • var apre:string;
  •     maior,soma:integer;
  • begin
  •   reset(fich);
  •   while not eof(fich) do
  •    begin
  •       read(fich,auto);
  •       write('Marca - ',auto.marca);
  •       write('Matricula - ',auto.matricula);
  •       write('Tempo de estacionamento - ',auto.tempo);
  •       write('Tipo de veiculo - ',auto.tipo);
  •       soma:=soma+auto.tempo;
  •    end;
  •    write('Tempo medio = ',soma\filesize);
  •    maior:=0;
  •    while not eof(fich) do
  •     begin
  •       if(auto.tempo>maior) then
  •        begin
  •          maior:=Auto.tempo;
  •          apre:=auto.matricula;
  •        end;
  •     end;
  •     write('A matricula ',apre ,' foi quem mais tempo passou no parque');
  •     close(fich);
  • end;
  •  
  • procedure alterar;
  • var escolha:char;
  •     mat:string;
  • begin
  •   write('Pretende alterar algum dado?(S\N);
  •   readln(escolha);
  •   if (escolha=s) then
  •    begin
  •      reset(fich);
  •      read(fich,auto);
  •      while not eof(fich) do
  •       begin
  •         write('Introduza a matricula cujo o dado vai ser alterado');
  •         readln(mat);
  •         if mat=auto.matricula then
  •           begin
  •             write('Prentende alterar a maricula?(S\N)');
  •             readln(escolha);
  •             if (escolha=s) then
  •               begin
  •                 write('Matricula :');
  •                 realn(auto.matricula);
  •               end;
  •             write('Prentende alterar a marca?(S\N)');
  •             readln(escolha);
  •             if (escolha=s) then
  •               begin
  •                 write('Marca :');
  •                 realn(auto.marca);
  •               end;
  •             write('Prentende alterar o tempo de estacionamento?(S\N)');
  •             readln(escolha);
  •             if (escolha=s) then
  •               begin
  •                 write('Tempo de estacionamento :');
  •                 realn(auto.tempo);
  •               end;
  •             write('Prentende alterar o tipo do veiculo?(S\N)');
  •             readln(escolha);
  •             if (escolha=s) then
  •               begin
  •                 write('Tipo de veiculo :');
  •                 realn(auto.tipo);
  •               end;
  •         end;
  •      end;
  •    end;
  •    write(fich,auto);
  •    close(fich);
  • end;
  •  
  • procedure valor_pago;
  • var mt,lg,ps:real;
  • begin
  •   reset(fich);
  •   while not eof (fich) do
  •    begin
  •      read(fich.auto);
  •      write('Matricula: ',auto,matricula);
  •      write('Tipo de veiculo: ',auto,tipo);
  •      write('Marca: ',auto,marca);
  •      write('Tempo de estacionamento: ',auto,tempo);
  •      mt:=0.04;
  •      lg:=0.08;
  •      ps:=0.10;
  •      case auto.tipo of
  •          'moto':write('Valor pago ',mt*auto.tempo*1.2);
  •          'ligeiro':write('Valor pago ',lg*auto.tempo*1.2);
  •          'pesado':write('Valor pago ',ps*auto.tempo*1.2);
  •      end;
  •    end;
  •   close(fich);
  • end;
  •  
  • procedure limpar;
  • begin
  •   assign(fich,'automoveis.txt');
  •   rewrite(fich);
  •   close(fich);
  • end;
  •  
  • Begin
  •   repeat
  •     write('1- Criar');
  •     write('2- Introduzir');
  •     write('3- Apresentar tudo');
  •     write('4- Alterar os dados');
  •     write('5- Relatorios de contas');
  •     write('6- Limpar ficheiro');
  •     write('7- Sair');
  •     readln(escolha);
  •     case escolha of
  •        '1':criacao;
  •        '2':leitura;
  •        '3';apresentacao;
  •        '4':alterar;
  •        '5':valor_pago;
  •        '6':limpar;
  •     end;
  •   until (escolha=7);
  • End.

    Reflexão
    Quanto aos ficheiros file (ficheiros definidos pelo programador) foi os que mais trabalhei na aula por isso realizo exercicios deste tipo com mais facildade do que ficheiros do tipo text.
    Na minha opinião este tipo de ficheiros é muito mais util para o quotidiano pois pode ser utilizado em hospitais, parques de estacionamento etc... . 


 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

    Exemplo de um programa de ficheiros do tipo text:
         


  • Program 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

    Reflexão

    Este tipo de ficheiros foi menos trabalhado nas aulas e na minha opinião não tem a mesma importancia do que outro tipo. Tem uma desvantagem em relação aos ficheiros file pois este tipo é sequencial  logo o programa não pode "saltar" instruções.
     

 3-Comandos de ficheiros


    Assign- Atribuir á variável o ficheiro de texto;
  • Rewrite- Abre o ficheiro para receber informação;
  • Reset- Abre o ficheiro para leitura;
  • Close- Fecha o ficheiro;
  • write e writeln- Escreve no ficheiro;
  • EOL- Indicação do fim da linha;
  • EOF- Indicação do fim do ficheiro;
  • Assign- Associa a variável do tipo Ficheiro de Texto a um ficheiro no disco;
  4-Reflexão Final

      Em relação a este módulo achei mais fácil do que o anterior e também mais útil. Nas aulas a matéria foi bem dada e bem entendida pela minha parte. No meu portefólio acho que está tudo que é relevante em relacão em este tema. 

Nenhum comentário:

Postar um comentário