SlideShare uma empresa Scribd logo
1 de 41
Progra ç oImpera a
            maã       tiv
                          Unidade 14



UFS - DComp - Prof. Kenia Kodel        1
CAMPEONATO DO DIA DO AMIGO
     var
       Placar : array [1..4,1..6] of word;




      1   2   3   4   5   6




                                             UFS - DComp - Prof. Kenia Kodel
     200 303 228 400 168 226
 1




     252 314 115 142 172 215
 2




     154 285 292 236 265 356
 3




     327 336 346 365 243 401
 4




Se o campeonato durar mais de
   um dia, como preservar o                          2

           Placar?
CAMPEONATO DO DIA DO AMIGO
     var
       Placar : array [1..4,1..6] of word;




      1   2   3   4   5   6




                                             UFS - DComp - Prof. Kenia Kodel
     200 303 228 400 168 226
 1




     252 314 115 142 172 215
 2




     154 285 292 236 265 356
 3




     327 336 346 365 243 401
 4




 Se o compeonato durar mais de um dia,
o Placar deverá ser mantido em memória               3

               não volátil.
 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 itens de
  armazenamento de dados estudados até
  então: 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.                          4
                       UFS - DComp - Prof. Kenia Kodel
 Sob o 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 Kodel   5
Considerando, por exemplo, a necessidade de
cadastrar os pacientes a serem atendidos por um
determinado médico.    Onde as consultas são
marcadas com antecedência de meses.


                         Para cadastro dos dados dos
                            pacientes, um array de
                         registros poderia ser usado?


                       UFS - DComp - Prof. Kenia Kodel   6
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 temos que
    ArqPacientes é um arquivo composto por registros
    formados por cinco campos: nome, convênio,
    fone, (valor) pago e retorno.

                          UFS - DComp - Prof. Kenia Kodel   7
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 Kodel                            8
   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 Kodel   9
   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 Kodel   10
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 é criado e/ou
    alterado.
   Mesmo após a conclusão do referido programa, o
    arquivo Consultas.dat existirá, preservando os dados
    neste mantidos.


                           UFS - DComp - Prof. Kenia Kodel   11
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 DaSaudeDr
    CuraTudoConsultas.dat’


                         UFS - DComp - Prof. Kenia Kodel   12
   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 Kodel   13
   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 Kodel   14
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 Kodel   15
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 Kodel   16
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 Kodel   17
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 Kodel   18
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 Kodel   19
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 Kodel   20
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 Kodel   21
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 Kodel   22
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 Kodel   23
   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.
   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. - Prof. Kenia Kodel
                              UFS - DComp                         24
   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.           25
                               UFS - DComp - Prof. Kenia Kodel
   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 Kodel   26
Implementar
  programa de
  cadastro dos
  medicamentos
  de uma farmácia.
UFS - DComp - Prof. Kenia Kodel   27
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 Kodel                             28
begin
  CadastroVazio:=false;
  assign(ArqFarma,'Farmas.dat');
  {$I-} reset(ArqFarma); {$I+}
  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 Kodel   29
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 Kodel   30
procedure incluir;
var
  R: char;
begin
  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 Kodel   31
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 Kodel   32
procedure consultar;
var
  Remedio: Str20;
  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;

                           UFS - DComp - Prof. Kenia Kodel   33
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;
                  Por que continuar a busca mesmo já
                tendo localizado o elemento desejado?

                         UFS - DComp - Prof. Kenia Kodel   34
Implementar
        procedimento
        de exclusão

        (lógica).



UFS - DComp - Prof. Kenia Kodel   35
procedure incluir;
var
  R: char;
begin
  repeat
     clrscr;
     writeln('*** inclusao ***'); justar procedimento
     writeln;                         de inclusão de
     with RegFarma do begin
       writeln('Nome: ');             forma a evitar
       readln(Nome);
       writeln('Preco: ');           redundância de
       readln(Preco);                     dados.
       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 Kodel   36
Implementar
  procedimento

  de alteração

  (ajuste do
  estoque).

                 UFS - DComp - Prof. Kenia Kodel   37
Analisando a situação
   problema, que outras
   alterações (edições)
   são provavelmente
   necessárias?

UFS - DComp - Prof. Kenia Kodel   38
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 Kodel   39
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 Kodel   40
41




               ARQUIVOS
             COMPLEMENTAR ESTUDOS:




                                                  UFS - DComp - Prof. Kenia Kodel
     Fundamentos da Programação de Computadores
               Ana Fernanda Gomes Ascencio
          Edilene Aparecida Veneruchi de Campos


            Capítulo Arquivo
                                                             41

Mais conteúdo relacionado

Destaque

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
 
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
 
EDII08 [2012.1] Arquivos Diretos - Hashing
EDII08 [2012.1]  Arquivos Diretos - HashingEDII08 [2012.1]  Arquivos Diretos - Hashing
EDII08 [2012.1] Arquivos Diretos - HashingKianeLedok
 
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
 
EDII01 [2012.1] Acordo de Convivência
EDII01 [2012.1]   Acordo de ConvivênciaEDII01 [2012.1]   Acordo de Convivência
EDII01 [2012.1] Acordo de ConvivênciaKianeLedok
 
EDII04 [2012.1] Arquivos Sequenciais [Definição e Desordenado]
EDII04 [2012.1]   Arquivos Sequenciais [Definição e Desordenado]EDII04 [2012.1]   Arquivos Sequenciais [Definição e Desordenado]
EDII04 [2012.1] Arquivos Sequenciais [Definição e Desordenado]KianeLedok
 
EdII07 [2012.1] Arquivos Diretos - Dicionário de Dados
EdII07 [2012.1]   Arquivos Diretos - Dicionário de DadosEdII07 [2012.1]   Arquivos Diretos - Dicionário de Dados
EdII07 [2012.1] Arquivos Diretos - Dicionário de DadosKianeLedok
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)KianeLedok
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)KianeLedok
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"deniscody
 

Destaque (15)

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
 
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
 
EDII15 [2012.1] Classificação Externa
EDII15 [2012.1]   Classificação ExternaEDII15 [2012.1]   Classificação Externa
EDII15 [2012.1] Classificação Externa
 
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+
 
EDII08 [2012.1] Arquivos Diretos - Hashing
EDII08 [2012.1]  Arquivos Diretos - HashingEDII08 [2012.1]  Arquivos Diretos - Hashing
EDII08 [2012.1] Arquivos Diretos - Hashing
 
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
 
EDII01 [2012.1] Acordo de Convivência
EDII01 [2012.1]   Acordo de ConvivênciaEDII01 [2012.1]   Acordo de Convivência
EDII01 [2012.1] Acordo de Convivência
 
EDII04 [2012.1] Arquivos Sequenciais [Definição e Desordenado]
EDII04 [2012.1]   Arquivos Sequenciais [Definição e Desordenado]EDII04 [2012.1]   Arquivos Sequenciais [Definição e Desordenado]
EDII04 [2012.1] Arquivos Sequenciais [Definição e Desordenado]
 
EdII07 [2012.1] Arquivos Diretos - Dicionário de Dados
EdII07 [2012.1]   Arquivos Diretos - Dicionário de DadosEdII07 [2012.1]   Arquivos Diretos - Dicionário de Dados
EdII07 [2012.1] Arquivos Diretos - Dicionário de Dados
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"
 

Semelhante a Campeonato do Dia do Amigo

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
 
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivosFlávio Freitas
 
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
 
Arquivos slides aula25
Arquivos slides aula25Arquivos slides aula25
Arquivos slides aula25AlanoG
 
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
 
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
 
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
 
Realizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4LinuxRealizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4LinuxSoftD Abreu
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
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
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Estrutura de Dados Aula revisão (Trabalhando com Arquivos)
Estrutura de Dados Aula revisão (Trabalhando com Arquivos)Estrutura de Dados Aula revisão (Trabalhando com Arquivos)
Estrutura de Dados Aula revisão (Trabalhando com Arquivos)Leinylson Fontinele
 

Semelhante a Campeonato do Dia do Amigo (20)

Msdos vol4
Msdos vol4Msdos vol4
Msdos vol4
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
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
 
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
 
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 Shell
Comandos ShellComandos Shell
Comandos Shell
 
Arquivos slides aula25
Arquivos slides aula25Arquivos slides aula25
Arquivos slides aula25
 
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
 
Uso de arquivos na linguagem Java
Uso de arquivos na linguagem Java Uso de arquivos na linguagem Java
Uso de arquivos na linguagem Java
 
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
 
Curso de Msdos vol4
Curso de Msdos vol4Curso de Msdos vol4
Curso de Msdos vol4
 
Realizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4LinuxRealizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4Linux
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
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
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Estrutura de Dados Aula revisão (Trabalhando com Arquivos)
Estrutura de Dados Aula revisão (Trabalhando com Arquivos)Estrutura de Dados Aula revisão (Trabalhando com Arquivos)
Estrutura de Dados Aula revisão (Trabalhando com Arquivos)
 

Último

Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdfBlendaLima1
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholacleanelima11
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 

Último (20)

Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 

Campeonato do Dia do Amigo

  • 1. Progra ç oImpera a maã tiv Unidade 14 UFS - DComp - Prof. Kenia Kodel 1
  • 2. CAMPEONATO DO DIA DO AMIGO var Placar : array [1..4,1..6] of word; 1 2 3 4 5 6 UFS - DComp - Prof. Kenia Kodel 200 303 228 400 168 226 1 252 314 115 142 172 215 2 154 285 292 236 265 356 3 327 336 346 365 243 401 4 Se o campeonato durar mais de um dia, como preservar o 2 Placar?
  • 3. CAMPEONATO DO DIA DO AMIGO var Placar : array [1..4,1..6] of word; 1 2 3 4 5 6 UFS - DComp - Prof. Kenia Kodel 200 303 228 400 168 226 1 252 314 115 142 172 215 2 154 285 292 236 265 356 3 327 336 346 365 243 401 4 Se o compeonato durar mais de um dia, o Placar deverá ser mantido em memória 3 não volátil.
  • 4.  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 itens de armazenamento de dados estudados até então: 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. 4 UFS - DComp - Prof. Kenia Kodel
  • 5.  Sob o 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 Kodel 5
  • 6. Considerando, por exemplo, a necessidade de cadastrar os pacientes a serem atendidos por um determinado médico. Onde as consultas são marcadas com antecedência de meses. Para cadastro dos dados dos pacientes, um array de registros poderia ser usado? UFS - DComp - Prof. Kenia Kodel 6
  • 7. 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 temos que ArqPacientes é um arquivo composto por registros formados por cinco campos: nome, convênio, fone, (valor) pago e retorno. UFS - DComp - Prof. Kenia Kodel 7
  • 8. 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 Kodel 8
  • 9. 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 Kodel 9
  • 10. 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 Kodel 10
  • 11. 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 é criado e/ou alterado.  Mesmo após a conclusão do referido programa, o arquivo Consultas.dat existirá, preservando os dados neste mantidos. UFS - DComp - Prof. Kenia Kodel 11
  • 12. 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 DaSaudeDr CuraTudoConsultas.dat’ UFS - DComp - Prof. Kenia Kodel 12
  • 13. 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 Kodel 13
  • 14. 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 Kodel 14
  • 15. 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 Kodel 15
  • 16. 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 Kodel 16
  • 17. 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 Kodel 17
  • 18. 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 Kodel 18
  • 19. 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 Kodel 19
  • 20. 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 Kodel 20
  • 21. 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 Kodel 21
  • 22. 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 Kodel 22
  • 23. 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 Kodel 23
  • 24. 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.  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. - Prof. Kenia Kodel UFS - DComp 24
  • 25. 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. 25 UFS - DComp - Prof. Kenia Kodel
  • 26. 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 Kodel 26
  • 27. Implementar programa de cadastro dos medicamentos de uma farmácia. UFS - DComp - Prof. Kenia Kodel 27
  • 28. 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 Kodel 28
  • 29. begin CadastroVazio:=false; assign(ArqFarma,'Farmas.dat'); {$I-} reset(ArqFarma); {$I+} 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 Kodel 29
  • 30. 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 Kodel 30
  • 31. procedure incluir; var R: char; begin 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 Kodel 31
  • 32. 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 Kodel 32
  • 33. procedure consultar; var Remedio: Str20; 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; UFS - DComp - Prof. Kenia Kodel 33
  • 34. 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; Por que continuar a busca mesmo já tendo localizado o elemento desejado? UFS - DComp - Prof. Kenia Kodel 34
  • 35. Implementar procedimento de exclusão (lógica). UFS - DComp - Prof. Kenia Kodel 35
  • 36. procedure incluir; var R: char; begin repeat clrscr; writeln('*** inclusao ***'); justar procedimento writeln; de inclusão de with RegFarma do begin writeln('Nome: '); forma a evitar readln(Nome); writeln('Preco: '); redundância de readln(Preco); dados. 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 Kodel 36
  • 37. Implementar procedimento de alteração (ajuste do estoque). UFS - DComp - Prof. Kenia Kodel 37
  • 38. Analisando a situação problema, que outras alterações (edições) são provavelmente necessárias? UFS - DComp - Prof. Kenia Kodel 38
  • 39. 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 Kodel 39
  • 40. 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 Kodel 40
  • 41. 41 ARQUIVOS COMPLEMENTAR ESTUDOS: UFS - DComp - Prof. Kenia Kodel Fundamentos da Programação de Computadores Ana Fernanda Gomes Ascencio Edilene Aparecida Veneruchi de Campos Capítulo Arquivo 41