Arquivos e Registros

25
__Registros__ Estrutrura de Dados Heterogêneas Janeiro/2014

description

gjjjjj

Transcript of Arquivos e Registros

Page 1: Arquivos e Registros

__Registros__Estrutrura de Dados Heterogêneas

Janeiro/2014

Page 2: Arquivos e Registros

Introdução

• Conhecer uma estrutura de Dados Heterogênea, composição e aplicação.

ANTES: 2 tipos de dados ≠

2 matrizes ≠

2

…AGORA : - vários tipos de dados

- mesma estrutura

Page 3: Arquivos e Registros

Registros

• Definição

• Registro Simples;

• Registro com Matrizes;

• Múltiplos Registros;

• Aplicação

3ICC

Page 4: Arquivos e Registros

Flashback – Exemplo: ED Homogênea

4ICC

Carlos Flávia Pedro Joana Lucia

ICC PSC II Fisica II Fis Exp I Cálc III

7,50 8,00 7,30 8,25 7,00

Estrutura de dados HOMOGÊNEA.

Page 5: Arquivos e Registros

Definição – Exemplo: ED Heterogênea

Consiste em trabalhar com vários dados de tipos diferentes (os campos) em uma mesma estrutura.

5ICC

Nome Carlos

Disciplina ICC

Nota1 7,50

Nota 2 8,25

Estrutura de dados HETEROGÊNEA.

Page 6: Arquivos e Registros

1. Registros Simples

6ICC

Os tipos são declarados antes da definições dasvariáveis:.

type <identificador> = record

campo 1: tipo;

campo2:tipo;

...

campo(n):tipo;

end;

Var

<variável>:identificador

type CADASTRO = record

NOME:string;

NOTA1:real;

NOTA2:real

NOTA3:real

NOTA4:real;

end;

Var

ALUNO:CADASTRO

A entrada/saída de dados é feita com o nome da variável e de

seu campo correspondente separado por pontos. Ex: ALUNO.NOTA3

Page 7: Arquivos e Registros

Exemplo 1:

Registros Simples

7ICC

Program REGISTRO_SIMPLES;

type CAD_ALUNO=record

NOME:string;

NOTA1:real;

NOTA2:real;

NOTA3:real;

NOTA4:real;

end;

var

ALUNO:CAD_ALUNO;

begin {entrada de dados}

writeln('Cadastro de Alunos');

write('informe o nome......:');readln(ALUNO.NOME);

write('informe a 1a. Nota..:');readln(ALUNO.NOTA1);

write('informe a 2a. Nota..:');readln(ALUNO.NOTA2);

write('informe a 3a. Nota..:');readln(ALUNO.NOTA3);

write('informe a 4a. Nota..:');readln(ALUNO.NOTA4);

writeln; {saída de dados}

writeln('----------------------------');

write('nome......:');writeln(ALUNO.NOME);

write('1a. Nota..:');writeln(ALUNO.NOTA1);

write('2a. Nota..:');writeln(ALUNO.NOTA2);

write('3a. Nota..:');writeln(ALUNO.NOTA3);

write('4a. Nota..:');writeln(ALUNO.NOTA4);

writeln('----------------------------');

readkey;

end.

Nome da variável do tipo registro

Nome do campo correspondente

Page 8: Arquivos e Registros

2. Registros com Matrizes

8ICC

Definimos um dos campos como uma Matriz

Vetor (unidimensional ) para guardar um

mesmo tipo de dado:

Nome Carlos

Disciplina ICC

Notas

7,50

8,25

9,00

Estrutura de dados HETEROGÊNEA.

Page 9: Arquivos e Registros

Exemplo 2:

Registros com Matrizes

Program REGISTRO_MATRIZ;

type CADASTRO = record

NOME:string;

NOTA:array[1..4] of real; {campo matriz}

end;

var

ALUNO:CADASTRO;

i: integer; {contador}

begin {entrada de dados}

writeln('Cadastro de Alunos');

write('informe o nome......:');

readln(ALUNO.NOME);

for i:=1 to 4 do

begin

write('informe a ');write(i:2);write('a. nota: ');

readln(ALUNO.NOTA[i]);

end;

writeln;

{saída de dados}

writeln('----------------------------');

write('nome......:');

writeln(ALUNO.NOME);

9ICC

for i:=1 to 4 do

begin

write(i:2);write('a. nota: ');

writeln(ALUNO.NOTA[i]);

end;

writeln('----------------------------');

readkey;

end.

Page 10: Arquivos e Registros

Exemplo 3:

Múltiplos Registros

10

Program CLASSE;

type CADASTRO = record

NOME : string;

NOTA : array[1..4] of real;

end;

var

ALUNO : array [1..7] of CADASTRO; {conjunto de 7 registros}

i, c : integer;

begin {entrada de dados}

writeln('Cadastro de Alunos'); writeln;

for c:=1 to 7 do

begin

write('informe o nome......:');

readln(ALUNO[c].NOME);

for i:=1 to 4 do

begin

write('informe a ');write(i:2);write('a. nota: ');

readln(ALUNO[c].NOTA[i]);

end; writeln;

end;

begin {entrada de dados}

writeln('Cadastro de Alunos'); writeln;

for c:=1 to 7 do

begin

write('informe o nome......:');

readln(ALUNO[c].NOME);

for i:=1 to 4 do

begin

write('informe a ');write(i:2);write('a. nota: ');

readln(ALUNO[c].NOTA[i]);

end; writeln;

end;

Page 11: Arquivos e Registros

Aplicação

11

Com as técnicas de programação aprendidas, somado a

utilização de dados heterogêneos, passa-se a ter uma

mobilidade de manipular um grande quantidade de informações.

Por exemplo: Elaborar um programa que Cadastre certo

número de alunos, contendo 04 notas de avaliação e no final

forneça o nome de cada aluno em ordem decrescente de

médias alcançadas no período

Page 12: Arquivos e Registros

Aplicação

12ICC

Program APLICACAO;

type

CADASTRO = record

NOME:string;

SEXO:string;

NOTA:array[1..4] of real;

MEDIA:real;

end;

var

ALUNO : array [1..7] of CADASTRO;

i, c, maior, menor :integer;

X:CADASTRO;

soma , aux : real;

begin {entrada de dados}

writeln('Cadastro de Alunos');

writeln;

for c:=1 to 7 do

begin

write('informe o nome......:');readln(ALUNO[c].NOME);

write('informe o sexo......:');readln(ALUNO[c].SEXO);

soma:=0;

for i:=1 to 4 do

begin

write('informe a ');write(i:2);write('a. nota: ');

readln(ALUNO[c].NOTA[i]);

aux:=1*ALUNO[c].NOTA[i];

soma:=soma+aux;

end;

ALUNO[c].MEDIA:=SOMA/4;

writeln;

end;

for maior:=1 to 6 do {ordenação dos registros

pela média}

for menor:= maior+1 to 7 do

if

ALUNO[maior].MEDIA<ALUNO[menor].MEDIA

then

begin

X:=ALUNO[maior];

ALUNO[maior]:=ALUNO[menor];

ALUNO[menor]:=X;

end;

writeln('----------------------------'); {saída de

dados}

for c:=1 to 7 do

begin

write('nome do

aluno:');writeln(ALUNO[c].NOME);

write('sexo do

aluno:');writeln(ALUNO[c].SEXO);

write('média do

aluno:');writeln(ALUNO[c].MEDIA:2);

writeln; delay(500);

end;

writeln('----------------------------');

readkey;

end.

Page 13: Arquivos e Registros

__Arquivos__

Janeiro/2014

Page 14: Arquivos e Registros

Introdução

14

BASE : - matrizes

- registros

Definição:

É uma tabela de informações gravada em um meio físico

(disquetes, winchesters, fitas magnéticas, entre outros),

enquanto que as matrizes são tabelas manipuladas na

memória RAM

Page 15: Arquivos e Registros

Diferença

• Matrizes: índice de controle

• Arquivos: um ponteiro de registro

PRINCIPAL VANTAGEM:

1) As informações armazenadas podem ser utilizadas a qualquer momento;

2) Armazena um número maior de registros do que em uma tabela de memória

(Limitação: tamanho do meio físico utilizado para a sua gravação);

15ICC

Page 16: Arquivos e Registros

A manipulação de um arquivo usa o tipo file, que é uma estrutura formada por elementos do mesmo tipo, dispostos de forma sequencial, tendo como objetivo fazer a comunicação entre a memória principal (RAM) e a memória secundária (meios magnéticos).

SINTAXE:

type

<arquivo> = [text] [ file [ of <tipo>]];

var

<variável> : <arquivos>;

ou

<variável> = [text] [ file [ of <tipo>]];

Definição de Arquivo

16ICC

o nome de um arquivo com tipo

definido

o tipo de um arquivo (text, string, real,

record, …)

a variável que será usada para

representar o arquivo

Page 17: Arquivos e Registros

Classificação dos Arquivos

- Arquivos de texto;

- Arquivos de tipo definido;

- Arquivos sem tipo definido

Obs: a exemplo dos tipos de dados…

17ICC

Page 18: Arquivos e Registros

Operações Executadas em um Arquivo

COMUNS:

Abertura, leitura ou escrita e fechamento

18ICC

Page 19: Arquivos e Registros

Instruções Apropriadas

19ICC

Page 20: Arquivos e Registros

Criação de um Arquivo – Exemplo 1

program CRIA_ARQUIVO_TEXTO;varARQUIVO_TXT : text; //define para a variável indicada o tipo de arquivo texto

beginassign(ARQUIVO_TXT, 'ARQTXT.XXX');rewrite(ARQUIVO_TXT);close(ARQUIVO_TXT);

end.

Obs: antes de iniciar qualquer operação com arquivo, é necessário criá-lo.

20ICC

Arquivo a ser manipulado

Page 21: Arquivos e Registros

Gravação de Informações em um Arquivo– Exemplo 2

program GRAVA_ARQUIVO_TEXTO;varARQUIVO_TXT : text;MENSAGEM : string[50];

beginassign(ARQUIVO_TXT, 'ARQTXT.XXX');append(ARQUIVO_TXT);//abre o arquivo p inclusao de um dado

read(MENSAGEM);write(ARQUIVO_TXT, MENSAGEM);close(ARQUIVO_TXT);

end.Obs: depois de criar o arquivo, ele pode ser utilizado para a gravação das informações que vai

guardar.21ICC

Escreve dado no arquivo

Page 22: Arquivos e Registros

Leitura das Informações de um Arquivo –Exemplo 3

program LE_ARQUIVO_TEXTO;varARQUIVO_TXT : text;MENSAGEM : string[50];

beginassign(ARQUIVO_TXT, 'ARQTXT.XXX');reset(ARQUIVO_TXT);read(ARQUIVO_TXT, MENSAGEM);write(MENSAGEM);close(ARQUIVO_TXT);

end.Obs: o programa lê um arquivo texto e mostra no vídeo a informação armazenada com o

programa anterior.22ICC

Page 23: Arquivos e Registros

Exemplo

O programa de agenda proposto deve solicitar apenas o nome e o telefone de uma pessoa.

O programa deve ter um menu com 4 opções:

- Criar arquivo;- Cadastrar registro;- Exibir registros;- Finalizar o programa.

23ICC

Page 24: Arquivos e Registros

Exemplo

program AGENDATXT;usesCrt;

varARQTXT : text;NOME : string[40];TELEFONE : string[8];TECLA : char;OPCAO : char;

{*** Rotinas de Visualizacao ***}procedure CENTER(MENSAGEM : string);varTAMANHO : integer;

beginTAMANHO := 40 + length(MENSAGEM) div 2;writeln(MENSAGEM:TAMANHO);

end;

procedure WRITEXY(X, Y : byte; MENSAGEM : string);begingotoxy(X, Y); write(MENSAGEM);

end;

procedure LINE;varI : byte;

beginfor I := 1 to 80 dowrite(#205);

end;24ICC

{*** Rotinas de Manipulacao de Arquivos ***}

procedure ARQUIVO;

begin

clrscr;

line;

center('Criacao de Arquivo');

line;

rewrite(ARQTXT); //cria um arquivo para uso…

gotoxy( 1,12); center('Arquivo foi criado');

writexy(25,24,'Tecle algo para voltar ao menu');

TECLA := readkey;

close(ARQTXT);

end;

procedure CADASTRA;

begin

clrscr;

line;

center('Cadastramento de Registro');

line;

append(ARQTXT/);//abre o arquivo para inclusao de um dado

writexy(10, 5, 'Entre com o Nome ..........: '); readln(NOME);

writexy(10, 6, 'Entre com o Telefone ......: '); readln(TELEFONE);

writeln(ARQTXT, NOME);

writeln(ARQTXT, TELEFONE);

writexy(25,24,'Tecle algo para voltar ao menu');

TECLA := readkey;

close(ARQTXT);//fecha arquivo em uso dentro de um programa

End.

Page 25: Arquivos e Registros

Exemplo

procedure EXIBIR;varLINHA : byte;

beginclrscr;line;center('Apresentacao de Registros');line;LINHA := 5;reset(ARQTXT);//abre um arquivo existente,

//colocando p leitura/escritawhile not eof(ARQTXT) do

//(eof) end of file - final do arquivobeginreadln(ARQTXT, NOME);readln(ARQTXT, TELEFONE);gotoxy( 5,LINHA); write(NOME);gotoxy(50,LINHA); write(TELEFONE);LINHA := LINHA + 1;

end;writexy(25,24,'Tecle algo para voltar ao menu'); TECLA := readkey;close(ARQTXT);

end;

25ICC

{*** Programa Principal ***}

begin

OPCAO := '0';

assign(ARQTXT,'AGENDTXT.DAT');

while (OPCAO <> '4') do

begin

clrscr;

line;

center('Menu Principal');

line;

gotoxy(28, 6); write('1 ........ Criar arquivo');

gotoxy(28, 8); write('2 ............ Cadastrar');

gotoxy(28,10); write('3 ..... Exibir registros');

gotoxy(28,12); write('4 ...... Fim de Programa');

gotoxy(28,16); write('Escolha uma opcao ....: ');

readln(OPCAO);

if (OPCAO <> '4') then

case OPCAO of

'1' : Arquivo;

'2' : Cadastra;

'3' : Exibir;

else

gotoxy(27,24); writeln('Opcao invalida - Tecle algo');

OPCAO := readkey;

end;

end;

end.