You are on page 1of 9

Análise e Desenvolvimento de Sistemas de Informação

UNESC Linguagem Algorítmica


Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Arquivos (File)

Estrutura de dados Heterogênea (RECORD)

Até o capítulo anterior quando necessitamos armazenar grande quantidade de


dados na memória do computador, utilizávamos Arraya (Estruturas de dados homogêneas)
que armazenavam somente, dados do mesmo tipo.

O tipo RECORD nos permitirá, como nos arranjos, armazenar grandes quantidades
de dados em memória, com a diferença de que os dados (campos) utilizados para definir a
estrutura de um RECORD podem ser de vários tipos.

Imaginem que queiramos armazenar os seguintes dados a respeito de uma pessoa:

Nome – String[10]
Idade - integer
Sexo - char
Altura - real

Até o momento a única forma de fazermos isso seria criarmos várias estruturas do
tipo “ARRAY” armazenando individualmente os dados (método trabalhoso e pouco
seguro).
Agora através da estrutura RECORD, poderemos armazenar numa única estrutura
de dados todos os campos desejados, conforme a seguir.
Podemos definir então RECORD como sendo uma coleção de atributos (campos)
compostos de diversos tipos.

Declaração de uma variável Record

A declaração de um record segue a forma convencional de declaração de variáveis


vistas até este ponto, com o diferencial de estarmos informando quais campos estará
compondo o nosso registro.

Exemplo:

Var nome_do_registro: record


nome: string[40];
idade: integer;
sexo: char;
altura: real;
end record;

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Ou ainda:

Type tipo_registro = record


nome: string[40];
idade: integer;
sexo: char;
altura: real;
end record;

Var nome_do_registro: tipo_registro;

Onde temos:

Type Palavra reservada para a declaração de uma estrutura;

Tipo_registro Nome do tipo criado para posterior declaração de uma variável;

Record Palavra reservada que indica o início da declaração dos


atributos (campos) que farão parte do registro.

Nome, idade, sexo Campos que farão parte deste registro, cada um podendo ser de
e altura um determinado tipo de dado;

End Record Finaliza a especificação dos atributos (campos) que fazem parte
do registro;

Var Palavra reservada responsável pela declaração de variáveis;

Nome_do_registro Nome da variável que será declarada com a estrutura


previamente criada;

Tipo_registro É o tipo que foi criado anteriormente à criação da variável, o


qual representa a estrutura registro.

Acessando os campos de um record

Para acessarmos os campos de um registro, devemos escrever o nome da variável


registro, seguido de ponto e o nome do campo.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Exemplo:

Nome_do_registro.nome  ‘Algoritmo’

Faça um algoritmo para ler a variável do tipo registro, os campos são os mencionados
acima, do teclado e em seguida escrever os dados.

Program teste_registro;
{Declaração de uma estrutura chamada Pessoas que é um registro}
Type pessoas = record
Nome: string[40]; {Campo do Registro}
Idade: integer; {Campo do Registro}
Sexo: char; {Campo do Registro}
Altura: real; {Campo do Registro}
End record; {Finaliza a declaração dos campos}
{Declaração da variável que terá a estrutura criada anteriormente}
Var p: pessoas
Begin
{A partir deste ponto estaremos lendo informações para os campos da variável registro e na
seqüência estamos escrevendo em tela o que foi digitado pelo usuário}
Write (‘Nome ............: ‘)
Read (p.nome)
Write (‘Idade ..............: ‘)
Read (p.idade)
Write (‘Sexo ..............: ‘)
Read (p.sexo)
Write (‘Altura.............: ‘)
Read (p.altura)

Write (‘Você digitou: ‘)


Write (p.nome)
Write (p.idade)
Write (p.sexo)
Write (p.altura)
Repeat Until keypressed;
End.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Exercícios:

1) Fazer um Algoritmo para ler os dados de 20 pessoas (Nome, endereço, sexo e altura) e
em seguida mostrar uma lista em ordem alfabética (pelo nome).

2) Fazer um Algoritmo para ler os dados de 20 pessoas ordenar pelo nome, em seguida,
através de pesquisa binária procure um nome lido do teclado e mostre todo o registro
referente ao nome procurado.
OBS: Nome, Endereço, Cidade, Estado.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Files

Embora tenhamos desenvolvido alguns algoritmos interessantes até o momento,


todos eles estão limitados em sua utilização devido a certas características: estrutura de
dados, entrada através do teclado e saída de dados, através do monitor de vídeo (ou
impressora), tudo realizado em memória.

Essa forma de desenvolvimento de programas não deixa de ter sua aplicabilidade,


mas fica restrita quando se pretende acessar dados que haviam sido digitados anteriormente
(perdidos por serem armazenados em memória).

Os Arquivo de dados vem para superar essa fase, armazenando os dados em


dispositivos seguros (discos) que podem ser utilizados rapidamente sem que haja uma
reentrada de dados.

Declaração de um File

Os arquivos a serem utilizados em um algoritmo ou em um programa devem ser


declarados semelhantemente aos outros objetos do programa, conforme a seguir:

Semântica:

Type tipo_arquivo = file of “tipo”

var nome_do_arquivo: tipo_arquivo

Sintáxe:

Type arq = flite of integer;

Var a:arq

Operações com arquivos de dados:

O acesso às informações de um arquivo de dados, segue uma seqüência definida


de operações, a saber:

1) Abertura / Criação de um arquivo de dados


2) Leitura / Escrita de dados em um arquivo
3) Fechamento do arquivo.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Para essas operações passem a ser executadas com sucesso, utilizaremos os


seguintes comandos em Pascal.

1) Ligação do nome lógico com o nome físico

Assign (var_arq, nom_arq) - Estabelece uma relação entre o nome lógico que será utilizado
dentro do algoritmo (var_arq) e o nome físico (em disco) do arquivo (nom_arq);

2) Abertura de Arquivos (rewrite e resset):

Rewrite (Var_arq) - é utilizado para criar um arquivo em disco deixando-o pronto para
leitura e ou gravação. Se o arquivo já existir, ele é apagado e um novo arquivo vazio é
criado.

Resset (Var_arq) - é utilizado para abrir um arquivo já existente em disco, para leitura e ou
gravação. Se o arquivo não existir em disco, ocorrerá um erro de arquivo não existente.

3) Lendo e escrevendo dados em um arquivo (read e write):

read (var_arq, variável) - Lê os dados do arquivo em disco, deixando-os disponíveis na


“variável”. O registro lido no arquivo é indicado por um apontador de posições, sendo que
a variável que receberá as informações deverá ter a mesma estrutura do arquivo.

write (Var_arq, variável) - Escreve os dados da “variável” no arquivo em disco.

4) Fechamento do arquivo (Close)

Close (var_arq) - fecha o arquivo criado em disco.

OBS: Todos os comandos acima que completa o ciclo das operações com arquivo só
e somente só referenciam o nome do arquivo lógico, da mesma forma serão alguns
comando que seguem para a manipulação do arquivo.

5.2.3. Outros comandos para manipulação dos arquivos


1) Seek (var_arq, n) - Posiciona o apontador de posições do arquivo, para acesso direto às
informações de ‘var_arq’ na posição ‘n’ (obs: o número da primeira posição do arquivo
sempre será zero).

2) Filepos (var_arq) - Retorna a posição corrente do apontador no arquivo.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

3) Filesize (var_arq) - retorna o número da última posição vaga do arquivo.

4) EOF (var_arq) - “Fim de Arquivo” - é uma função lógica que retorna Verdadeiro se o
apontador esta posicionado no final do arquivo em disco.

Exemplo:

Faça um algoritmo, gerar um arquivo em disco, ler números, e em seguida gravar estes
números em um arquivo em disco.

Pogram arquivo;
{Declara a variável lógica do arquivo}
Var arq : file of integer;
{Declara a variável que irá ser responsável por ler as informações e gera-las em disco}
n : integer;
Begin
{Faz a ligação entre o nome lógico “arq” com o nome físico em disco “números.arq”)
Assign (arq, ‘c:numeros.arq’);
{Cria o arquivo em disco}
Rewrite (arq);
{Exibe mensagem para o usuário}
Write (‘Digite um número para gravar em disco: ‘);
{Lê o primeiro número que o usuário quer gravar em disco}
Read(n);
{Condição para o usuário parar de entrar com informações}
While (n <> -1) do
Begin
{Grava em disco as informações representadas pela variável n}
Write (arq, n);
{Exibe mensagem para o usuário}
Write (‘Digite um número para gravar em disco: ‘);
{Lê outro valor para gerar em disco}
Read (n);
End;
{Executa o fechamento do arquivo}
Close (arq);
End.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

Exercícios

1) Faça um pgm em pascal para gerar em disco o quadrado dos números de 0 a 100 e depois
permitir a consulta dos dados através de um número lido do teclado.

2) Dado a seguinte estrutura de um record:


Nome - cadeia
Idade - numérico
Sexo - literal
Altura – numérico

a) Faça um programa para entrar com os registros em um arquivo de dados.


b) Faça um programa que liste todos os registros gravados em disco na tela.
c) Faça um programa que permita a pesquisa dos dados através de um nome lido do
teclado
d) Transformar cada um dos itens anteriores em subprogramas e fazer um algoritmo
principal para selecionar a opção desejada.

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br


Análise e Desenvolvimento de Sistemas de Informação
UNESC Linguagem Algorítmica
Faculdades Integradas de Cacoal
Mantidas pela Associação Educacional de Cacoal

6. Bibliografia:

Niklaus Wirth – Programação Sistemática em Pascal - Rio de Janeiro – Campus – 1982

Guimarães/Lages – Algoritmos e Estrutura de Dados - Rio de Janeiro – LTC – 1985

Francis Sheid – Computadores e Programação - São Paulo – MacGraw-Hil – 1984

Harry Farrer/Cristiano Gonçalves Becher/Eduardo Chaves Faria/Frederico Ferreira


Campos, Filho Helton Fábio de Matos/Marcos Augusto dos Santos/Miriam Lourenço
Lourenço Maia – Pascal Estruturado - Rio de Janeiro – Guanabara Koogan - 1995

Harry Farrer/Cristiano Gonçalves Becher/Eduardo Chaves Faria/Frederico Ferreira


Campos, Filho Helton Fábio de Matos/Marcos Augusto dos Santos/Miriam Lourenço
Lourenço Maia – Algoritmo Estruturado - Rio de Janeiro – Guanabara Koogan - 1995

Douglas Hergert – Dominando o Turbo Pascal - Rio de Janeiro – Editora Ciência


Moderna Ltda – 1989

Prof.MSc.jair de Oliveira Júnior – Sistemas de Informação – jair@unescnet.br

You might also like