SlideShare uma empresa Scribd logo
1 de 20
ARQUIVOS
DISCIPLINA DE ALGORITMOS E
ESTRUTURAS DE DADOS
Prof.ª M.ª Eng.ª Elaine Cecília Gatto
Bauru-SP
2015
Sumário
1. ARQUIVOS...............................................................................................................................................3
1.1. Declaração de Arquivos......................................................................................................................3
1.1.1. Sintaxe .........................................................................................................................................3
1.1.2. Exemplo.......................................................................................................................................3
1.2. Associação de variáveis a arquivos ....................................................................................................3
1.3. Criação de novos arquivos..................................................................................................................4
1.4. Abrindo arquivos existentes ...............................................................................................................4
1.5. Fechando arquivos ..............................................................................................................................4
1.6. Lendo arquivos ...................................................................................................................................5
1.7. Gravando dados em um arquivos .......................................................................................................5
1.8. Movimentação do Ponteiro.................................................................................................................5
1.9. Tamanho do Arquivo..........................................................................................................................5
2.0. Posição do ponteiro.............................................................................................................................5
2.1. Verificação do fim de arquivo ............................................................................................................6
2.2. Exemplos ............................................................................................................................................6
Exemplo 1..............................................................................................................................................6
Exemplo 2: Incluindo clientes no arquivo criado ..................................................................................7
Passo 3: Inclua contas para os clientes cadastrados no arquivo criado .................................................9
Exemplo 4: Consultando o saldo de todas as contas de um cliente cadastrado...................................12
Exemplo 5: Atualizando o saldo de um cliente a partir de um depósito .............................................13
Exemplo 6: Atualizando o saldo de um cliente a partir de um saque ..................................................14
2.3. Exercícios .........................................................................................................................................16
1. ARQUIVOS
1.1. Declaração de Arquivos
1.1.1. Sintaxe
TYPE nome_do_registro = RECORD
nome_do_campo_1: tipo_do_dado;
nome_do_campo_2: tipo_do_dado;
nome_do_campo_3: tipo_do_dado;
...
END;
nome_do_arquivo = FILE OF nome_do_registro;
VAR
variável_do_arquivo : nome_do_arquivo;
variável_do_registro: nome_do_registro;
1.1.2. Exemplo
Exemplo 1:
TYPE registro = RECORD
nome : string[30];
endereco : string[20];
telephone : string[10];
END;
arquivo = FILE OF registro;
VAR
agenda : arquivo;
reg : registro;
Exemplo 2:
TYPE carro = RECORD
placa : string[7];
marca : string[20];
ano : integer
END;
Frota = FILE OF carro;
VAR
Detran : frota;
Carros : carro;
1.2. Associação de variáveis a arquivos
ASSIGN: comando usado para associar nomes de arquivos FÍSICOS à variáveis de programa.
Assim uma ligação é estabelecida entre a memória principal (RAM) e a memória secundária (HD).
Sintaxe:
ASSIGN (nome_da_variavel_do_tipo_arquivo, ‘caminho do arquivo no disco’);
Exemplo 1:
ASSIGN(agenda, ‘agenda.dat’);
Exemplo 2:
ASSIGN(detran, ‘c:exemploscarros.dat’);
1.3. Criação de novos arquivos
REWRITE: comando utilizado para criar um novo arquivo. Posiciona o ponteiro no primeiro
registro do arquivo quando utilizado. Existem duas condições:
a) arquivo já existente: se o camando REWRITE for utilizado para fazer referencia a um arquivo que
já exista em seu HD, todos os dados que estão armazenados nesse arquivo serão DESTRUÍDOS.
b) Arquivo não existente: força a criação do arquivo.
Sintaxe:
REWRITE(nome_da_variável_do_tipo_arquivo);
Exemplo 1:
REWRITE(detran);
Exemplo 2:
REWRITE(agenda);
1.4. Abrindo arquivos existentes
RESET: comando utilizado para abrir arquivos já criados. O ponteiro deve ser posicionado no
primeiro registro, sem destruir os dados já existentes no arquivo.
Sintaxe:
RESET(nome_da_variável_do_tipo_arquivo);
Exemplo 1:
RESET(detran);
Exemplo 2:
RESET(agenda);
1.5. Fechando arquivos
CLOSE: comando utilizado para fechar arquivos abertos pelo comando REWRITE ou RESET.
Todas as alterações feitas em um arquivo só serão efetivamente realizadas quando o mesmo for fechado.
Sintaxe:
CLOSE(nome_da_variável_do_tipo_arquivo);
Exemplo 1:
CLOSE(detran);
Exemplo 2:
CLOSE(agenda);
1.6. Lendo arquivos
READ: comando utilizado para ler arquivos. Uma leitura em disco deve ser executada para ler os
dados contidos em um arquivo.
Sintaxe:
READ(nome_da_variável_do_tipo_arquivo, nome_da_variavel_do_tipo_registro);
Exemplo 1:
READ(detran, carros);
Exemplo 2:
READ(agenda, reg);
1.7. Gravando dados em um arquivos
WRITE: comando utilizado para gravar dados em arquivos.
Sintaxe:
WRITE(nome_da_variável_do_tipo_arquivo, nome_da_variavel_do_tipo_registro);
Exemplo 1:
WRITE(detran, carros);
Exemplo 2:
WRITE(agenda, reg);
1.8. Movimentação do Ponteiro
SEEK: posiciona o ponteiro no registro desejado. O primeiro registro do arquivo é sempre o
número zero.
Sintaxe:
SEEK(nome_da_variável_do_tipo_arquivo, numero_do_registro);
Exemplo 1:
SEEK(detran, 0);
Exemplo 2:
SEEK(agenda, 0);
1.9. Tamanho do Arquivo
FILEZISE: retorna o número de registros existentes em um arquivo.
Sintaxe:
FILEZISE(nome_da_variável_do_tipo_arquivo);
Exemplo 1:
int tamanho := FILEZISE(agenda);
Exemplo 2:
int tamanho := FILEZISE(detran);
2.0. Posição do ponteiro
FILEPOS: retorna o número do registro onde o ponteiro está localizado.
Sintaxe:
int posicao := FILEPOS(nome_da_variavel_do_tipo_arquivo);
Exemplo 1:
int posicao := FILEPOS(agenda);
Exemplo 2:
int posicao := FILEPOS(detran);
2.1. Verificação do fim de arquivo
NOT EOF: verifica se o ponteiro chegou ao final do arquivo. Retorno desta função:
a) Verdadeiro: se o final do arquivo foi encontrado
b) Falso: se o final do arquivo não foi encontrado
Sintaxe:
WHILE NOT EOF (nome_da_variavel_do_tipo_arquivo) DO
BEGIN
Comandos;
END;
Exemplo 1:
WHILE NOT EOF (detran) DO
BEGIN
READ(detran, carros);
END;
Exemplo 2:
WHILE NOT EOF (agenda) DO
BEGIN
READ(agenda, reg);
END;
2.2. Exemplos
Exemplo 1
Criando dois arquivos, um para armazenar dados de clientes e, outro, para armazenar dados da
conta bancária desses clientes, conforme ilustram as tabelas abaixo.
Clientes Conta Bancaria
Numero do cliente Número da conta
Nome do cliente Número do cliente
Saldo
PROGRAM EXEMPLO;
USES CRT;
TYPE cliente = RECORD
numero : INTEGER;
nome : STRING[20];
ativo: INTEGER;
END;
clientes = FILE OF cliente;
TYPE conta = RECORD
numero_conta : INTEGER;
numero_cli : INTEGER;
saldo : REAL;
ativo: INTEGER;
END;
contas = FILE OF conta;
VAR
cli: clientes;
cl: cliente;
com: contas;
co: conta;
BEGIN
CLRSCR;
ASSIGN(CLI, 'C:CLIENTES.DAT');
REWRITE(CLI);
CLOSE(CLI);
WRITELN('ARQUIVO DE CLIENTES CRIADO COM SUCESSO ');
ASSIGN(COM, 'C:CONTAS.DAT');
REWRITE(COM);
CLOSE(COM);
WRITELN('ARQUIVO DE CONTAS CRIADO COM SUCESSO ');
READLN;
END.
Exemplo 2: Incluindo clientes no arquivo criado
PROGRAM EXEMPLO;
USES CRT;
TYPE cliente = RECORD
numero, ativo : INTEGER;
nome : STRING[20];
END;
clientes = FILE OF cliente;
VAR
cli: clientes;
cl: cliente;
K, I, P, POSICAO: INTEGER;
ACHOU : BOOLEAN;
NUMERO: INTEGER;
NOME: STRING[20];
BEGIN
CLRSCR;
ASSIGN(CLI, 'C:CLIENTES.DAT');
{$I-}
RESET(CLI);
{$I+}
IF IORESULT = 2
THEN REWRITE(CLI);
K := FILESIZE(CLI);
WRITE('DIGITE O NéMERO DO CLIENTE A SER INCLUÖDO ');
READLN(NUMERO);
IF K = 0
THEN BEGIN
WRITE('DIGITE O NOME DO CLIENTE A SER INCLUÖDO ');
READLN(NOME);
CL.NUMERO := NUMERO;
CL.NOME := NOME;
CL.ATIVO := 1;
WRITE(CLI, CL);
WRITELN('CLIENTE INCLUÖDO');
END
ELSE BEGIN
I := 0;
ACHOU := FALSE;
POSICAO := 0;
RESET(CLI);
WHILE ( I <= (K-1)) DO
BEGIN
READ(CLI, CL);
IF (CL.NUMERO = NUMERO) AND (CL.ATIVO = 1)
THEN BEGIN
ACHOU := TRUE;
I := K + 2;
END
ELSE BEGIN
IF NUMERO < CL.NUMERO
THEN BEGIN
POSICAO := FILEPOS(CLI) - 1;
I := K + 2;
END
ELSE BEGIN
I := I+1;
SEEK(CLI, I);
END;
END;
END;
IF ACHOU = TRUE
THEN WRITELN('JA EXISTE CLIENTE CADASTRADO COM ESTE CODIGO ')
ELSE BEGIN
IF I = FILESIZE(CLI)
THEN BEGIN
WRITE('DIGITE O NOME DO CLIENTE A SER INCLUÖDO ');
READLN(NOME);
SEEK(CLI, FILESIZE(CLI));
CL.NUMERO := NUMERO;
CL.NOME := NOME;
CL.ATIVO := 1;
WRITE(CLI, CL);
WRITELN('CLIENTE INCLUÖDO');
END
ELSE BEGIN
P := FILESIZE(CLI) - 1;
WHILE P >= POSICAO DO
BEGIN
SEEK(CLI,P);
READ(CLI,CL);
WRITE(CLI,CL);
P := P - 1 ;
END;
SEEK(CLI, POSICAO);
WRITE('DIGITE O NOME DO CLIENTE A SER INCLUÖDO ');
READLN(NOME);
CL.NUMERO := NUMERO;
CL.NOME := NOME;
CL.ATIVO := 1;
WRITE(CLI, CL);
WRITELN('CLIENTE INCLUÖDO');
END;
END;
END;
READLN;
CLOSE(CLI);
END.
Passo 3: Inclua contas para os clientes cadastrados no arquivo criado
PROGRAM EXEMPLO;
USES CRT;
TYPE cliente = RECORD
numero : INTEGER;
nome : STRING[20];
ativo: INTEGER;
END;
clientes = FILE OF cliente;
TYPE conta = RECORD
numero_conta : INTEGER;
numero_cli : INTEGER;
saldo : REAL;
ativo: INTEGER;
END;
contas = FILE OF conta;
VAR
con: contas;
co: conta;
cli: clientes;
cl: cliente;
K, I, P, POSICAO : INTEGER;
ACHOU : BOOLEAN;
NUM_CONTA, NUM_CLIENTE: INTEGER;
SALDO: REAL;
BEGIN
CLRSCR;
ASSIGN(CON, 'C:CONTAS.DAT');
{$I-}
RESET(CON);
{$I+}
IF IORESULT = 2 THEN
REWRITE(CON);
ASSIGN(CLI, 'C:CLIENTES.DAT');
{$I-}
RESET(CLI);
{$I+}
IF IORESULT = 2 THEN
REWRITE(CLI);
K := FILESIZE(CON);
WRITE('DIGITE O NéMERO DA CONTA A SER INCLUÖDA ');
READLN(NUM_CONTA);
WRITE('DIGITE O NéMERO DO CLIENTE DA CONTA ');
READLN(NUM_CLIENTE);
WRITE('DIGITE O SALDO ');
READLN(SALDO);
ACHOU:=FALSE;
WHILE NOT EOF(CLI) DO
BEGIN
READ(CLI,CL);
IF (CL.NUMERO = NUM_CLIENTE) AND (CL.ATIVO = 1)
THEN ACHOU:=TRUE;
END;
IF ACHOU = FALSE
THEN WRITELN('ESTE CLIENTE NÇO ESTµ CADASTRADO')
ELSE BEGIN
ACHOU:=FALSE;
IF K = 0
THEN BEGIN
CO.NUMERO_CONTA := NUM_CONTA;
CO.NUMERO_CLI := NUM_CLIENTE;
CO.SALDO:= SALDO;
CO.ATIVO:=1;
WRITE(CON,CO);
WRITELN('CONTA INCLUÖDA');
END
ELSE BEGIN
I := 0;
ACHOU := FALSE;
POSICAO := 0;
RESET(CON);
WHILE ( I <= (K-1)) DO
BEGIN
READ(CON, CO);
IF (CO.NUMERO_CONTA = NUM_CONTA) AND (CO.ATIVO = 1)
THEN BEGIN
ACHOU := TRUE;
I := K + 2;
END
ELSE BEGIN
IF NUM_CONTA < CO.NUMERO_CONTA
THEN BEGIN
POSICAO := FILEPOS(CON) - 1;
I := K + 2;
END
ELSE BEGIN
I := I+1;
SEEK(CON, I);
END;
END;
END;
IF ACHOU = TRUE
THEN WRITELN('JA EXISTE CONTA CADASTRADA COM ESTE NUMERO ')
ELSE BEGIN
IF I = FILESIZE(CON)
THEN BEGIN
SEEK(CON, FILESIZE(CON));
CO.NUMERO_CONTA := NUM_CONTA;
CO.NUMERO_CLI := NUM_CLIENTE;
CO.SALDO:= SALDO;
CO.ATIVO:=1;
WRITE(CON, CO);
WRITELN('CONTA INCLUÖDA');
END
ELSE BEGIN
P := FILESIZE(CON) - 1;
WHILE P >= POSICAO DO
BEGIN
SEEK(CON,P);
READ(CON,CO);
WRITE(CON,CO);
P := P - 1 ;
END;
SEEK(CON, POSICAO);
CO.NUMERO_CONTA := NUM_CONTA;
CO.NUMERO_CLI := NUM_CLIENTE;
CO.SALDO:= SALDO;
CO.ATIVO:=1;
WRITE(CON, CO);
WRITELN('CONTA INCLUÖDA');
END;
END;
END;
END;
READLN;
CLOSE(CLI);
CLOSE(CON);
END.
Exemplo 4: Consultando o saldo de todas as contas de um cliente cadastrado
PROGRAM EXEMPLO;
USES CRT;
TYPE cliente = RECORD
numero : INTEGER;
nome : STRING[20];
ativo: INTEGER;
END;
clientes = FILE OF cliente;
TYPE conta = RECORD
numero_conta : INTEGER;
numero_cli : INTEGER;
saldo : REAL;
ativo: integer;
END;
contas = FILE OF conta;
VAR
com: contas;
co: conta;
cli: clientes;
cl: cliente;
K, I : INTEGER;
ACHOU : BOOLEAN;
NUM_CLIENTE: INTEGER;
BEGIN
CLRSCR;
ASSIGN(COM, 'C:CONTAS.DAT');
RESET(COM);
ASSIGN(CLI,'C:CLIENTES.DAT');
RESET(CLI);
K := FILESIZE(COM);
WRITE('DIGITE O NéMERO DO CLIENTE DA CONTA ');
READLN(NUM_CLIENTE);
ACHOU:=FALSE;
WHILE NOT EOF(CLI) DO
BEGIN
READ(CLI,CL);
IF (CL.NUMERO = NUM_CLIENTE) AND (CL.ATIVO = 1)
THEN ACHOU:=TRUE;
END;
IF ACHOU = FALSE
THEN WRITELN('ESTE CLIENTE NÇO ESTµ CADASTRADO')
ELSE BEGIN
ACHOU:=FALSE;
WHILE NOT EOF(COM) DO
BEGIN
READ(COM,CO);
IF (CO.NUMERO_CLI = NUM_CLIENTE) AND (CO.ATIVO = 1)
THEN BEGIN
ACHOU:=TRUE;
WRITELN('CONTA ',CO.NUMERO_CONTA,' = ',CO.SALDO:5:2);
END;
END;
IF ACHOU = FALSE
THEN WRITELN('NÇO EXISTE CONTA CASTRADA PARA ESTE CLIENTE');
END;
READLN;
CLOSE(CLI);
CLOSE(COM);
END.
Exemplo 5: Atualizando o saldo de um cliente a partir de um depósito
PROGRAM EXEMPLO;
USES CRT;
TYPE conta = RECORD
numero_conta : INTEGER;
numero_cli : INTEGER;
saldo : REAL;
ativo: INTEGER;
END;
contas = FILE OF conta;
VAR
con: contas;
co: conta;
K, I : INTEGER;
ACHOU : BOOLEAN;
NUM_CONTA: INTEGER;
VALOR: REAL;
BEGIN
CLRSCR;
ASSIGN(CON, 'C:CONTAS.DAT');
{$I-}
RESET(CON);
{$I+}
IF IORESULT = 2
THEN REWRITE(CON);
K := FILESIZE(CON);
WRITE('DIGITE O NéMERO DA CONTA QUE SOFRERµ O DEPàSITO ');
READLN(NUM_CONTA);
ACHOU:=FALSE;
WHILE NOT EOF(CON) DO
BEGIN
READ(CON,CO);
IF (CO.NUMERO_CONTA = NUM_CONTA) AND (CO.ATIVO = 1)
THEN BEGIN
ACHOU:=TRUE;
SEEK(CON,FILEPOS(CON)-1);
WRITELN('SALDO ATUAL DA CONTA: ', CO.SALDO:7:2);
WRITE('DIGITE O VALOR DO DEPàSITO ');
READLN(VALOR);
CO.SALDO:= CO.SALDO + VALOR;
WRITE(CON,CO);
SEEK(CON,FILEPOS(CON)+1);
WRITELN('DEPàSITO EFETUADO COM SUCESSO');
END;
END;
IF ACHOU = FALSE
THEN WRITELN('ESTA CONTA NÇO ESTµ CADASTRADA');
CLOSE(CON);
READLN;
END.
Exemplo 6: Atualizando o saldo de um cliente a partir de um saque
PROGRAM EXEMPLO;
USES CRT;
TYPE conta = RECORD
numero_conta : INTEGER;
numero_cli : INTEGER;
saldo : REAL;
ativo: INTEGER;
END;
contas = FILE OF conta;
VAR
con: contas;
co: conta;
K, I : INTEGER;
ACHOU : BOOLEAN;
NUM_CONTA: INTEGER;
VALOR: REAL;
BEGIN
CLRSCR;
ASSIGN(CON, 'C:CONTAS.DAT');
{$I-}
RESET(CON);
{$I+}
IF IORESULT = 2 THEN
REWRITE(CON);
K := FILESIZE(CON);
WRITE('DIGITE O NéMERO DA CONTA QUE SOFRERµ O SAQUE ');
READLN(NUM_CONTA);
ACHOU:=FALSE;
WHILE NOT EOF(CON) DO
BEGIN
READ(CON,CO);
IF (CO.NUMERO_CONTA = NUM_CONTA) AND (CO.ATIVO = 1)
THEN BEGIN
ACHOU:=TRUE;
SEEK(CON,FILEPOS(CON)-1);
WRITELN('SALDO ATUAL DA CONTA: ', CO.SALDO:7:2);
WRITE('DIGITE O VALOR DO SAQUE ');
READLN(VALOR);
CO.SALDO:= CO.SALDO - VALOR;
WRITE(CON,CO);
SEEK(CON,FILEPOS(CON)+1);
WRITELN('SAQUE EFETUADO COM SUCESSO');
END;
END;
IF ACHOU = FALSE
THEN WRITELN('ESTA CONTA NÇO ESTµ CADASTRADA');
CLOSE(CON);
READLN;
END.
2.3. Exercícios
Faça um programa em pascal que:
1. Crie um arquivo chamado ALUNOS.DAT, no qual cada registro será composto pelos seguintes
campos: número, nome, curso, nota1, nota2, media.
2. Permita incluir 10 alunos no arquivo criado, lembrando que não podem existir dois alunos com o
mesmo número.
3. Permita alterar todas as notas dos alunos.
4. Permita alterar uma nota especifica de um aluno especifico.
5. Permita alterar o curso de todos os alunos.
6. Permita alterar o curso de um aluno especifico.
7. Permita excluir todos os alunos.
8. Permita excluir apenas um aluno especifico.
9. Permita buscar por um nome de aluno especifico.
10. Permita emitir um relatório completo da ficha de um aluno especifico.
11. Permita emitir um relatório completo de todos os alunos.
12. Permita emitir um relatório com os nomes de todos os alunos reprovados (média menor que 7)
13. Permita emitir um relatório com os nomes de todos os alunos aprovados (média maior ou igual a
7).
Para o desenvolvimento deste exercício use todos os recursos aprendidos: units, procedures,
functions, swtch/case, etc.
INSERINDO ALUNOS USANDO PROCEDURES
PROGRAM EXEMPLO;
USES CRT,WINCRT;
TYPE aluno = RECORD
numero : INTEGER;
nome : STRING[255];
nota1, nota2, media : REAL;
ativo: INTEGER;
END;
alunos = FILE OF aluno; //variável do tipo regitro cliente
VAR
alu: alunos;
al: aluno;
k, i, p, posicao, numero: INTEGER;
achou : BOOLEAN;
nome: STRING[255];
nota1, nota2, media: REAL;
PROCEDURE INSERIRALUNO();
begin
ASSIGN(alu, 'C:Userselaine.gattoDocumentsalunos2.txt');
{$I-}
{comando utilizado para abrir arquivos já criados
abre o arquivo ALU que já foi criado por ASSIGN }
RESET(alu);
{$I+}
if(IORESULT = 2) then
REWRITE(alu);
k := FILESIZE(alu); //k tem o tamanho do arquivo
WRITELN(' Digite o numero do aluno a ser incluido ');
READLN(numero);
{se o tamanho do arquivo for igual a zero, então o arquivo está vazio}
if(K=0)then
begin
WRITELN(' Digite o numero do aluno a ser incluido ');
READLN(numero);
WRITELN(' Digite o nome do aluno a ser incluido ');
READLN(nome);
WRITELN(' Digite a primeira nota a ser incluido ');
READLN(nota1);
WRITELN(' Digite a segunda nota a ser incluido ');
READLN(nota1);
al.numero := numero;
al.nome := nome;
al.nota1 := nota1;
al.nota2 := nota2;
al.media := (nota1+nota2)/2;
al.ativo := 1; //indica que este número de registro existe no arquivo
WRITE(alu, al);
WRITELN(' Aluno incuido com sucesso ');
end
{se o tamanho do arquivo for diferente de zero, então o arquivo não está
vazio - cuidado para não apagar o que já existe!}
else begin
i := 0;
achou := false; //seta a variavel auxiliar ACHOU como falsa
posicao := 0;
RESET(alu); //abre o arquivo existente
//enquanto i menor que o tamanho do arquivo - 1
while( i <= (k-1))do
begin
//faz a leitura dos dados do arquivo
READ(alu, al);
{ se o número digitado for igual ao número do registro
e se ativo for igual a 1, então registro existe}
if((al.numero = numero) AND (al.ativo = 1)) then
begin
achou := true; //encontrou o registro!!! seta como verdadeiro
i := k + 2;
end
else begin
{se o numero digitado for menor que o número do registro}
if(numero<al.numero) then
begin
{retorna o número do registro onde o ponteiro está localizado
seta a posicao do ponteiro para a posição atual}
posicao := FILEPOS(alu)-1;
i := k + 2;
end
else begin
i := i + 1;
SEEK(alu,i); //posiciona o ponteiro no registro desejado
end;
end;
end;
{ se achou for verdadeiro, então o número do aluno já está cadastrado
no arquivo, assim sendo, você não pode permitir que dois número iguais
sejam gravados para alunos diferentes }
IF achou = true THEN
WRITELN(' Já existe um aluno cadastrado com esse número ')
{ se achou for falso, então, significa que o número que será cadastrado
é diferente!}
ELSE BEGIN
IF(i = FILESIZE(alu))THEN
BEGIN
WRITELN(' Digite o numero do aluno a ser incluído ');
READLN(nome);
SEEK(alu, FILESIZE(alu));
WRITELN(' Digite o numero do aluno a ser incluido ');
READLN(numero);
WRITELN(' Digite o nome do aluno a ser incluido ');
READLN(nome);
WRITELN(' Digite a primeira nota a ser incluido ');
READLN(nota1);
WRITELN(' Digite a segunda nota a ser incluido ');
READLN(nota1);
al.numero := numero;
al.nome := nome;
al.nota1 := nota1;
al.nota2 := nota2;
al.media := (nota1+nota2)/2;
al.ativo := 1; //indica que este número de registro existe no arquivo
WRITE(alu, al);
WRITELN(' Aluno incluido com sucesso ');
END
ELSE BEGIN
p := FILESIZE(alu) - 1;
WHILE(p >= posicao) DO
BEGIN
SEEK(alu,p);
READ(alu,al);
WRITE(alu,al);
p := p - 1 ;
END;
SEEK(alu, posicao);
WRITELN(' Digite o numero do aluno a ser incluido ');
READLN(numero);
WRITELN(' Digite o nome do aluno a ser incluido ');
READLN(nome);
WRITELN(' Digite a primeira nota a ser incluido ');
READLN(nota1);
WRITELN(' Digite a segunda nota a ser incluido ');
READLN(nota1);
al.numero := numero;
al.nome := nome;
al.nota1 := nota1;
al.nota2 := nota2;
al.media := (nota1+nota2)/2;
al.ativo := 1; //indica que este número de registro existe no arquivo
WRITE(alu, al);
WRITELN(' Aluno incluido com sucesso ');
END;
END;
END;
READLN; //pula linha
CLOSE(alu); //fecha o arquivo
end;
BEGIN
CLRSCR; //limpa a tela
INSERIRALUNO();
END.

Mais conteúdo relacionado

Mais procurados

Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Módulo 7 – Tratamento de ficheiros.pptx
Módulo 7 – Tratamento de ficheiros.pptxMódulo 7 – Tratamento de ficheiros.pptx
Módulo 7 – Tratamento de ficheiros.pptxBrancaSilva12
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaJuliano Padilha
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Diagramas de Fluxo de Dados
Diagramas de Fluxo de DadosDiagramas de Fluxo de Dados
Diagramas de Fluxo de DadosJanynne Gomes
 
Inserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista EncadeadaInserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista EncadeadaElaine Cecília Gatto
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia iFábio Costa
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 

Mais procurados (20)

Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Módulo 7 – Tratamento de ficheiros.pptx
Módulo 7 – Tratamento de ficheiros.pptxMódulo 7 – Tratamento de ficheiros.pptx
Módulo 7 – Tratamento de ficheiros.pptx
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Visualg
VisualgVisualg
Visualg
 
03 mer2
03 mer203 mer2
03 mer2
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Diagramas de Fluxo de Dados
Diagramas de Fluxo de DadosDiagramas de Fluxo de Dados
Diagramas de Fluxo de Dados
 
Inserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista EncadeadaInserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista Encadeada
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia i
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 

Semelhante a Tutorial pascal arquivos

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
 
Apresentação Oracle SGBD
Apresentação Oracle SGBDApresentação Oracle SGBD
Apresentação Oracle SGBDDenis Vieira
 
Trabalhando na Linha de comando
Trabalhando na  Linha de comandoTrabalhando na  Linha de comando
Trabalhando na Linha de comandoSoftD Abreu
 
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Alamo Saravali
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bashSérgio Silva
 
Criação e configuração de base de dados
Criação e configuração de base de dadosCriação e configuração de base de dados
Criação e configuração de base de dadosPortal_do_Estudante_SQL
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Ilton Barbosa
 
Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6André Phillip Bertoletti
 

Semelhante a Tutorial pascal arquivos (20)

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
 
Apresentação Oracle SGBD
Apresentação Oracle SGBDApresentação Oracle SGBD
Apresentação Oracle SGBD
 
Trabalhando na Linha de comando
Trabalhando na  Linha de comandoTrabalhando na  Linha de comando
Trabalhando na Linha de comando
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Arquivos
ArquivosArquivos
Arquivos
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Linguagem C 10 Arquivos
Linguagem C 10 ArquivosLinguagem C 10 Arquivos
Linguagem C 10 Arquivos
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
Arquivos em C
Arquivos em CArquivos em C
Arquivos em C
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
 
PowerShell
PowerShellPowerShell
PowerShell
 
Criação e configuração de base de dados
Criação e configuração de base de dadosCriação e configuração de base de dados
Criação e configuração de base de dados
 
Aula1
Aula1Aula1
Aula1
 
Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 
Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6
 

Mais de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Ú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
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
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
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
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
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
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
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoGentil Eronides
 
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
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 

Ú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)
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
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
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.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
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
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...
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimento
 
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
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 

Tutorial pascal arquivos

  • 1. ARQUIVOS DISCIPLINA DE ALGORITMOS E ESTRUTURAS DE DADOS Prof.ª M.ª Eng.ª Elaine Cecília Gatto Bauru-SP 2015
  • 2. Sumário 1. ARQUIVOS...............................................................................................................................................3 1.1. Declaração de Arquivos......................................................................................................................3 1.1.1. Sintaxe .........................................................................................................................................3 1.1.2. Exemplo.......................................................................................................................................3 1.2. Associação de variáveis a arquivos ....................................................................................................3 1.3. Criação de novos arquivos..................................................................................................................4 1.4. Abrindo arquivos existentes ...............................................................................................................4 1.5. Fechando arquivos ..............................................................................................................................4 1.6. Lendo arquivos ...................................................................................................................................5 1.7. Gravando dados em um arquivos .......................................................................................................5 1.8. Movimentação do Ponteiro.................................................................................................................5 1.9. Tamanho do Arquivo..........................................................................................................................5 2.0. Posição do ponteiro.............................................................................................................................5 2.1. Verificação do fim de arquivo ............................................................................................................6 2.2. Exemplos ............................................................................................................................................6 Exemplo 1..............................................................................................................................................6 Exemplo 2: Incluindo clientes no arquivo criado ..................................................................................7 Passo 3: Inclua contas para os clientes cadastrados no arquivo criado .................................................9 Exemplo 4: Consultando o saldo de todas as contas de um cliente cadastrado...................................12 Exemplo 5: Atualizando o saldo de um cliente a partir de um depósito .............................................13 Exemplo 6: Atualizando o saldo de um cliente a partir de um saque ..................................................14 2.3. Exercícios .........................................................................................................................................16
  • 3. 1. ARQUIVOS 1.1. Declaração de Arquivos 1.1.1. Sintaxe TYPE nome_do_registro = RECORD nome_do_campo_1: tipo_do_dado; nome_do_campo_2: tipo_do_dado; nome_do_campo_3: tipo_do_dado; ... END; nome_do_arquivo = FILE OF nome_do_registro; VAR variável_do_arquivo : nome_do_arquivo; variável_do_registro: nome_do_registro; 1.1.2. Exemplo Exemplo 1: TYPE registro = RECORD nome : string[30]; endereco : string[20]; telephone : string[10]; END; arquivo = FILE OF registro; VAR agenda : arquivo; reg : registro; Exemplo 2: TYPE carro = RECORD placa : string[7]; marca : string[20]; ano : integer END; Frota = FILE OF carro; VAR Detran : frota; Carros : carro; 1.2. Associação de variáveis a arquivos ASSIGN: comando usado para associar nomes de arquivos FÍSICOS à variáveis de programa. Assim uma ligação é estabelecida entre a memória principal (RAM) e a memória secundária (HD). Sintaxe: ASSIGN (nome_da_variavel_do_tipo_arquivo, ‘caminho do arquivo no disco’);
  • 4. Exemplo 1: ASSIGN(agenda, ‘agenda.dat’); Exemplo 2: ASSIGN(detran, ‘c:exemploscarros.dat’); 1.3. Criação de novos arquivos REWRITE: comando utilizado para criar um novo arquivo. Posiciona o ponteiro no primeiro registro do arquivo quando utilizado. Existem duas condições: a) arquivo já existente: se o camando REWRITE for utilizado para fazer referencia a um arquivo que já exista em seu HD, todos os dados que estão armazenados nesse arquivo serão DESTRUÍDOS. b) Arquivo não existente: força a criação do arquivo. Sintaxe: REWRITE(nome_da_variável_do_tipo_arquivo); Exemplo 1: REWRITE(detran); Exemplo 2: REWRITE(agenda); 1.4. Abrindo arquivos existentes RESET: comando utilizado para abrir arquivos já criados. O ponteiro deve ser posicionado no primeiro registro, sem destruir os dados já existentes no arquivo. Sintaxe: RESET(nome_da_variável_do_tipo_arquivo); Exemplo 1: RESET(detran); Exemplo 2: RESET(agenda); 1.5. Fechando arquivos CLOSE: comando utilizado para fechar arquivos abertos pelo comando REWRITE ou RESET. Todas as alterações feitas em um arquivo só serão efetivamente realizadas quando o mesmo for fechado. Sintaxe: CLOSE(nome_da_variável_do_tipo_arquivo); Exemplo 1: CLOSE(detran); Exemplo 2: CLOSE(agenda);
  • 5. 1.6. Lendo arquivos READ: comando utilizado para ler arquivos. Uma leitura em disco deve ser executada para ler os dados contidos em um arquivo. Sintaxe: READ(nome_da_variável_do_tipo_arquivo, nome_da_variavel_do_tipo_registro); Exemplo 1: READ(detran, carros); Exemplo 2: READ(agenda, reg); 1.7. Gravando dados em um arquivos WRITE: comando utilizado para gravar dados em arquivos. Sintaxe: WRITE(nome_da_variável_do_tipo_arquivo, nome_da_variavel_do_tipo_registro); Exemplo 1: WRITE(detran, carros); Exemplo 2: WRITE(agenda, reg); 1.8. Movimentação do Ponteiro SEEK: posiciona o ponteiro no registro desejado. O primeiro registro do arquivo é sempre o número zero. Sintaxe: SEEK(nome_da_variável_do_tipo_arquivo, numero_do_registro); Exemplo 1: SEEK(detran, 0); Exemplo 2: SEEK(agenda, 0); 1.9. Tamanho do Arquivo FILEZISE: retorna o número de registros existentes em um arquivo. Sintaxe: FILEZISE(nome_da_variável_do_tipo_arquivo); Exemplo 1: int tamanho := FILEZISE(agenda); Exemplo 2: int tamanho := FILEZISE(detran); 2.0. Posição do ponteiro FILEPOS: retorna o número do registro onde o ponteiro está localizado.
  • 6. Sintaxe: int posicao := FILEPOS(nome_da_variavel_do_tipo_arquivo); Exemplo 1: int posicao := FILEPOS(agenda); Exemplo 2: int posicao := FILEPOS(detran); 2.1. Verificação do fim de arquivo NOT EOF: verifica se o ponteiro chegou ao final do arquivo. Retorno desta função: a) Verdadeiro: se o final do arquivo foi encontrado b) Falso: se o final do arquivo não foi encontrado Sintaxe: WHILE NOT EOF (nome_da_variavel_do_tipo_arquivo) DO BEGIN Comandos; END; Exemplo 1: WHILE NOT EOF (detran) DO BEGIN READ(detran, carros); END; Exemplo 2: WHILE NOT EOF (agenda) DO BEGIN READ(agenda, reg); END; 2.2. Exemplos Exemplo 1 Criando dois arquivos, um para armazenar dados de clientes e, outro, para armazenar dados da conta bancária desses clientes, conforme ilustram as tabelas abaixo. Clientes Conta Bancaria Numero do cliente Número da conta Nome do cliente Número do cliente Saldo PROGRAM EXEMPLO; USES CRT; TYPE cliente = RECORD numero : INTEGER; nome : STRING[20]; ativo: INTEGER; END;
  • 7. clientes = FILE OF cliente; TYPE conta = RECORD numero_conta : INTEGER; numero_cli : INTEGER; saldo : REAL; ativo: INTEGER; END; contas = FILE OF conta; VAR cli: clientes; cl: cliente; com: contas; co: conta; BEGIN CLRSCR; ASSIGN(CLI, 'C:CLIENTES.DAT'); REWRITE(CLI); CLOSE(CLI); WRITELN('ARQUIVO DE CLIENTES CRIADO COM SUCESSO '); ASSIGN(COM, 'C:CONTAS.DAT'); REWRITE(COM); CLOSE(COM); WRITELN('ARQUIVO DE CONTAS CRIADO COM SUCESSO '); READLN; END. Exemplo 2: Incluindo clientes no arquivo criado PROGRAM EXEMPLO; USES CRT; TYPE cliente = RECORD numero, ativo : INTEGER; nome : STRING[20]; END; clientes = FILE OF cliente; VAR cli: clientes; cl: cliente; K, I, P, POSICAO: INTEGER; ACHOU : BOOLEAN; NUMERO: INTEGER; NOME: STRING[20]; BEGIN
  • 8. CLRSCR; ASSIGN(CLI, 'C:CLIENTES.DAT'); {$I-} RESET(CLI); {$I+} IF IORESULT = 2 THEN REWRITE(CLI); K := FILESIZE(CLI); WRITE('DIGITE O NéMERO DO CLIENTE A SER INCLUÖDO '); READLN(NUMERO); IF K = 0 THEN BEGIN WRITE('DIGITE O NOME DO CLIENTE A SER INCLUÖDO '); READLN(NOME); CL.NUMERO := NUMERO; CL.NOME := NOME; CL.ATIVO := 1; WRITE(CLI, CL); WRITELN('CLIENTE INCLUÖDO'); END ELSE BEGIN I := 0; ACHOU := FALSE; POSICAO := 0; RESET(CLI); WHILE ( I <= (K-1)) DO BEGIN READ(CLI, CL); IF (CL.NUMERO = NUMERO) AND (CL.ATIVO = 1) THEN BEGIN ACHOU := TRUE; I := K + 2; END ELSE BEGIN IF NUMERO < CL.NUMERO THEN BEGIN POSICAO := FILEPOS(CLI) - 1; I := K + 2; END ELSE BEGIN I := I+1; SEEK(CLI, I); END; END; END; IF ACHOU = TRUE THEN WRITELN('JA EXISTE CLIENTE CADASTRADO COM ESTE CODIGO ') ELSE BEGIN
  • 9. IF I = FILESIZE(CLI) THEN BEGIN WRITE('DIGITE O NOME DO CLIENTE A SER INCLUÖDO '); READLN(NOME); SEEK(CLI, FILESIZE(CLI)); CL.NUMERO := NUMERO; CL.NOME := NOME; CL.ATIVO := 1; WRITE(CLI, CL); WRITELN('CLIENTE INCLUÖDO'); END ELSE BEGIN P := FILESIZE(CLI) - 1; WHILE P >= POSICAO DO BEGIN SEEK(CLI,P); READ(CLI,CL); WRITE(CLI,CL); P := P - 1 ; END; SEEK(CLI, POSICAO); WRITE('DIGITE O NOME DO CLIENTE A SER INCLUÖDO '); READLN(NOME); CL.NUMERO := NUMERO; CL.NOME := NOME; CL.ATIVO := 1; WRITE(CLI, CL); WRITELN('CLIENTE INCLUÖDO'); END; END; END; READLN; CLOSE(CLI); END. Passo 3: Inclua contas para os clientes cadastrados no arquivo criado PROGRAM EXEMPLO; USES CRT; TYPE cliente = RECORD numero : INTEGER; nome : STRING[20]; ativo: INTEGER; END; clientes = FILE OF cliente; TYPE conta = RECORD numero_conta : INTEGER;
  • 10. numero_cli : INTEGER; saldo : REAL; ativo: INTEGER; END; contas = FILE OF conta; VAR con: contas; co: conta; cli: clientes; cl: cliente; K, I, P, POSICAO : INTEGER; ACHOU : BOOLEAN; NUM_CONTA, NUM_CLIENTE: INTEGER; SALDO: REAL; BEGIN CLRSCR; ASSIGN(CON, 'C:CONTAS.DAT'); {$I-} RESET(CON); {$I+} IF IORESULT = 2 THEN REWRITE(CON); ASSIGN(CLI, 'C:CLIENTES.DAT'); {$I-} RESET(CLI); {$I+} IF IORESULT = 2 THEN REWRITE(CLI); K := FILESIZE(CON); WRITE('DIGITE O NéMERO DA CONTA A SER INCLUÖDA '); READLN(NUM_CONTA); WRITE('DIGITE O NéMERO DO CLIENTE DA CONTA '); READLN(NUM_CLIENTE); WRITE('DIGITE O SALDO '); READLN(SALDO); ACHOU:=FALSE; WHILE NOT EOF(CLI) DO BEGIN READ(CLI,CL); IF (CL.NUMERO = NUM_CLIENTE) AND (CL.ATIVO = 1) THEN ACHOU:=TRUE; END; IF ACHOU = FALSE THEN WRITELN('ESTE CLIENTE NÇO ESTµ CADASTRADO') ELSE BEGIN
  • 11. ACHOU:=FALSE; IF K = 0 THEN BEGIN CO.NUMERO_CONTA := NUM_CONTA; CO.NUMERO_CLI := NUM_CLIENTE; CO.SALDO:= SALDO; CO.ATIVO:=1; WRITE(CON,CO); WRITELN('CONTA INCLUÖDA'); END ELSE BEGIN I := 0; ACHOU := FALSE; POSICAO := 0; RESET(CON); WHILE ( I <= (K-1)) DO BEGIN READ(CON, CO); IF (CO.NUMERO_CONTA = NUM_CONTA) AND (CO.ATIVO = 1) THEN BEGIN ACHOU := TRUE; I := K + 2; END ELSE BEGIN IF NUM_CONTA < CO.NUMERO_CONTA THEN BEGIN POSICAO := FILEPOS(CON) - 1; I := K + 2; END ELSE BEGIN I := I+1; SEEK(CON, I); END; END; END; IF ACHOU = TRUE THEN WRITELN('JA EXISTE CONTA CADASTRADA COM ESTE NUMERO ') ELSE BEGIN IF I = FILESIZE(CON) THEN BEGIN SEEK(CON, FILESIZE(CON)); CO.NUMERO_CONTA := NUM_CONTA; CO.NUMERO_CLI := NUM_CLIENTE; CO.SALDO:= SALDO; CO.ATIVO:=1; WRITE(CON, CO); WRITELN('CONTA INCLUÖDA'); END ELSE BEGIN
  • 12. P := FILESIZE(CON) - 1; WHILE P >= POSICAO DO BEGIN SEEK(CON,P); READ(CON,CO); WRITE(CON,CO); P := P - 1 ; END; SEEK(CON, POSICAO); CO.NUMERO_CONTA := NUM_CONTA; CO.NUMERO_CLI := NUM_CLIENTE; CO.SALDO:= SALDO; CO.ATIVO:=1; WRITE(CON, CO); WRITELN('CONTA INCLUÖDA'); END; END; END; END; READLN; CLOSE(CLI); CLOSE(CON); END. Exemplo 4: Consultando o saldo de todas as contas de um cliente cadastrado PROGRAM EXEMPLO; USES CRT; TYPE cliente = RECORD numero : INTEGER; nome : STRING[20]; ativo: INTEGER; END; clientes = FILE OF cliente; TYPE conta = RECORD numero_conta : INTEGER; numero_cli : INTEGER; saldo : REAL; ativo: integer; END; contas = FILE OF conta; VAR com: contas; co: conta; cli: clientes; cl: cliente;
  • 13. K, I : INTEGER; ACHOU : BOOLEAN; NUM_CLIENTE: INTEGER; BEGIN CLRSCR; ASSIGN(COM, 'C:CONTAS.DAT'); RESET(COM); ASSIGN(CLI,'C:CLIENTES.DAT'); RESET(CLI); K := FILESIZE(COM); WRITE('DIGITE O NéMERO DO CLIENTE DA CONTA '); READLN(NUM_CLIENTE); ACHOU:=FALSE; WHILE NOT EOF(CLI) DO BEGIN READ(CLI,CL); IF (CL.NUMERO = NUM_CLIENTE) AND (CL.ATIVO = 1) THEN ACHOU:=TRUE; END; IF ACHOU = FALSE THEN WRITELN('ESTE CLIENTE NÇO ESTµ CADASTRADO') ELSE BEGIN ACHOU:=FALSE; WHILE NOT EOF(COM) DO BEGIN READ(COM,CO); IF (CO.NUMERO_CLI = NUM_CLIENTE) AND (CO.ATIVO = 1) THEN BEGIN ACHOU:=TRUE; WRITELN('CONTA ',CO.NUMERO_CONTA,' = ',CO.SALDO:5:2); END; END; IF ACHOU = FALSE THEN WRITELN('NÇO EXISTE CONTA CASTRADA PARA ESTE CLIENTE'); END; READLN; CLOSE(CLI); CLOSE(COM); END. Exemplo 5: Atualizando o saldo de um cliente a partir de um depósito PROGRAM EXEMPLO; USES CRT; TYPE conta = RECORD numero_conta : INTEGER; numero_cli : INTEGER; saldo : REAL; ativo: INTEGER;
  • 14. END; contas = FILE OF conta; VAR con: contas; co: conta; K, I : INTEGER; ACHOU : BOOLEAN; NUM_CONTA: INTEGER; VALOR: REAL; BEGIN CLRSCR; ASSIGN(CON, 'C:CONTAS.DAT'); {$I-} RESET(CON); {$I+} IF IORESULT = 2 THEN REWRITE(CON); K := FILESIZE(CON); WRITE('DIGITE O NéMERO DA CONTA QUE SOFRERµ O DEPàSITO '); READLN(NUM_CONTA); ACHOU:=FALSE; WHILE NOT EOF(CON) DO BEGIN READ(CON,CO); IF (CO.NUMERO_CONTA = NUM_CONTA) AND (CO.ATIVO = 1) THEN BEGIN ACHOU:=TRUE; SEEK(CON,FILEPOS(CON)-1); WRITELN('SALDO ATUAL DA CONTA: ', CO.SALDO:7:2); WRITE('DIGITE O VALOR DO DEPàSITO '); READLN(VALOR); CO.SALDO:= CO.SALDO + VALOR; WRITE(CON,CO); SEEK(CON,FILEPOS(CON)+1); WRITELN('DEPàSITO EFETUADO COM SUCESSO'); END; END; IF ACHOU = FALSE THEN WRITELN('ESTA CONTA NÇO ESTµ CADASTRADA'); CLOSE(CON); READLN; END. Exemplo 6: Atualizando o saldo de um cliente a partir de um saque PROGRAM EXEMPLO; USES CRT;
  • 15. TYPE conta = RECORD numero_conta : INTEGER; numero_cli : INTEGER; saldo : REAL; ativo: INTEGER; END; contas = FILE OF conta; VAR con: contas; co: conta; K, I : INTEGER; ACHOU : BOOLEAN; NUM_CONTA: INTEGER; VALOR: REAL; BEGIN CLRSCR; ASSIGN(CON, 'C:CONTAS.DAT'); {$I-} RESET(CON); {$I+} IF IORESULT = 2 THEN REWRITE(CON); K := FILESIZE(CON); WRITE('DIGITE O NéMERO DA CONTA QUE SOFRERµ O SAQUE '); READLN(NUM_CONTA); ACHOU:=FALSE; WHILE NOT EOF(CON) DO BEGIN READ(CON,CO); IF (CO.NUMERO_CONTA = NUM_CONTA) AND (CO.ATIVO = 1) THEN BEGIN ACHOU:=TRUE; SEEK(CON,FILEPOS(CON)-1); WRITELN('SALDO ATUAL DA CONTA: ', CO.SALDO:7:2); WRITE('DIGITE O VALOR DO SAQUE '); READLN(VALOR); CO.SALDO:= CO.SALDO - VALOR; WRITE(CON,CO); SEEK(CON,FILEPOS(CON)+1); WRITELN('SAQUE EFETUADO COM SUCESSO'); END; END; IF ACHOU = FALSE THEN WRITELN('ESTA CONTA NÇO ESTµ CADASTRADA'); CLOSE(CON); READLN;
  • 16. END. 2.3. Exercícios Faça um programa em pascal que: 1. Crie um arquivo chamado ALUNOS.DAT, no qual cada registro será composto pelos seguintes campos: número, nome, curso, nota1, nota2, media. 2. Permita incluir 10 alunos no arquivo criado, lembrando que não podem existir dois alunos com o mesmo número. 3. Permita alterar todas as notas dos alunos. 4. Permita alterar uma nota especifica de um aluno especifico. 5. Permita alterar o curso de todos os alunos. 6. Permita alterar o curso de um aluno especifico. 7. Permita excluir todos os alunos. 8. Permita excluir apenas um aluno especifico. 9. Permita buscar por um nome de aluno especifico. 10. Permita emitir um relatório completo da ficha de um aluno especifico. 11. Permita emitir um relatório completo de todos os alunos. 12. Permita emitir um relatório com os nomes de todos os alunos reprovados (média menor que 7) 13. Permita emitir um relatório com os nomes de todos os alunos aprovados (média maior ou igual a 7). Para o desenvolvimento deste exercício use todos os recursos aprendidos: units, procedures, functions, swtch/case, etc. INSERINDO ALUNOS USANDO PROCEDURES PROGRAM EXEMPLO; USES CRT,WINCRT; TYPE aluno = RECORD numero : INTEGER; nome : STRING[255]; nota1, nota2, media : REAL; ativo: INTEGER; END; alunos = FILE OF aluno; //variável do tipo regitro cliente VAR alu: alunos; al: aluno; k, i, p, posicao, numero: INTEGER;
  • 17. achou : BOOLEAN; nome: STRING[255]; nota1, nota2, media: REAL; PROCEDURE INSERIRALUNO(); begin ASSIGN(alu, 'C:Userselaine.gattoDocumentsalunos2.txt'); {$I-} {comando utilizado para abrir arquivos já criados abre o arquivo ALU que já foi criado por ASSIGN } RESET(alu); {$I+} if(IORESULT = 2) then REWRITE(alu); k := FILESIZE(alu); //k tem o tamanho do arquivo WRITELN(' Digite o numero do aluno a ser incluido '); READLN(numero); {se o tamanho do arquivo for igual a zero, então o arquivo está vazio} if(K=0)then begin WRITELN(' Digite o numero do aluno a ser incluido '); READLN(numero); WRITELN(' Digite o nome do aluno a ser incluido '); READLN(nome); WRITELN(' Digite a primeira nota a ser incluido '); READLN(nota1); WRITELN(' Digite a segunda nota a ser incluido '); READLN(nota1); al.numero := numero; al.nome := nome; al.nota1 := nota1; al.nota2 := nota2; al.media := (nota1+nota2)/2; al.ativo := 1; //indica que este número de registro existe no arquivo WRITE(alu, al); WRITELN(' Aluno incuido com sucesso '); end {se o tamanho do arquivo for diferente de zero, então o arquivo não está vazio - cuidado para não apagar o que já existe!} else begin i := 0; achou := false; //seta a variavel auxiliar ACHOU como falsa
  • 18. posicao := 0; RESET(alu); //abre o arquivo existente //enquanto i menor que o tamanho do arquivo - 1 while( i <= (k-1))do begin //faz a leitura dos dados do arquivo READ(alu, al); { se o número digitado for igual ao número do registro e se ativo for igual a 1, então registro existe} if((al.numero = numero) AND (al.ativo = 1)) then begin achou := true; //encontrou o registro!!! seta como verdadeiro i := k + 2; end else begin {se o numero digitado for menor que o número do registro} if(numero<al.numero) then begin {retorna o número do registro onde o ponteiro está localizado seta a posicao do ponteiro para a posição atual} posicao := FILEPOS(alu)-1; i := k + 2; end else begin i := i + 1; SEEK(alu,i); //posiciona o ponteiro no registro desejado end; end; end; { se achou for verdadeiro, então o número do aluno já está cadastrado no arquivo, assim sendo, você não pode permitir que dois número iguais sejam gravados para alunos diferentes } IF achou = true THEN WRITELN(' Já existe um aluno cadastrado com esse número ') { se achou for falso, então, significa que o número que será cadastrado é diferente!} ELSE BEGIN IF(i = FILESIZE(alu))THEN BEGIN WRITELN(' Digite o numero do aluno a ser incluído '); READLN(nome); SEEK(alu, FILESIZE(alu)); WRITELN(' Digite o numero do aluno a ser incluido '); READLN(numero); WRITELN(' Digite o nome do aluno a ser incluido '); READLN(nome);
  • 19. WRITELN(' Digite a primeira nota a ser incluido '); READLN(nota1); WRITELN(' Digite a segunda nota a ser incluido '); READLN(nota1); al.numero := numero; al.nome := nome; al.nota1 := nota1; al.nota2 := nota2; al.media := (nota1+nota2)/2; al.ativo := 1; //indica que este número de registro existe no arquivo WRITE(alu, al); WRITELN(' Aluno incluido com sucesso '); END ELSE BEGIN p := FILESIZE(alu) - 1; WHILE(p >= posicao) DO BEGIN SEEK(alu,p); READ(alu,al); WRITE(alu,al); p := p - 1 ; END; SEEK(alu, posicao); WRITELN(' Digite o numero do aluno a ser incluido '); READLN(numero); WRITELN(' Digite o nome do aluno a ser incluido '); READLN(nome); WRITELN(' Digite a primeira nota a ser incluido '); READLN(nota1); WRITELN(' Digite a segunda nota a ser incluido '); READLN(nota1); al.numero := numero; al.nome := nome; al.nota1 := nota1; al.nota2 := nota2; al.media := (nota1+nota2)/2; al.ativo := 1; //indica que este número de registro existe no arquivo WRITE(alu, al); WRITELN(' Aluno incluido com sucesso '); END; END; END; READLN; //pula linha CLOSE(alu); //fecha o arquivo end; BEGIN CLRSCR; //limpa a tela