Buscar

Aula_011 - Tipos Estruturados IV

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Professores:
Dante Corbucci Filho
Alexandre Plastino
Conteúdo:
- Tipos Estruturados (4a- Parte)
 - Arquivos Tipados (File)
 
Aula 11
2
Arquivo Tipado (File of T_Elemento)
 Em Pascal, há basicamente dois tipos de arquivo:
arquivo texto (text) e arquivo tipado (file of TElemento).
 Um arquivo texto é um conjunto de caracteres 
armazenados em disco sob um mesmo nome.
 Um arquivo tipado é uma seqüência de elementos 
de um mesmo tipo, armazenada em disco sob um mesmo 
nome.
 O conteúdo deste tipo de arquivo, ao contrário do 
tipo Text, não pode ser visualizado por editores de textos. 
3
Arquivo Tipado (File of T_Elemento)
 O tipo File of T_Elemento define um arquivo que 
contém um conjunto de elementos do mesmo tipo 
T_Elemento que guardam entre si uma relação posicional, 
ou seja, a ordem dos elementos na seqüência é importante.
 Os elementos de um arquivo tipado são também
chamados de registros do arquivo.
 
 A cada instante, apenas um elemento/registro do 
arquivo pode ser acessado.
4
Arquivo Tipado (File of T_Elemento)
 Os elementos de um arquivo tipado podem ser 
acessados seqüencialmente, um a um, na ordem em 
que estão armazenados, ou diretamente, informando-se 
a posição do elemento dentro do arquivo.
 O tamanho ou comprimento de um arquivo tipado 
é dado pelo número de elementos (registros) que o 
compõem. O arquivo vazio tem comprimento zero.
5
Variável do tipo File of T_Elemento
 Para utilizar (ler e/ou gravar) um arquivo tipado em 
Pascal, é necessário declarar uma variável que represente 
este arquivo.
Program LeDados (input{teclado}, output{vídeo}, Dados{e});
Type
 T_Elemento = . . .;
 T_Arq = file of T_Elemento;
Var
 Dados : T_Arq;
Begin
 . . . 
End. 
Declaração da variável 
Dados que representa o 
arquivo cujos elementos são 
do tipo T_Elemento.
6
Exemplos
A) Um arquivo com números inteiros:
Type
 T_Arq_Inteiros = file of integer;
Var
 Dados : T_Arq_Inteiros;
B) Um arquivo contendo um cadastro de nomes:
Type
 T_Arq_Nomes = file of string[20];
Var
 Cadastro : T_Arq_Nomes;
10
23456
568
0
11
98
<eof>
 [8 b
Conteúdo deste arquivo 
tipado quando aberto 
pelo Kate
João Luiz
Sérgio Tchao
Carlos Augusto
Ana Julia
Maria Augusta
Antônio Jorge
<eof>
7
Exemplos
C) Um arquivo contendo um cadastro de funcionários:
Const
 MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real;
 end;
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
João Luiz 101 1234.56
Sérgio Tchao 102 1654.32
Carlos Augusto 103 789.00
Ana Julia 104 2345.67
Maria Augusta 105 899.91
Antônio Jorge 106 300.00
<eof>
8
Operações Básicas
As operações básicas sobre arquivos são:
 
 - Declaração do tipo do arquivo e da variável
 que o representa,
 - Associação da variável que representa o arquivo a
 um arquivo em disco,
 - Abertura do arquivo,
 - Leitura ou gravação de registros no arquivo,
 - Fechamento do arquivo.
9
Declarações
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
Const MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20]; 
 Codigo : Dominio;
 Salario : real;
 end;
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
Begin
. . . 
End.
10
Assign
 O comando Assign permite que um arquivo tipado 
em disco seja associado a uma variável.
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
 . . .
Var
 Cadastro : Arquivo;
Begin
 assign (Cadastro , ’/mnt/floppy/dirdados/cad’);
 . . . 
End. Variável que
representa o 
arquivo.
Localização
completa do
arquivo.
Nome interno 
do arquivo.
Nome externo 
do arquivo.
A partir deste 
ponto, a variável 
Cadastro se 
refere ao arquivo 
cad armazenado 
no disquete, no 
diretório dirdados.
11
Assign
 No comando Assign a identificação do arquivo 
(texto ou tipado) em disco pode ser feita por uma variável 
do tipo string. 
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
 . . .
Var
 Cadastro : Arquivo;
 NomeArquivo: string;
Begin
 write (output, ’Entre com o nome do arquivo de dados: ’);
 readln (input, NomeArquivo);
 assign (Cadastro , NomeArquivo);
 . . . 
End. 
12
Abrindo um arquivo tipado
 De forma análoga a um arquivo texto, antes de 
ser utilizado (como entrada ou saída), um arquivo tipado 
também precisa ser aberto.
 No entanto, um arquivo tipado pode ser aberto 
tanto para leitura quanto para gravação. 
 O comando Reset abre um arquivo tipado para 
leitura ou gravação, sem destruir seu conteúdo.
 O comando Rewrite abre um arquivo tipado para 
gravação, destruindo seu conteúdo prévio. Além disso, 
caso o arquivo não existisse, cria-o no diretório.
13
Reset
 O comando Reset permite que um arquivo tipado 
seja aberto para leitura e/ou escrita. 
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
 . . .
Var
 Cadastro : Arquivo;
Begin
 assign (Cadastro , ’/mnt/floppy/dirdados/cad’);
 reset (Cadastro);
 . . . 
End. Nome interno
do arquivo.
A partir deste ponto, 
o arquivo Cadastro 
pode ser lido.
O primeiro registro a 
ser lido será o 
primeiro registro do 
arquivo (onde estará 
inicialmente a 
"cabeça de leitura"). 
14
Rewrite
 O comando Rewrite permite que um arquivo tipado 
vazio seja aberto (preparado) para escrita. Se o arquivo 
não estiver vazio, seu conteúdo corrente será perdido.
Program EscreveDados (input{teclado}, output{vídeo}, Resultado{s});
. . .
Var
 Resultado : Arquivo;
Begin
 assign (Resultado, ’/mnt/floppy/resposta.txt’);
 rewrite (Resultado);
 . . . 
End. Nome interno
do arquivo.
A partir deste ponto, 
dados podem ser 
gravados no arquivo.
O primeiro registro 
será gravado na 
primeira posição do 
arquivo.
15
Close
 O comando Close permite que um arquivo de 
entrada ou saída seja fechado. Sempre que não for mais 
utilizado, um arquivo deve ser fechado.
Program EscreveDados (input{teclado}, output{vídeo}, Resultado{s});
. . .
Var
 Resultado : Arquivo;
 . . .
Begin
 assign (Resultado, ’/mnt/floppy/resposta.txt’);
 rewrite (Resultado);
 . . . 
 close (Resultado);
End. 
Nome interno do arquivo.
Este comando 
garante que todos 
os dados gravados 
no arquivo estarão 
efetivamente em 
disco. A partir deste 
ponto, o arquivo 
Resultado não 
poderá mais ser 
utilizado.
16
Read
 O comando read lê um registro do arquivo tipado 
e o armazena em uma variável do programa. 
 Esta variável deve ser declarada com o mesmo 
tipo do arquivo.
 Ao ser aberto para leitura (comando reset), a 
cabeça de leitura (CL) é posicionada no primeiro registro 
do arquivo.
 O comando read lê o registro apontado pela cabeça 
de leitura e avança este ponteiro para o próximo registro. 
17
Read (declaração de variável)
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
Const MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = recordNome : string [20]; 
 Codigo : Dominio;
 Salario : real;
 end;
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 . . . 
End.
A variável Funcionario e os 
elementos do arquivo Cadastro 
são do tipo Registro.
18
Read 
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
. . . 
Type
. . .
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 assign(Cadastro, ’/mnt/floppy/cadastro.txt’);
 reset(Cadastro);
 read(Cadastro, Funcionario);
. . . 
End. Nome interno 
do arquivo.
Variável que receberá 
conteúdo do registro lido.
João Luiz 101 1234.56
Sérgio Tchao 102 1654.32
Carlos Augusto 103 789.00
Ana Julia 104 2345.67
Maria Augusta 105 899.91
Antônio Jorge 106 300.00
<eof>
19
Read 
Este comando abre o 
arquivo Cadastro para 
leitura e posiciona a cabeça 
de leitura no primeiro 
registro do arquivo.
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
. . . 
Type
. . .
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 assign (Cadastro, ’/mnt/floppy/cadastro.txt’);
 reset (Cadastro);
 read (Cadastro, Funcionario);
. . . 
End.
João Luiz 101 1234.56
Sérgio Tchao 102 1654.32
Carlos Augusto 103 789.00
Ana Julia 104 2345.67
Maria Augusta 105 899.91
Antônio Jorge 106 300.00
<eof>
CL
20
Read 
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
. . . 
Type
. . .
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 assign (Cadastro, ’/mnt/floppy/cadastro.txt’);
 reset (Cadastro);
 read (Cadastro, Funcionario);
 . . . 
End.
João Luiz 101 1234.56
Sérgio Tchao 102 1654.32
Carlos Augusto 103 789.00
Ana Julia 104 2345.67
Maria Augusta 105 899.91
Antônio Jorge 106 300.00
<eof>
CL
Funcionario.Nome : João Luiz
Funcionario.Codigo : 101
Funcionario.Salario: 1234.56
Este comando transfere o 
conteúdo do primeiro 
registro para os campos 
do registro Funcionario. 
Além disso avança a CL
para o próximo registro.
21
Read 
Program LeCadastro (input{teclado}, output{vídeo}, Cadastro{e});
. . . 
Type
. . .
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 assign (Cadastro, ’/mnt/floppy/cadastro.txt’);
 reset (Cadastro);
 read (Cadastro, Funcionario);
 read (Cadastro, Funcionario);
. . . 
End.
João Luiz 101 1234.56
Sérgio Tchao 102 1654.32
Carlos Augusto 103 789.00
Ana Julia 104 2345.67
Maria Augusta 105 899.91
Antônio Jorge 106 300.00
<eof> 
CL
Funcionario.Nome : Sérgio Tchao
Funcionario.Codigo : 102
Funcionario.Salario: 1654.32
22
Write
 O comando write escreve o conteúdo de uma 
variável, constante ou expressão no arquivo.
 Esta variável, constante ou expressão deve ter 
o mesmo tipo dos elementos do arquivo.
 Ao ser aberto para escrita (comando rewrite), 
o arquivo está vazio e a cabeça de gravação (CG) é 
inicializada na primeira posição do arquivo.
 O comando write grava o valor da variável na 
posição apontada pela cabeça de gravação e avança 
este ponteiro uma posição. 
23
Write
Program CriaCadastro (input{teclado}, output{vídeo}, Cadastro{s});
. . . 
Type
. . .
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 assign(Cadastro, ’/mnt/floppy/cadastro.txt’);
 rewrite(Cadastro);
. . . 
End.
CG
Este comando abre o arquivo 
Cadastro para gravação e 
posiciona a cabeça de 
gravação na primeira posição 
do arquivo.
24
Write
Program CriaCadastro (input{teclado}, output{vídeo}, Cadastro{s});
. . . 
Type
. . .
 Arquivo = file of Registro;
Var
 Cadastro : Arquivo;
 Funcionario : Registro; 
Begin
 assign(Cadastro, ’/mnt/floppy/cadastro.txt’);
 rewrite(Cadastro);
 Funcionario.Nome:=’João Luiz’;
 Funcionario.Codigo:=101;
 Funcionario.Salario:=1234.56;
 write (Cadastro, Funcionario);
. . . 
End.
Este comando grava o 
conteúdo da variável 
Funcionario no arquivo, na 
posição apontada por CG,
e avança a CG uma posição.
João Luiz 101 1234.56
CG
25
A Função EOF ("End Of File")
 A função EOF(NomeArquivo), onde
NomeArquivo é o nome interno de um arquivo
tipado, retorna true se o fim do arquivo tiver sido
atingido ou se o arquivo estiver vazio, em caso
contrário, retorna false.
26
A Função FileSize
 A função FileSize(NomeArquivo), onde
NomeArquivo é o nome interno de um arquivo
tipado, retorna um inteiro contendo o número
total de registros deste arquivo.
27
Este programa lista os nomes de todos os funcionários 
armazenados no arquivo que contém o cadastro da empresa.
Program ListaNomes (input{teclado}, output{vídeo}, Cadastro{e});
Uses crt;
Const 
 MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real
 end;
 T_Arq_Tipado = file of Registro;
Var
 Cadastro : T_Arq_Tipado;
Begin 
End. 
28
Program ListaNomes (input{teclado}, output{vídeo}, Cadastro{e});
Uses crt;
Const 
 MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real
 end;
 T_Arq_Tipado = file of Registro;
Var
 Cadastro : T_Arq_Tipado;
Begin
 assign (Cadastro, ’cadastro’);
 LeListaNomes(Cadastro);
End. 
29
Program ListaNomes (input{teclado}, output{vídeo}, Cadastro{e});
Uses crt;
Const 
 MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real
 end;
 T_Arq_Tipado = file of Registro;
Procedure LeListaNomes(Var ArqCadastro{e}: T_Arq_Tipado ); 
 begin 
 end;
Var
 Cadastro : T_Arq_Tipado ;
Begin
 assign (Cadastro, ’cadastro’);
 LeListaNomes(Cadastro);
End. 
30
Program ListaNomes (input{teclado}, output{vídeo}, Cadastro{e});
. . .
Procedure LeListaNomes(Var ArqCadastro{e}: T_Arq_Tipado );
 var Funcionario : Registro;
 begin 
 clrscr; 
 reset(ArqCadastro);
 while not eof(ArqCadastro) do
 begin 
 read(ArqCadastro, Funcionario);
 writeln(output, Funcionario.Nome);
 end;
 close(ArqCadastro);
 end;
 . . .
Begin 
 . . .
End. 
31
Este programa grava em um arquivo 
os dados de uma agenda digitados no teclado.
Program GravaAgenda (input{teclado}, output{vídeo}, Agenda{s});
Type
 Registro = record
 Nome : string [20];
 Telefone : string [8];
 Endereco : string [50];
 end;
 T_Arq_Tipado = file of Registro;
Var
 Agenda : T_Arq_Tipado;
Begin 
End. 
32
Program GravaAgenda (input{teclado}, output{vídeo}, Agenda{s});
TypeRegistro = record
 Nome : string [20];
 Telefone : string [8];
 Endereco : string [50];
 end;
 T_Arq_Tipado = file of Registro;
Var
 Agenda :T_Arq_Tipado;
Begin 
 assign(Agenda, ’ArqAgenda’);
 LeDadosGravaAgenda(Agenda);
End. 
33
Program GravaAgenda (input{teclado}, output{vídeo}, Agenda{s});
Type
 Registro = record
 Nome : string [20];
 Telefone : string [8];
 Endereco : string [50];
 end;
 T_Arq_Tipado = file of Registro;
Procedure LeDadosGravaAgenda (Var Arq{s}: T_Arq_Tipado); 
 begin 
 end;
Var
 Agenda : T_Arq_Tipado;
Begin 
 assign(Agenda, ’ArqAgenda’);
 LeDadosGravaAgenda(Agenda);
End. 
34
Procedure LeDadosGravaAgenda (Var Arq{s}:T_Arq_Tipado); 
 var Entrada : Registro;
 begin 
 rewrite (Arq);
 write(output, ’Primeiro Nome: ’);
 readln (input, Entrada.Nome);
 while Entrada.Nome <> ’fim’ do
 begin 
 write(output, ’Telefone e Endereço do ’, Entrada.Nome);
 readln(input, Entrada.Telefone, Entrada.Endereco);
 write(Arq, Entrada);
 write(output, ’Próximo Nome: ’);
 readln(input, Entrada.Nome)
 end;
 close (Arq);
 end;
35
Acesso Seqüencial e Acesso Direto
 O tipo de acesso utilizado até o momento é
chamado seqüencial, no qual, para um registro ser 
lido, todos os registros anteriores, desde o primeiro 
registro do arquivo, têm que ser lidos.
 No acesso direto, também chamado aleatório
ou randômico, os registros podem ser lidos ou 
escritos diretamente, sem ter que passar por todos
os registros anteriores.
 Para realizar o acesso direto a um arquivo, 
utiliza-se o comando seek para posicionar a cabeça 
de leitura/escrita na posição desejada.
36
Seek
 O comando seek (NomeArq, Pos) posiciona 
a cabeça de leitura/escrita na posição Pos do 
arquivo NomeArq. 
 A enumeração dos registros começa de zero.
Portanto, seek(NomeArq,N) posiciona a cabeça de 
leitura/escrita no registro de número N, que na 
realidade é o (N+1)-ésimo registro do arquivo.
 Para que o comando seek possa ser 
utilizado, o arquivo deve ser aberto com o comando 
reset, podendo ser utilizado para leitura e/ou 
gravação.
37
 Este programa imprime o nome do funcionário que 
possui código informado pelo teclado e duplica seu salário no 
arquivo. Considera-se que os códigos variam de 1 até N, onde 
N é o número total de funcionários, e que os registros estão 
ordenados pelo código.
Program Duplica (input{teclado}, output{vídeo}, Cadastro{e/s});
Const MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real
 end;
 T_Dados = file of Registro;
Var
 Cadastro : T_Dados;
Begin 
End. 
38
Program Duplica(input{teclado}, output{vídeo}, Cadastro{e/s});
Const 
 MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real
 end;
 T_Dados = file of Registro;
Var
 Cadastro: T_Dados;
Begin 
 assign (Cadastro, ’cadastro’);
 AtualizaSalario(Cadastro);
End. 
39
Program Duplica (input{teclado}, output{vídeo}, Cadastro{e/s});
Const 
 MaxFunc = 1000;
Type
 Dominio = 1 . . MaxFunc;
 Registro = record
 Nome : string [20];
 Codigo : Dominio;
 Salario : real
 end;
 T_Dados = file of Registro 
Procedure AtualizaSalario(Var ArqCadastro{e/s}: T_Dados); 
 begin 
 end;
Var
 Cadastro : T_Dados;
Begin 
 assign (Cadastro, ’cadastro’);
 AtualizaSalario(Cadastro);
End. 
40
Procedure AtualizaSalario(Var ArqCadastro{e/s}: T_Dados); 
 var Funcionario : Registro;
 cod : Dominio;
 begin 
 reset(ArqCadastro);
 write(output, ’Entre com o código do funcionário: ’);
 readln(input, cod);
 if (cod > 0) and (cod<=FileSize(ArqCadastro)) then
 begin
 seek(ArqCadastro, cod-1);
 read(ArqCadastro, Funcionario);
 writeln(output, Funcionario.Nome);
 Funcionario.Salario:= Funcionario.Salario * 2;
 seek(ArqCadastro, cod-1);
 write(ArqCadastro, Funcionario)
 end;
 close(ArqCadastro);
 end;
41
 O comando append não pode ser utilizado em um 
arquivo tipado. Porém, o efeito deste comando pode ser 
obtido utilizando-se o comando seek e a função FileSize 
da seguinte maneira. 
Append
Program Adicionando (Arq{s});
 Var Arq: file of integer;
Begin 
 assign(Arq, ’numeros’);
 reset(Arq);
 seek(Arq, FileSize(Arq));
 write(Arq, 999);
 close(Arq);
End. 
42
 A função FilePos(NomeArquivo), onde
NomeArquivo é o nome interno de um arquivo
tipado, retorna o número do registro sendo 
referenciado pela cabeça de leitura/gravação. 
 
 Portanto, o retorno desta função é um 
número no intervalo:
 0, 1, 2, ..., FileSize(NomeArquivo).
A Função FilePos
43
 Este programa escreve todas as posições de ocorrência 
de um dado número real em um arquivo de números reais.
Program Manipula(input{teclado}, output{vídeo}, AR{e});
 Var AR: file of real;
 Procurado, Atual: real;
 Begin
 write(output, ’Diga o nome do arquivo: ’);
 readln(input, nome);
 Assign(AR, nome);
 Reset(AR);
 write(output, ’Procurar por: ’);
 readln(input, Procurado);
 while not eof(AR) do
 begin
 read(AR, Atual);
 if Atual=Procurado then writeln(output, ’Posição: FilePos(AR)-1);
 end;
 Close(AR);
 End.
44
 A operação ERASE(NomeArquivo), onde
NomeArquivo é o nome interno de um arquivo, 
apaga o arquivo externo associado a NomeArquivo 
(via assign).
 
 Observação: o arquivo deve estar fechado.
O Procedimento ERASE
45
Utilizando o ERASE
Program Cria_e_destroi(input{teclado}, output{vídeo}, AR{s});
Var 
 AR: file of real;
Begin
 write(output, ’Diga o nome do arquivo: ’);
 readln(input, nome);
 Assign(AR, nome);
 Rewrite(AR); {Cria Nome no seu diretório}
 write(AR, 13.31); {insere o primeiro registro em AR}
 write(AR, 3000.17); {insere o segundo registro em AR}
 Close(AR);
 Erase(AR); {Apaga o arquivo Nome do diretório}
 End.
46
Professores:
Dante Corbucci Filho
Alexandre Plastino
Aula 11
Conteúdo:
- Tipos Estruturados (4a- Parte)
 - Arquivos Tipados (File)

Outros materiais