SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Manipulação de
Arquivos em Pascal
   Estrutura de Dados II



Unida 3
     de
          UFS - DCOMP - Prof. Kenia   1
                   Kodel
Flores?
O verbo educar é originário do latim e quer
dizer extrair de dentro. Logo, a educação
não se constitui em mero estabelecimento de
informações, mas sim de se trabalhar as
potencialidades do ser, a fim de que
floresçam.

              UFS - DCOMP - Prof. Kenia       2
                       Kodel
O segredo é não correr atrás das
borboletas... É cuidar do jardim
para que elas venham até você.
                       .


       Mário Quintana

          UFS - DCOMP - Prof. Kenia   3
                   Kodel
ara implementar
  programa infantil para
  ordenação (alfabética)
        de palavras, que
      estrutura de dados
  você usaria? Por quê?



UFS - DCOMP - Prof. Kenia   4
         Kodel
Considerando a base de dados
  abaixo, referente à tabela de
 preços de uma papelaria, que
    estrutura de dados você
        usaria para mantê-la?




UFS - DCOMP - Prof. Kenia         5
         Kodel
Definição de Arquivos
 Os arquivos são elementos de armazenamento
   de dados residentes em memória secundária,
   ou seja, memória não volátil.

 Portanto são diferentes dos outros itens de
   armazenamento de dados (residentes na
   memória principal): registros, vetores,
   matrizes; os quais não preservam os dados
   neles depositados, após o término da execução
   dos programas que os definem.


                UFS - DCOMP - Prof. Kenia       6
                         Kodel
Declaração Pascal de Arquivos
Do ponto de vista lógico, os arquivos são coleções
   de registros e são declarados:
var
  <Nome>: file of <TipoRegistro>;
Onde:
o Nome – nome do arquivo (interno);
o TipoRegistro – tipo dos registros que
   comporão o arquivo.



                 UFS - DCOMP - Prof. Kenia       7
                          Kodel
Aplicação de Arquivos
Considerando, por exemplo, a
  necessidade de cadastrar os
  pacientes a serem atendidos
      por um médico; onde as
                                            Paaca sto dos da dos
                                               r da r         dos
  consultas são marcadas com             pa es, um array de r r
                                           cient                 egistos
                                                 poder serusa
                                                      ia     do?
      antecedência de meses.


                   UFS - DCOMP - Prof. Kenia                               8
                            Kodel
Aplicação de Arquivos
Possível solução:
type
  TpRegMed = record
               Nome: string[20];
               Convenio,
               Fone: string[10];
               Pago: real;
               Retorno: boolean;
             end;
var
  ArqPacientes: file of TpRegMed;
Considerando a definição dada, nesta temos que
   ArqPacientes é um arquivo composto por registros
   formados por cinco campos: nome, convênio, fone,
   (valor) pago e retorno.
                    UFS - DCOMP - Prof. Kenia     9
                             Kodel
type
  TpRegMed = record
               Nome: string[20];
               Convenio,
               Fone: string[10];
               Pago: real;
               Retorno: boolean;
             end;
var
  ArqPacientes: file of TpRegMed;
 0     ≡
 1
 2
       ≡
       ≡
                                     ≡
 3     ≡
 4     ≡
 5     ≡
 6     ≡
 7     ≡                          Nome         Convênio   Fone   Pago    Retorno

 ...                              Maria        BoaSaude   322    18,50    true
 N     ≡


             ArqPacientes

                   UFS - DCOMP - Prof. Kenia                              10
                            Kodel
Associação a Nome Externo
   Para gerenciamento dos dados mantidos em
    arquivos, são necessários comandos específicos;
    de manipulação de arquivos.
   Um destes refere-se à associação a nome
    externo.
   O assign é o procedimento que possibilita a
    associação do nome externo do arquivo ao seu
    nome lógico (interno).
   Os arquivos são elementos que existem
    independente da existência do programa que o
    manipula. Portanto, apresentam nome externo,
    através do qual, por exemplo, outros programas
    os identificam.

                   UFS - DCOMP - Prof. Kenia          11
                            Kodel
Associação a Nome Externo
Através do nome externo o arquivo mantém-se
    disponível para outros programas.
assign(var <arqinterno>; <arqexterno>: string);

Onde:
 <arqinterno> é o nome lógico do arquivo,
   nome interno
 <arqexterno> é o nome externo do arquivo



                 UFS - DCOMP - Prof. Kenia        12
                          Kodel
Associação a Nome Externo
Exemplo:
assign(ArqPacientes,‘Consultas.dat’);

   Com a execução do programa que manipula
    ArqPacientes, considerando os efeitos da
    instrução dada acima, o arquivo Consultas.dat
    externo, é associado ao arquivo interno
    ArqPacientes.
   Mesmo após a conclusão do referido programa,
    o arquivo Consultas.dat existirá, preservando
    os dados neste mantidos.

                 UFS - DCOMP - Prof. Kenia      13
                          Kodel
Associação a Nome Externo
Exemplo:
assign(ArqPacientes,‘C18nov08.dat’);
...
assign(ArqPacientes,‘C20nov08.dat’);

   Um único arquivo lógico pode ser
    associado a diversos arquivos externos
    (um por vez), dependendo da situação
    problema a ser solucionada.
   Antes da definição do nome externo do
    arquivo pode ser descrito o caminho de
    localização deste: ‘C:Hospital DaSaude
    DrCuraTudoConsultas.dat’
                UFS - DCOMP - Prof. Kenia      14
                         Kodel
Abrindo Arquivos
   Para manipulação de dados mantidos em arquivos
    é preciso abir estes (arquivos).
   Em Pascal há dois comandos para abrir arquivos:
reset(var <Arquivo>);
rewrite(var <Arquivo>);

   O reset é um procedimento útil para abrir
    arquivos já existentes. Preserva os dados
    mantidos neste.
   Com o reset, caso o arquivo não exista, ocorre
    um erro de execução.
                   UFS - DCOMP - Prof. Kenia         15
                            Kodel
Abrindo Arquivos
   Como já dito, tem-se:
reset(var <Arquivo>);
rewrite(var <Arquivo>);

   As características do reset já foram vistas.
   O rewrite é um procedimento útil para
    criar e abrir novos arquivos.
   Caso o arquivo já exista, o rewrite provoca
    a perda dos dados mantidos neste.


                UFS - DCOMP - Prof. Kenia          16
                         Kodel
Abrindo Arquivos
reset(ArqPacientes);
rewrite(ArqPacientes);

   Na prática, se usamos apenas o reset para
    abrir os arquivos manipulados por um
    programa; na primeira vez que o usuário
    executar a aplicação, como o cadastro não
    existe, o reset provocaria erro de execução.


                 UFS - DCOMP - Prof. Kenia         17
                          Kodel
Abrindo Arquivos
reset(ArqPacientes);
rewrite(ArqPacientes);

   E se usamos, na prática, apenas o rewrite,
     para abrir os arquivos manipulados por um
    programa; a primeira vez que o usuário
    executar a aplicação, como o cadastro não
    existe, o rewrite provoca a criação do
    arquivo; mas em todas as outras vezes, que
    o arquivo (cadastro) deve apenas ser
    aberto, o rewrite, provoca a perda dos
    dados.

                UFS - DCOMP - Prof. Kenia        18
                         Kodel
Abrindo Arquivos
reset(ArqPacientes);
rewrite(ArqPacientes);

   Precisamos então: sendo a primeira vez
    que o usuário está executando o
    programa (o cadastro ainda não existe),
    o rewrite deve ser usado para criar o
    arquivo. E, em todas as outras vezes (o
    cadastro já existe e deve ser
    preservado) usar o reset.


             UFS - DCOMP - Prof. Kenia        19
                      Kodel
Abrindo Arquivos
procedure AbrirArquivo(Arquivo: TipoArquivo;
                       NomeArq: string);
begin
  assign(Arquivo,NomeArq);
  {$I-} reset(Arquivo); {$I+}
  if IOResult <> 0 then
     rewrite(Arquivo);
end;
   Neste tenta-se abrir o arquivo com reset,
    presumindo que o Arquivo já exista.
   Caso o arquivo não exista, com {$I-} é efetuado o
    desligamento da diretiva de compilação fazendo
    com que o erro não seja tratado através de
    mensagem ao usuário, mas que seja atribuído um
    código de erro à variável predefinida IOResult.
                   UFS - DCOMP - Prof. Kenia            20
                            Kodel
Abrindo Arquivos
procedure AbrirArquivo(Arquivo: TipoArquivo;
                            NomeArq: string);
begin
  assign(Arquivo,NomeArq);
  {$I-} reset(Arquivo); {$I+}
  if IOResult <> 0 then
     rewrite(Arquivo);
end;
 Se a IOResult for diferente de zero é porque houve erro
    na tentativa de abrir o arquivo. Se houve erro é porque
    o arquivo não existia, então este deve ser criado –
    usando o rewrite.
 Se a IOResult for igual a zero é porque não houve erro
    na tentativa de abrir o arquivo. Ou seja, o arquivo já
    existia e foi devidamente aberto com reset. Neste caso
    o rewrite não precisa ser usado.
                     UFS - DCOMP - Prof. Kenia          21
                              Kodel
Abrindo Arquivos
procedure AbrirArquivo(Arquivo: TipoArquivo;
                           NomeArq: string);
begin
  assign(Arquivo,NomeArq);
  {$I-} reset(Arquivo); {$I+}
  if IOResult <> 0 then
     rewrite(Arquivo);
end;
 Importante destacar que a abertura de um arquivo requer
    a associação prévia deste a um nome externo.
 Em aplicações que manipulam arquivo, a abertura deste
    deve ser efetuada no início da aplicação, e uma única vez,
    não deve ser feita então, por exemplo, em laços (de
    operações).
                      UFS - DCOMP - Prof. Kenia            22
                               Kodel
Fechando Arquivos
close(var <Arquivo>);

   Através do comando close é possível fechar um
    arquivo.
   Vale esclarecer que a ausência do close não é
    identificada nem no processo de compilação, nem
    no de execução . Porém pode provocar danos nos
    dados mantidos no arquivo.
   O processo de fechar um arquivo deve ser efetuada
    ao final da manipulação deste e uma única vez.
    Assim, também, não deve ser mantido em laços de
    operações.
                  UFS - DCOMP - Prof. Kenia             23
                           Kodel
Lendo e Gravando Dados em Arquivos
Para armazenamento, usar:
write(var <Arquivo>,<Registro>);
Para leitura, usar:
read(var <Arquivo>,var <Registro>);
    Exemplo, a instrução write(Arq,R); provoca o
     armazenamento do registro R no arquivo Arq. Mas, resta
     esclarecer em que posição.
    O read e o write são aplicados ao registro da posição
     corrente do arquivo.
    Para gerenciamento de um arquivo é mantido um
     ponteiro numérico que indica a posição (corrente) do
     registro a ser manipulado.
                      UFS - DCOMP - Prof. Kenia              24
                               Kodel
Lendo e Gravando Dados em Arquivos
Para armazenamento, usar:
write(var <Arquivo>,<Registro>);
Para leitura, usar:
read(var <Arquivo>,var <Registro>);
•   Inicialmente, logo após a abertura de um arquivo, o
    ponteiro lógico é setado na posição zero deste.
•   Havendo leituras (read) ou gravações (write), esta
    operação é efetuada sobre o registros que encontra-
    se na posição corrente e o apontador é atualizado em
    uma posição.
                      UFS - DCOMP - Prof. Kenia           25
                               Kodel
Manipulando Arquivos
   Em geral, no processo de inclusão de novos
    registros, estes devem ser adicionados ao
    final do arquivo, após o último registro. Para
    tanto, é útil a função eof.
eof(<Arquivo>):boolean;
   eof é uma função que retorna true quando é
    encontrado o fim do arquivo.




               UFS - DCOMP - Prof. Kenia             26
                        Kodel
Manipulando Arquivos
    Caso seja necessário manipular um registro que
     encontra-se numa dada posição do arquivo, é útil
     procedimento seek.

seek(var <Arquivo>; <posição>: longint);

    Considerando seek(Arq,50); o ponteiro é
     posicionado na posição 50 do arquivo Arq; então a
     próxima operação de leitura ou armazenamento
     será efetuada sobre o registro que se encontra
     nesta posição.



                   UFS - DCOMP - Prof. Kenia             27
                            Kodel
Manipulando Arquivos
    Para identificar em que posição se encontra o
     ponteiro de um arquivo há a função filepos.

filepos(<Arquivo>):longint;

    E para identificar quantos registros compõem o
     arquivo é útil a função filesize.

filesize(<Arquivo>): longint;

    Vale esclarecer que o número de registros que
     compõem um arquivo também é denominado
     tamanho do arquivo.
                   UFS - DCOMP - Prof. Kenia          28
                            Kodel
Aplicando Arquivos
   Arquivos devem ser aplicados em aplicações
    computacionais que manipulam dados que devem
    ser mantidos permanentemente: agenda telefônica,
    estoque, cadastros.
   Vale considerar que a memória permanente tem
    também grande capacidade de armazenamento de
    dados, mas é lenta em relação à memória
    principal.


                  UFS - DCOMP - Prof. Kenia        29
                           Kodel
ARQUIVOS
                            aplicação




          Implementar programa
             de cadastro dos
             medicamentos de
             uma farmácia.


UFS - DCOMP - Prof. Kenia           30
         Kodel
CADASTRO FARMÁCIA
                                                  dados
type
  Str20 = string[20];
  TpReg = record
            Nome: Str20;
            Preco: real;
            Estoque: integer; {Quantidade em estoque}
          end;
var
  ArqFarma: file of TpReg;
  RegFarma: TpReg;
  Opcao: char;
  CadastroVazio,
  Existe: boolean;
  Pos: longint;



                   UFS - DCOMP - Prof. Kenia           31
                            Kodel
begin
  CadastroVazio:=false;                         CADASTRO   FARMÁCIA
  assign(ArqFarma,'Farmas.dat');
  {$I-} reset(ArqFarma); {$I+}
                                                      principal
  if IOResult <> 0 then rewrite(ArqFarma);
  repeat
    clrscr; writeln('*** farma ***'); writeln;
    writeln(' 1 - incluir');
    writeln(' 2 - excluir');
    writeln(' 3 - editar estoque');
    writeln(' 4 - consultar');
    writeln(' 5 - listar todos');
    writeln(' 6 - encerrar');
    writeln; writeln('Opcao:');
    repeat Opcao:=readkey;
    until Opcao in ['1','2','3','4','5','6'];
    if Opcao in ['2','3','4','5'] then
     VerifiqueVazio(CadastroVazio);
    if not CadastroVazio then
      case Opcao of
      '1': incluir;
      '2': excluir;
      '3': alterar;
      '4': consultar;
      '5': listarTodos; end;
  until Opcao = '6';
  close(ArqFarma); end.    UFS - DCOMP - Prof. Kenia             32
                                  Kodel
CADASTRO FARMÁCIA
                                                  principal

procedure VerifiqueVazio(var inicio: boolean);
begin
  inicio:=false;
  if filesize(ArqFarma)=0 then begin
    inicio:=true;
    clrscr;
    writeln('impossivel realizar operação, cadastro vazio');
     writeln('pressione qualquer tecla');
     readln;
  end;
end;


                      UFS - DCOMP - Prof. Kenia                33
                               Kodel
procedure incluir;
var                                       CADASTRO FARMÁCIA
  R: char;
begin
                                                  inclusão
  repeat
     clrscr;
     writeln('*** inclusao ***');
     writeln;
     with RegFarma do begin
       writeln('Nome: ');
       readln(Nome);
       writeln('Preco: ');
       readln(Preco);
       writeln('Estoque: ');
       readln(Estoque);
     end;
     seek(ArqFarma,filesize(ArqFarma));
     write(ArqFarma,RegFarma);
     writeln;
     writeln('Deseja efetuar nova inclusao? S/N ');
     repeat
       R:=upcase(readkey);
     until (R='S') or (R='N');
  until R='N';
end;                 UFS - DCOMP - Prof. Kenia            34
                             Kodel
CADASTRO FARMÁCIA
                                               consulta total
procedure listarTodos;
begin
  clrscr; writeln('*** lista todos ***');
  writeln;
  writeln('Nome':20,'Preco':12,'Estoque':10);
  seek(ArqFarma,0);
  while not eof(ArqFarma) do begin
     read(ArqFarma,RegFarma);
     if RegFarma.Nome <> 'XXX' then
     with RegFarma do
       writeln(Nome:20,Preco:10:2,Estoque:10);
  end;
  writeln;
  writeln('pressione qualquer tecla');
  readkey;
end;
                   UFS - DCOMP - Prof. Kenia                35
                            Kodel
procedure consultar;              CADASTRO FARMÁCIA
var
  Remedio: Str20;
                                          consulta
  R: char;
begin
  repeat
     clrscr; writeln('*** consulta ***');
     writeln;
     writeln('Nome: ');
     readln(Remedio);
     localizar(Remedio,Existe,Pos);
     if Existe then
       with RegFarma do begin
          writeln('Nome: ',Nome);
          writeln('Preco: ',Preco);
          writeln('Estoque: ',Estoque); end
     else
       writeln('*** medicamento inexistente ***');
     writeln;
     writeln('Deseja efetuar nova consulta? S/N ');
     repeat
       R:=upcase(readkey);
     until (R='S') or (R='N');
  until R = 'N';
end;
CADASTRO FARMÁCIA
                                                    consulta
procedure localizar(N: Str20;
                     var Achou: boolean;
                     var Posicao: longint);
begin
  Achou:=false;
  Posicao:=-1;
  seek(ArqFarma,0);
  while not eof(ArqFarma) do begin
     read(ArqFarma,RegFarma);
     if RegFarma.Nome = N then begin
       Achou:=true;
       Posicao:=filepos(ArqFarma)-1; end;
  end;
end;
                           inua           á endo ocaiza
                 Porque cont rabuscamesmo j t l l do o el o desej do?
                                                        ement   a


                   UFS - DCOMP - Prof. Kenia                       37
                            Kodel
ARQUIVOS
                            aplicação


        Implementar
               procedimento de
               exclusão (lógica).




UFS - DCOMP - Prof. Kenia           38
         Kodel
procedure incluir;
var                             CADASTRO FARMÁCIA
  R: char;
begin
                                            inclusão
  repeat
     clrscr;
     writeln('*** inclusao ***');          j a pr
                                           ust r ocediment de
                                                         o
     writeln;                            incl ã de for aev a
                                             us o     ma it r
     with RegFarma do begin
       writeln('Nome: ');                  r â de da
                                            edund ncia dos.
       readln(Nome);
       writeln('Preco: ');
       readln(Preco);
       writeln('Estoque: ');
       readln(Estoque);
     end;
     seek(ArqFarma,filesize(ArqFarma));
     write(ArqFarma,RegFarma);
     writeln;
     writeln('Deseja efetuar nova inclusao? S/N ');
     repeat
       R:=upcase(readkey);
     until (R='S') or (R='N');
  until R='N';
end;
ARQUIVOS
                            aplicação

      Implementar
             procedimento de
             alteração (ajuste
             do estoque).




UFS - DCOMP - Prof. Kenia           40
         Kodel
ARQUIVOS
                            aplicação




             Analisando a situação problema,
                 que outras alterações
                 (edições) são provavelmente
                 necessárias?


UFS - DCOMP - Prof. Kenia                41
         Kodel
ARQUIVOS
                            exercício



               Criar programa Pascal para
                   manter as notas dos
                   alunos da turma de
                   Programação Imperativa:
                   3 notas (de 0 a 10).




UFS - DCOMP - Prof. Kenia              42
         Kodel
ARQUIVOS
                                                      exercício
Criar trecho de código Pascal para
     manter o ranking de um jogo. Neste
     são mantidos nome do jogador e
     pontuação (o que também
     corresponde à entrada). Um nome
     não pode aparecer mais de uma vez
     no jogo. O ranking é composto por
     até 5 jogadores.




                          UFS - DCOMP - Prof. Kenia           43
                                   Kodel
Propor situação problema cuja solução ótima
requer a aplicação de arquivos de dados.
Construir programa correspondente.
Disponibilizar as operações de:
  a) inclusão,
  b) consulta total,
  c) consulta por chave [lida].


      C uidando
            do
       jardim!!!
          UFS - DCOMP - Prof. Kenia           44
                   Kodel
ARQUIVOS
        COMPLEMENTAR ESTUDOS:

Fundamentos da Programação de Computadores
          Ana Fernanda Gomes Ascencio
     Edilene Aparecida Veneruchi de Campos


       Capítulo Arquivo
                                                  45



              UFS - DCOMP - Prof. Kenia      45
                       Kodel

Weitere ähnliche Inhalte

Andere mochten auch

EDII03 [2012.1] Manipulação de Arquivos em Pascal
EDII03 [2012.1]  Manipulação de Arquivos em PascalEDII03 [2012.1]  Manipulação de Arquivos em Pascal
EDII03 [2012.1] Manipulação de Arquivos em PascalKianeLedok
 
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos InvertidosEDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos InvertidosKianeLedok
 
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de AssinaturasEDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de AssinaturasKianeLedok
 
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
EDII10 [2012.1]   Recuperação de Chave Secundária - MultilistaEDII10 [2012.1]   Recuperação de Chave Secundária - Multilista
EDII10 [2012.1] Recuperação de Chave Secundária - MultilistaKianeLedok
 
EDII13 [2012.1] Estruturas de Busca em Texto
EDII13 [2012.1]   Estruturas de Busca em TextoEDII13 [2012.1]   Estruturas de Busca em Texto
EDII13 [2012.1] Estruturas de Busca em TextoKianeLedok
 
EDII09 [2012.1] Arquivos Sequenciais Indexados
EDII09 [2012.1]   Arquivos Sequenciais IndexadosEDII09 [2012.1]   Arquivos Sequenciais Indexados
EDII09 [2012.1] Arquivos Sequenciais IndexadosKianeLedok
 
Abcvida mapa linux
Abcvida mapa linuxAbcvida mapa linux
Abcvida mapa linuxluizsuss
 
Arquivos gerenciamento e organizacao de arquivos
Arquivos gerenciamento e organizacao de arquivosArquivos gerenciamento e organizacao de arquivos
Arquivos gerenciamento e organizacao de arquivosClaudiomar Borduchi
 
EDII15 [2012.1] Classificação Externa
EDII15 [2012.1]   Classificação ExternaEDII15 [2012.1]   Classificação Externa
EDII15 [2012.1] Classificação ExternaKianeLedok
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+KianeLedok
 
Secretariado Executivo Aula 3 E 4
Secretariado Executivo  Aula  3 E 4Secretariado Executivo  Aula  3 E 4
Secretariado Executivo Aula 3 E 4egildofarias
 

Andere mochten auch (20)

EDII03 [2012.1] Manipulação de Arquivos em Pascal
EDII03 [2012.1]  Manipulação de Arquivos em PascalEDII03 [2012.1]  Manipulação de Arquivos em Pascal
EDII03 [2012.1] Manipulação de Arquivos em Pascal
 
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos InvertidosEDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
 
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de AssinaturasEDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
 
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
EDII10 [2012.1]   Recuperação de Chave Secundária - MultilistaEDII10 [2012.1]   Recuperação de Chave Secundária - Multilista
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
 
Arquivos
ArquivosArquivos
Arquivos
 
EDII13 [2012.1] Estruturas de Busca em Texto
EDII13 [2012.1]   Estruturas de Busca em TextoEDII13 [2012.1]   Estruturas de Busca em Texto
EDII13 [2012.1] Estruturas de Busca em Texto
 
EDII09 [2012.1] Arquivos Sequenciais Indexados
EDII09 [2012.1]   Arquivos Sequenciais IndexadosEDII09 [2012.1]   Arquivos Sequenciais Indexados
EDII09 [2012.1] Arquivos Sequenciais Indexados
 
Aula 08 secretariado
Aula 08 secretariadoAula 08 secretariado
Aula 08 secretariado
 
Abcvida mapa linux
Abcvida mapa linuxAbcvida mapa linux
Abcvida mapa linux
 
Arquivos gerenciamento e organizacao de arquivos
Arquivos gerenciamento e organizacao de arquivosArquivos gerenciamento e organizacao de arquivos
Arquivos gerenciamento e organizacao de arquivos
 
Aula 02 secretariado
Aula 02 secretariadoAula 02 secretariado
Aula 02 secretariado
 
EDII15 [2012.1] Classificação Externa
EDII15 [2012.1]   Classificação ExternaEDII15 [2012.1]   Classificação Externa
EDII15 [2012.1] Classificação Externa
 
Aula 05 secretariado
Aula 05 secretariadoAula 05 secretariado
Aula 05 secretariado
 
Aula 04 secretariado
Aula 04 secretariadoAula 04 secretariado
Aula 04 secretariado
 
Aula 09 secretariado
Aula 09 secretariadoAula 09 secretariado
Aula 09 secretariado
 
Aula 10 secretariado
Aula 10 secretariadoAula 10 secretariado
Aula 10 secretariado
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+
 
Secretariado Executivo Aula 3 E 4
Secretariado Executivo  Aula  3 E 4Secretariado Executivo  Aula  3 E 4
Secretariado Executivo Aula 3 E 4
 
Aula 03 secretariado
Aula 03 secretariadoAula 03 secretariado
Aula 03 secretariado
 
Aula 07 secretariado
Aula 07 secretariadoAula 07 secretariado
Aula 07 secretariado
 

Ähnlich wie EDII03 [2012.1] Manipulação de Arquivos em Pascal

Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandosAndreiaOliveira94
 
Ficha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandosFicha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandosomaildoruifilipe
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandosAndreiaOliveira94
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandoskamatozza
 
1 exercicio funcoes com string e manipulacao com arquivo
1 exercicio  funcoes com string e manipulacao com arquivo1 exercicio  funcoes com string e manipulacao com arquivo
1 exercicio funcoes com string e manipulacao com arquivoKievnny Mendonca
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandosfilipereira
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandosAndreiaOliveira94
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandosAndreiaOliveira94
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Arquivos slides aula25
Arquivos slides aula25Arquivos slides aula25
Arquivos slides aula25AlanoG
 
Ficha de trabalho 6 so
Ficha de trabalho 6 soFicha de trabalho 6 so
Ficha de trabalho 6 soshecklone
 
02 alocacao de_memoria
02 alocacao de_memoria02 alocacao de_memoria
02 alocacao de_memoriasweetgi
 
Ficha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandosFicha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandosmilanvassaramo
 
Armazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoArmazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoMário Monteiro
 

Ähnlich wie EDII03 [2012.1] Manipulação de Arquivos em Pascal (20)

Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Ficha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandosFicha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandos
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
1 exercicio funcoes com string e manipulacao com arquivo
1 exercicio  funcoes com string e manipulacao com arquivo1 exercicio  funcoes com string e manipulacao com arquivo
1 exercicio funcoes com string e manipulacao com arquivo
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Uso de arquivos na linguagem Java
Uso de arquivos na linguagem Java Uso de arquivos na linguagem Java
Uso de arquivos na linguagem Java
 
Msdos vol4
Msdos vol4Msdos vol4
Msdos vol4
 
Arquivos slides aula25
Arquivos slides aula25Arquivos slides aula25
Arquivos slides aula25
 
Reuse release equivalence principle
Reuse release equivalence principleReuse release equivalence principle
Reuse release equivalence principle
 
Ficha de trabalho 6 so
Ficha de trabalho 6 soFicha de trabalho 6 so
Ficha de trabalho 6 so
 
02 alocacao de_memoria
02 alocacao de_memoria02 alocacao de_memoria
02 alocacao de_memoria
 
Ficha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandosFicha de trabalho_so_6_m4_-_linux_comandos
Ficha de trabalho_so_6_m4_-_linux_comandos
 
Armazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoArmazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de Informação
 
Comandos Shell
Comandos ShellComandos Shell
Comandos Shell
 
Ficha de trabalho [6]
Ficha de trabalho [6]Ficha de trabalho [6]
Ficha de trabalho [6]
 

Kürzlich hochgeladen

ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Susana Stoffel
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfIedaGoethe
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 

Kürzlich hochgeladen (20)

ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 

EDII03 [2012.1] Manipulação de Arquivos em Pascal

  • 1. Manipulação de Arquivos em Pascal Estrutura de Dados II Unida 3 de UFS - DCOMP - Prof. Kenia 1 Kodel
  • 2. Flores? O verbo educar é originário do latim e quer dizer extrair de dentro. Logo, a educação não se constitui em mero estabelecimento de informações, mas sim de se trabalhar as potencialidades do ser, a fim de que floresçam. UFS - DCOMP - Prof. Kenia 2 Kodel
  • 3. O segredo é não correr atrás das borboletas... É cuidar do jardim para que elas venham até você. . Mário Quintana UFS - DCOMP - Prof. Kenia 3 Kodel
  • 4. ara implementar programa infantil para ordenação (alfabética) de palavras, que estrutura de dados você usaria? Por quê? UFS - DCOMP - Prof. Kenia 4 Kodel
  • 5. Considerando a base de dados abaixo, referente à tabela de preços de uma papelaria, que estrutura de dados você usaria para mantê-la? UFS - DCOMP - Prof. Kenia 5 Kodel
  • 6. Definição de Arquivos  Os arquivos são elementos de armazenamento de dados residentes em memória secundária, ou seja, memória não volátil.  Portanto são diferentes dos outros itens de armazenamento de dados (residentes na memória principal): registros, vetores, matrizes; os quais não preservam os dados neles depositados, após o término da execução dos programas que os definem. UFS - DCOMP - Prof. Kenia 6 Kodel
  • 7. Declaração Pascal de Arquivos Do ponto de vista lógico, os arquivos são coleções de registros e são declarados: var <Nome>: file of <TipoRegistro>; Onde: o Nome – nome do arquivo (interno); o TipoRegistro – tipo dos registros que comporão o arquivo. UFS - DCOMP - Prof. Kenia 7 Kodel
  • 8. Aplicação de Arquivos Considerando, por exemplo, a necessidade de cadastrar os pacientes a serem atendidos por um médico; onde as Paaca sto dos da dos r da r dos consultas são marcadas com pa es, um array de r r cient egistos poder serusa ia do? antecedência de meses. UFS - DCOMP - Prof. Kenia 8 Kodel
  • 9. Aplicação de Arquivos Possível solução: type TpRegMed = record Nome: string[20]; Convenio, Fone: string[10]; Pago: real; Retorno: boolean; end; var ArqPacientes: file of TpRegMed; Considerando a definição dada, nesta temos que ArqPacientes é um arquivo composto por registros formados por cinco campos: nome, convênio, fone, (valor) pago e retorno. UFS - DCOMP - Prof. Kenia 9 Kodel
  • 10. type TpRegMed = record Nome: string[20]; Convenio, Fone: string[10]; Pago: real; Retorno: boolean; end; var ArqPacientes: file of TpRegMed; 0 ≡ 1 2 ≡ ≡ ≡ 3 ≡ 4 ≡ 5 ≡ 6 ≡ 7 ≡ Nome Convênio Fone Pago Retorno ... Maria BoaSaude 322 18,50 true N ≡ ArqPacientes UFS - DCOMP - Prof. Kenia 10 Kodel
  • 11. Associação a Nome Externo  Para gerenciamento dos dados mantidos em arquivos, são necessários comandos específicos; de manipulação de arquivos.  Um destes refere-se à associação a nome externo.  O assign é o procedimento que possibilita a associação do nome externo do arquivo ao seu nome lógico (interno).  Os arquivos são elementos que existem independente da existência do programa que o manipula. Portanto, apresentam nome externo, através do qual, por exemplo, outros programas os identificam. UFS - DCOMP - Prof. Kenia 11 Kodel
  • 12. Associação a Nome Externo Através do nome externo o arquivo mantém-se disponível para outros programas. assign(var <arqinterno>; <arqexterno>: string); Onde:  <arqinterno> é o nome lógico do arquivo, nome interno  <arqexterno> é o nome externo do arquivo UFS - DCOMP - Prof. Kenia 12 Kodel
  • 13. Associação a Nome Externo Exemplo: assign(ArqPacientes,‘Consultas.dat’);  Com a execução do programa que manipula ArqPacientes, considerando os efeitos da instrução dada acima, o arquivo Consultas.dat externo, é associado ao arquivo interno ArqPacientes.  Mesmo após a conclusão do referido programa, o arquivo Consultas.dat existirá, preservando os dados neste mantidos. UFS - DCOMP - Prof. Kenia 13 Kodel
  • 14. Associação a Nome Externo Exemplo: assign(ArqPacientes,‘C18nov08.dat’); ... assign(ArqPacientes,‘C20nov08.dat’);  Um único arquivo lógico pode ser associado a diversos arquivos externos (um por vez), dependendo da situação problema a ser solucionada.  Antes da definição do nome externo do arquivo pode ser descrito o caminho de localização deste: ‘C:Hospital DaSaude DrCuraTudoConsultas.dat’ UFS - DCOMP - Prof. Kenia 14 Kodel
  • 15. Abrindo Arquivos  Para manipulação de dados mantidos em arquivos é preciso abir estes (arquivos).  Em Pascal há dois comandos para abrir arquivos: reset(var <Arquivo>); rewrite(var <Arquivo>);  O reset é um procedimento útil para abrir arquivos já existentes. Preserva os dados mantidos neste.  Com o reset, caso o arquivo não exista, ocorre um erro de execução. UFS - DCOMP - Prof. Kenia 15 Kodel
  • 16. Abrindo Arquivos  Como já dito, tem-se: reset(var <Arquivo>); rewrite(var <Arquivo>);  As características do reset já foram vistas.  O rewrite é um procedimento útil para criar e abrir novos arquivos.  Caso o arquivo já exista, o rewrite provoca a perda dos dados mantidos neste. UFS - DCOMP - Prof. Kenia 16 Kodel
  • 17. Abrindo Arquivos reset(ArqPacientes); rewrite(ArqPacientes);  Na prática, se usamos apenas o reset para abrir os arquivos manipulados por um programa; na primeira vez que o usuário executar a aplicação, como o cadastro não existe, o reset provocaria erro de execução. UFS - DCOMP - Prof. Kenia 17 Kodel
  • 18. Abrindo Arquivos reset(ArqPacientes); rewrite(ArqPacientes);  E se usamos, na prática, apenas o rewrite, para abrir os arquivos manipulados por um programa; a primeira vez que o usuário executar a aplicação, como o cadastro não existe, o rewrite provoca a criação do arquivo; mas em todas as outras vezes, que o arquivo (cadastro) deve apenas ser aberto, o rewrite, provoca a perda dos dados. UFS - DCOMP - Prof. Kenia 18 Kodel
  • 19. Abrindo Arquivos reset(ArqPacientes); rewrite(ArqPacientes);  Precisamos então: sendo a primeira vez que o usuário está executando o programa (o cadastro ainda não existe), o rewrite deve ser usado para criar o arquivo. E, em todas as outras vezes (o cadastro já existe e deve ser preservado) usar o reset. UFS - DCOMP - Prof. Kenia 19 Kodel
  • 20. Abrindo Arquivos procedure AbrirArquivo(Arquivo: TipoArquivo; NomeArq: string); begin assign(Arquivo,NomeArq); {$I-} reset(Arquivo); {$I+} if IOResult <> 0 then rewrite(Arquivo); end;  Neste tenta-se abrir o arquivo com reset, presumindo que o Arquivo já exista.  Caso o arquivo não exista, com {$I-} é efetuado o desligamento da diretiva de compilação fazendo com que o erro não seja tratado através de mensagem ao usuário, mas que seja atribuído um código de erro à variável predefinida IOResult. UFS - DCOMP - Prof. Kenia 20 Kodel
  • 21. Abrindo Arquivos procedure AbrirArquivo(Arquivo: TipoArquivo; NomeArq: string); begin assign(Arquivo,NomeArq); {$I-} reset(Arquivo); {$I+} if IOResult <> 0 then rewrite(Arquivo); end;  Se a IOResult for diferente de zero é porque houve erro na tentativa de abrir o arquivo. Se houve erro é porque o arquivo não existia, então este deve ser criado – usando o rewrite.  Se a IOResult for igual a zero é porque não houve erro na tentativa de abrir o arquivo. Ou seja, o arquivo já existia e foi devidamente aberto com reset. Neste caso o rewrite não precisa ser usado. UFS - DCOMP - Prof. Kenia 21 Kodel
  • 22. Abrindo Arquivos procedure AbrirArquivo(Arquivo: TipoArquivo; NomeArq: string); begin assign(Arquivo,NomeArq); {$I-} reset(Arquivo); {$I+} if IOResult <> 0 then rewrite(Arquivo); end;  Importante destacar que a abertura de um arquivo requer a associação prévia deste a um nome externo.  Em aplicações que manipulam arquivo, a abertura deste deve ser efetuada no início da aplicação, e uma única vez, não deve ser feita então, por exemplo, em laços (de operações). UFS - DCOMP - Prof. Kenia 22 Kodel
  • 23. Fechando Arquivos close(var <Arquivo>);  Através do comando close é possível fechar um arquivo.  Vale esclarecer que a ausência do close não é identificada nem no processo de compilação, nem no de execução . Porém pode provocar danos nos dados mantidos no arquivo.  O processo de fechar um arquivo deve ser efetuada ao final da manipulação deste e uma única vez. Assim, também, não deve ser mantido em laços de operações. UFS - DCOMP - Prof. Kenia 23 Kodel
  • 24. Lendo e Gravando Dados em Arquivos Para armazenamento, usar: write(var <Arquivo>,<Registro>); Para leitura, usar: read(var <Arquivo>,var <Registro>);  Exemplo, a instrução write(Arq,R); provoca o armazenamento do registro R no arquivo Arq. Mas, resta esclarecer em que posição.  O read e o write são aplicados ao registro da posição corrente do arquivo.  Para gerenciamento de um arquivo é mantido um ponteiro numérico que indica a posição (corrente) do registro a ser manipulado. UFS - DCOMP - Prof. Kenia 24 Kodel
  • 25. Lendo e Gravando Dados em Arquivos Para armazenamento, usar: write(var <Arquivo>,<Registro>); Para leitura, usar: read(var <Arquivo>,var <Registro>); • Inicialmente, logo após a abertura de um arquivo, o ponteiro lógico é setado na posição zero deste. • Havendo leituras (read) ou gravações (write), esta operação é efetuada sobre o registros que encontra- se na posição corrente e o apontador é atualizado em uma posição. UFS - DCOMP - Prof. Kenia 25 Kodel
  • 26. Manipulando Arquivos  Em geral, no processo de inclusão de novos registros, estes devem ser adicionados ao final do arquivo, após o último registro. Para tanto, é útil a função eof. eof(<Arquivo>):boolean;  eof é uma função que retorna true quando é encontrado o fim do arquivo. UFS - DCOMP - Prof. Kenia 26 Kodel
  • 27. Manipulando Arquivos  Caso seja necessário manipular um registro que encontra-se numa dada posição do arquivo, é útil procedimento seek. seek(var <Arquivo>; <posição>: longint);  Considerando seek(Arq,50); o ponteiro é posicionado na posição 50 do arquivo Arq; então a próxima operação de leitura ou armazenamento será efetuada sobre o registro que se encontra nesta posição. UFS - DCOMP - Prof. Kenia 27 Kodel
  • 28. Manipulando Arquivos  Para identificar em que posição se encontra o ponteiro de um arquivo há a função filepos. filepos(<Arquivo>):longint;  E para identificar quantos registros compõem o arquivo é útil a função filesize. filesize(<Arquivo>): longint;  Vale esclarecer que o número de registros que compõem um arquivo também é denominado tamanho do arquivo. UFS - DCOMP - Prof. Kenia 28 Kodel
  • 29. Aplicando Arquivos  Arquivos devem ser aplicados em aplicações computacionais que manipulam dados que devem ser mantidos permanentemente: agenda telefônica, estoque, cadastros.  Vale considerar que a memória permanente tem também grande capacidade de armazenamento de dados, mas é lenta em relação à memória principal. UFS - DCOMP - Prof. Kenia 29 Kodel
  • 30. ARQUIVOS aplicação Implementar programa de cadastro dos medicamentos de uma farmácia. UFS - DCOMP - Prof. Kenia 30 Kodel
  • 31. CADASTRO FARMÁCIA dados type Str20 = string[20]; TpReg = record Nome: Str20; Preco: real; Estoque: integer; {Quantidade em estoque} end; var ArqFarma: file of TpReg; RegFarma: TpReg; Opcao: char; CadastroVazio, Existe: boolean; Pos: longint; UFS - DCOMP - Prof. Kenia 31 Kodel
  • 32. begin CadastroVazio:=false; CADASTRO FARMÁCIA assign(ArqFarma,'Farmas.dat'); {$I-} reset(ArqFarma); {$I+} principal if IOResult <> 0 then rewrite(ArqFarma); repeat clrscr; writeln('*** farma ***'); writeln; writeln(' 1 - incluir'); writeln(' 2 - excluir'); writeln(' 3 - editar estoque'); writeln(' 4 - consultar'); writeln(' 5 - listar todos'); writeln(' 6 - encerrar'); writeln; writeln('Opcao:'); repeat Opcao:=readkey; until Opcao in ['1','2','3','4','5','6']; if Opcao in ['2','3','4','5'] then VerifiqueVazio(CadastroVazio); if not CadastroVazio then case Opcao of '1': incluir; '2': excluir; '3': alterar; '4': consultar; '5': listarTodos; end; until Opcao = '6'; close(ArqFarma); end. UFS - DCOMP - Prof. Kenia 32 Kodel
  • 33. CADASTRO FARMÁCIA principal procedure VerifiqueVazio(var inicio: boolean); begin inicio:=false; if filesize(ArqFarma)=0 then begin inicio:=true; clrscr; writeln('impossivel realizar operação, cadastro vazio'); writeln('pressione qualquer tecla'); readln; end; end; UFS - DCOMP - Prof. Kenia 33 Kodel
  • 34. procedure incluir; var CADASTRO FARMÁCIA R: char; begin inclusão repeat clrscr; writeln('*** inclusao ***'); writeln; with RegFarma do begin writeln('Nome: '); readln(Nome); writeln('Preco: '); readln(Preco); writeln('Estoque: '); readln(Estoque); end; seek(ArqFarma,filesize(ArqFarma)); write(ArqFarma,RegFarma); writeln; writeln('Deseja efetuar nova inclusao? S/N '); repeat R:=upcase(readkey); until (R='S') or (R='N'); until R='N'; end; UFS - DCOMP - Prof. Kenia 34 Kodel
  • 35. CADASTRO FARMÁCIA consulta total procedure listarTodos; begin clrscr; writeln('*** lista todos ***'); writeln; writeln('Nome':20,'Preco':12,'Estoque':10); seek(ArqFarma,0); while not eof(ArqFarma) do begin read(ArqFarma,RegFarma); if RegFarma.Nome <> 'XXX' then with RegFarma do writeln(Nome:20,Preco:10:2,Estoque:10); end; writeln; writeln('pressione qualquer tecla'); readkey; end; UFS - DCOMP - Prof. Kenia 35 Kodel
  • 36. procedure consultar; CADASTRO FARMÁCIA var Remedio: Str20; consulta R: char; begin repeat clrscr; writeln('*** consulta ***'); writeln; writeln('Nome: '); readln(Remedio); localizar(Remedio,Existe,Pos); if Existe then with RegFarma do begin writeln('Nome: ',Nome); writeln('Preco: ',Preco); writeln('Estoque: ',Estoque); end else writeln('*** medicamento inexistente ***'); writeln; writeln('Deseja efetuar nova consulta? S/N '); repeat R:=upcase(readkey); until (R='S') or (R='N'); until R = 'N'; end;
  • 37. CADASTRO FARMÁCIA consulta procedure localizar(N: Str20; var Achou: boolean; var Posicao: longint); begin Achou:=false; Posicao:=-1; seek(ArqFarma,0); while not eof(ArqFarma) do begin read(ArqFarma,RegFarma); if RegFarma.Nome = N then begin Achou:=true; Posicao:=filepos(ArqFarma)-1; end; end; end; inua á endo ocaiza Porque cont rabuscamesmo j t l l do o el o desej do? ement a UFS - DCOMP - Prof. Kenia 37 Kodel
  • 38. ARQUIVOS aplicação Implementar procedimento de exclusão (lógica). UFS - DCOMP - Prof. Kenia 38 Kodel
  • 39. procedure incluir; var CADASTRO FARMÁCIA R: char; begin inclusão repeat clrscr; writeln('*** inclusao ***'); j a pr ust r ocediment de o writeln; incl ã de for aev a us o ma it r with RegFarma do begin writeln('Nome: '); r â de da edund ncia dos. readln(Nome); writeln('Preco: '); readln(Preco); writeln('Estoque: '); readln(Estoque); end; seek(ArqFarma,filesize(ArqFarma)); write(ArqFarma,RegFarma); writeln; writeln('Deseja efetuar nova inclusao? S/N '); repeat R:=upcase(readkey); until (R='S') or (R='N'); until R='N'; end;
  • 40. ARQUIVOS aplicação Implementar procedimento de alteração (ajuste do estoque). UFS - DCOMP - Prof. Kenia 40 Kodel
  • 41. ARQUIVOS aplicação Analisando a situação problema, que outras alterações (edições) são provavelmente necessárias? UFS - DCOMP - Prof. Kenia 41 Kodel
  • 42. ARQUIVOS exercício Criar programa Pascal para manter as notas dos alunos da turma de Programação Imperativa: 3 notas (de 0 a 10). UFS - DCOMP - Prof. Kenia 42 Kodel
  • 43. ARQUIVOS exercício Criar trecho de código Pascal para manter o ranking de um jogo. Neste são mantidos nome do jogador e pontuação (o que também corresponde à entrada). Um nome não pode aparecer mais de uma vez no jogo. O ranking é composto por até 5 jogadores. UFS - DCOMP - Prof. Kenia 43 Kodel
  • 44. Propor situação problema cuja solução ótima requer a aplicação de arquivos de dados. Construir programa correspondente. Disponibilizar as operações de: a) inclusão, b) consulta total, c) consulta por chave [lida]. C uidando do jardim!!! UFS - DCOMP - Prof. Kenia 44 Kodel
  • 45. ARQUIVOS COMPLEMENTAR ESTUDOS: Fundamentos da Programação de Computadores Ana Fernanda Gomes Ascencio Edilene Aparecida Veneruchi de Campos Capítulo Arquivo 45 UFS - DCOMP - Prof. Kenia 45 Kodel