Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Documentos relacionados
ESTRUTURA DE DADOS -ARQUIVOS. Prof. Angelo Augusto Frozza, M.Sc.

Lista de Comandos: Arquivo texto e Binário

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

9/24/2014. Prof. André Backes

Arquivos O QUE É, COMO LER E MANIPULAR

UNIVERSIDADE ESTADUAL PAULISTA. Apostila Pascal Ed Prof. Dr. Galeno José de Sena DMA/FEG CAPÍTULO 8

Arquivos em C. Material da Prof. Ana Eliza

Computação Eletrônica. Arquivo

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

LINGUAGEM C: ARQUIVOS

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Este capítulo apresenta as técnicas de manipulação de arquivos texto, binários e suas principais funções de I/O.

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Métodos de Programação I (2005/2006) 1. Ficheiro (file)

Algoritmos e Técnicas de Programação

Algoritmos e Programação

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Unidade 4: Introdução à Lógica de Programação - Parte II

Estrutura de Dados Básica

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Construção de Algoritmos II Aula 04

Algoritmos e Estruturas de Dados I Linguagem C

Arquivos. Introdução à Programação SI1

Introdução à Programação

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO

Lógica de Programação e Algoritmos

Ambiente de Programação, rastreamento e entrada de dados. MCG114 Programação de Computadores I. Interpretador de Comandos. Interpretador de Comandos

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Fundamentos de Arquivos

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

Programação de Computadores I Estrutura de um Programa Procedimentos de Entrada e Saída PROFESSORA CINTIA CAETANO

Sumário. Ficheiros. Ficheiros

Arquivos. Arquivos correspondem a unidades de armazenamento, tipicamente gravados em unidades de memória secundária.

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

1/24 FICHEIROS DE TEXTO

Tutorial de Turbo Pascal

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Trabalhando com Arquivos

Disciplina de Algoritmos e Programação

Unidade 4: Introdução à Lógica de Programação - Parte II Português Estruturado - Versão Estácio Prof. Daniel Caetano

Programação: Vetores

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Algoritmos e Programação

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Faculdade de Computação

Engenharia Civil e Engenharia Básica Programação de Computadores Wedson Quintanilha da Silva

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos e Programação

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Programação I Funções. Prof. Carlos Alberto

<identificador>[<tamanho>]: <tipo>;

FACCAT Sistemas de Informação. Estruturas de Dados

Introdução aos Algoritmos

Algoritmos e Estruturas de Dados II IEC013

Algoritmos Lógica e Programação Prof. Me. Adelson Felipe Dias Nogueira

Projeto de Algoritmos

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Estruturas de Repetição

Aula Anterior. Decomposição algorítmica (continuação)

Sistemas Operacionais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Caracteres e Cadeias de Caracteres

Prática de Programação. Prof. Tiago A. E. Ferreira Aula 9 Estruturas, Uniões, Enumerações e Tipos Definidos pelo Usuário

Programação Computacional Aula 17: Manipulação de arquivos

Introdução aos Algoritmos

Sistemas Operacionais

Português Estruturado

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Capítulo 6: Arquivos

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

LINGUAGEM C: ARQUIVOS

Exercícios: Arquivos

Memória Volátil Em um computador, contrário a memória não volátil, é aquela cuja informação se perde ao se interromper o fluxo de corrente elétrica.

Algoritmos e Programação

Operações com Arquivos

Linguagem Computacional

Simulação de Caixa Automático

Unidade II FUNDAMENTOS DE SISTEMAS OPERACIONAIS. Prof. Victor Halla

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

3.1 - Funções para manipular dados de entrada e saída padrão

Aula 01 Algoritmos e lógica de programação e introdução ao C++

Linguagem C: Introdução

Métodos de Programação I Ana Maria de Almeida

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Considere uma máquina que utiliza uma palavra de 10 bits. Suponha o seguinte padrão de bits:

Transcrição:

Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I

Armazenamento de dados

Armazenamento de dados Você adquiriu muitas habilidades de programação. Os programas cresceram em tamanho e complexidade, mas você sempre descobriu uma forma interessante de lidar com estes desafios. Entretanto, na maioria das situações de uso dos seus programas, os dados precisam ser recalculados ou fornecidos como entrada a cada execução. O computador não consegue lembrar dos dados que foram processados ou fornecidos em execuções anteriores.

Armazenamento de dados Isto acontece porque até agora, tudo que você inseriu ou processou no computador, foi armazenado na memória volátil do sistema (RAM). Toda vez que seu programa encerra, ou o computador é desligado, os dados nesse tipo de memória são descartados. Esse tipo de memória não foi projetada para reter os dados.

Armazenamento de dados Quando os dados precisarem persistir no sistema, você deve enviá-los para um tipo de memória capaz de armazená-los pelo tempo que for necessário.

Arquivos Um conjunto de informações relacionadas mantido nesse tipo de memória recebe o nome de arquivo. A ideia é manter os dados disponíveis no sistema, sem que seja necessário obtê-los novamente por um processo mais lento e/ou propício a falhas (como a entrada humana, por exemplo)

Arquivos A memória em que os arquivos são armazenados é conhecida como memória secundária. unidades de disco rígido

Arquivos A unidade de processamento (CPU) não endereça diretamente dados que estão nos arquivos em memória secundária. Destinatário: Dados no arquivo Endereço:?

Arquivos Cada programa lê as informações gravadas no arquivo para locais na memória PRINCIPAL e assim, cada um poderá processá-las conforme a sua funcionalidade. Alternativamente, um programa pode transferir informações da memória PRINCIPAL para o arquivo. Ler do arquivo Escrever no arquivo

Buffers do arquivo X Arquivos Para realizar estas ações (leitura/gravação), os dados eventualmente são copiados para regiões temporárias de memória denominadas Buffers. Estas regiões funcionam como uma área intermediária entre o arquivo e a memória principal. Leitura: As informações do arquivo são copiada para um buffer, uma determinada quantidade de bytes de cada vez, estando, portanto, disponível ao programa para manipulação. Escrita: as informações são primeiramente acumuladas no buffer. Quando o buffer está cheio, seu conteúdo é escrito no arquivo. Buffer de leitura Buffer de escrita Ler do arquivo Escrever no arquivo

Buffers do arquivo X Arquivos Uma das formas de se obter/enviar informações dos/para os buffers é através das variáveis e expressões do seu programa: As linguagems de programação oferecem comandos de entrada e saída que permitem o intercâmbio de informações entre variáveis, expressões e os buffers. Y 12 msg Hi! Buffer de leitura Buffer de escrita Ler do arquivo Escrever no arquivo

Arquivos Um arquivo tem a propriedade de ser independente dos programas: É separado de qualquer programa e pode ser acessado e usado por muitos programas diferentes. Na maioria dos casos, usa-se um único programa para introduzir as informações no arquivo de dados e gravá-lo na memória secundária.

Arquivos Suponha que você tenha necessidade de criar um arquivo de dados, para guardar os nomes, endereços e telefones de seus amigos. Inicialmente, você precisará de um programa para introduzir as informações no arquivo e adicionar novos dados ao mesmo. Um outro programa poderá ser criado para listar as informações do arquivo. Outro permitirá você selecionar um número de telefone do arquivo usando o nome do amigo como critério de seleção. Você pode criar outro programa para mudar os endereços e os telefones. Outro para imprimir etiquetas contendo as informações do arquivo. As possibilidades continuam...

Arquivos O Turbo Pascal admite três tipos de arquivos: Arquivo typed (arquivo tipificado): pode conter praticamente todos os tipos de dados, menos o tipo FILE. Arquivo text (arquivo texto): pertence a um tipo predefinido do Pascal denominado text. Arquivo untyped (sem tipo): pode ser associado a qualquer arquivo, sendo que o tamanho do registro é de 128 bytes.

Arquivos Tipificados Pode armazenar um conjunto de reais, arrays, records, etc; Não se pode criar um arquivo de arquivo. Cada item de informação no arquivo, denominado registro, armazenará um valor do tipo declarado. Neste tipo de arquivo, os registros podem ser acessados diretamente quando se sabe sua posição entre os demais registros. Isto é feito informando-se o número do registro que se deseja acessar. Esse tipo de acesso é denominado randômico ou direto. Um arquivo tipificado é um arquivo randômico.

Arquivos Texto Os arquivos texto são armazenados em memória secundária como linhas de caracteres ASCII e só podem ser acessados de forma sequencial, isto é, só podem ser lidos ou escritos do início para o fim do arquivo. Em outras palavras, não existe uma forma de pular diretamente de um determinado registro para outro num ponto qualquer do arquivo.

Arquivos Texto Por essa razão, os arquivos sequenciais são melhor usados em aplicativos que executam tarefas sobre todo um conjunto de dados em vez de executá-las sobre um determinado registro.

Arquivos Sem Tipo As operações de entrada e saída usando um arquivo sem tipo transferem dados diretamente de um arquivo em memória secundária para uma variável de memória e vice-versa, sem passar pelo buffer, o que, além de economizar espaço na memória, também torna a operação mais rápida. Entretanto, seu uso é limitado. Quando um arquivo é aberto apenas para uma operação de remoção ou troca de nome, duplicação do arquivo, é aconselhável usar um arquivo sem tipo.

Manipulação de arquivos em Pascal Os procedimentos para manipulação de qualquer arquivo são: Também chamado de manipulador de arquivo Definir um identificador de arquivo (que é uma espécie de apelido que você usa para se referir ao arquivo) Associar o manipulador de arquivo ao nome do arquivo na memória secundária. Abrir o arquivo, para leitura ou para escrita (ou para ambos). Fechar o arquivo quando o processo terminar.

Manipulação de arquivos em Pascal O Pascal usa como padrão a palavra reservada text para a declaração de manipuladores de arquivos de texto: var arq_alunos: text; Os arquivos-texto são definidos inicialmente com memória temporária (buffer) de 128 bytes. Isto quer dizer que o Pascal trabalha com 128 bytes de informações de cada vez para esse tipo de arquivo.

Manipulação de arquivos em Pascal Para estabelecer o tamanho do buffer, basta colocar o número de bytes desejado entre colchetes depois da palavra text, na declaração um manipulador de arquivo: var arq_alunos: text; arq_func: text[512];

Manipulação de arquivos em Pascal Declarar só o manipulador do arquivo pode não ser suficiente. Seu programa ainda precisa de variáveis: os dados estão na memória e o jeito mais prático de manipulá-los é através das boas e velhas variáveis. Para ler uma informação de um arquivo, você deverá escolher uma variável para guardá-la. Muitas vezes você terá que indicar a variável que possui a informação a ser gravada no arquivo. Além disso, o manipulador do arquivo carrega consigo os dados extraídos do arquivo. Ele é utilizado quando se deseja fazer uma leitura, escrita ou consulta da situação em um determinado arquivo.

Manipulação de arquivos Antes de abrir um arquivo para leitura ou para escrita, você precisa associar o nome do arquivo na memória secundária a um manipulador de arquivo no seu código. Só será possível manipular os dados do arquivo após esta ação, também denominada assinalamento. A função predefinida que executa esta tarefa é assign. Não deve ser usada em arquivos que já estejam em uso.

Manipulação de arquivos em Pascal Utilize o comando Assign: assign(arq_alunos, alunos.dat ); A partir desse comando, toda referência a arq_alunos no programa será dirigida ao arquivo em memória secundária chamado alunos.dat. Caso um programa tenha mais de um manipulador de arquivo, teremos que assinalar individualmente cada variável, isto é, teremos tantos assign quanto forem as variáveis de arquivo.

Manipulação de arquivos em Pascal Assinalar uma variável a um arquivo é criar um buffer específico para aquela variável. O default (padrão) de arquivos que podem ser abertos simultaneamente no Pascal é 16.

Manipulação de arquivos em Pascal O Pascal fornece três funções diferentes para abertura de um arquivo: rewrite append reset

Manipulação de arquivos em Pascal Rewrite Objetivo e características: Cria o arquivo em memória secundária com o nome associado através do comando assign. Caso já exista um arquivo de mesmo nome no local associado, ele será sobrescrito com um novo arquivo vazio (atenção ao utilizar este comando!). Após o comando rewrite, o arquivo estará aberto e poderá ser usado: Arquivos de texto: apenas para gravação com os comandos write e writeln; Arquivos tipificados: para gravação com o comando write e para leitura com o comando read.

Manipulação de arquivos em Pascal Rewrite Sintaxe: rewrite(manipulador de arquivo); Exemplo: rewrite(arq01);

Manipulação de arquivos em Pascal Reset Objetivo e características: Abre um arquivo já existente e o disponibiliza: Arquivos de texto: apenas para leitura com os comandos read e readln; Arquivos tipificados: para leitura com o comando read e para gravação com o comando write.

Manipulação de arquivos em Pascal Reset Sintaxe: reset(manipulador de arquivo); Exemplo: reset(arq01);

Manipulação de arquivos em Pascal Append (somente arquivos texto) Objetivo e características: Abre um arquivo-texto já existente, e o disponibiliza para adicionar novos dados a partir do fim do arquivo através dos comandos write ou writeln. Ocorre um erro de I/O (entrada e saída) se o arquivo não existir na memória secundária.

Manipulação de arquivos em Pascal Append Sintaxe: append(manipulador de arquivo); Exemplo: append(arq01);

Manipulação de arquivos em Pascal Um determinado arquivo-texto pode ser aberto para leitura ou gravação, mas não para ambas operações ao mesmo tempo.

Manipulação de arquivos em Pascal CLOSE é um comando muito importante, pois é usado para manter a integridade e exatidão dos arquivos de dados. Este comando força a transferência do conteúdo do buffer para o arquivo, mesmo que o buffer não esteja cheio. O comando write/writeln não garante que os dados foram gravados na memória secundária!! Logo, antes de finalizar o uso de um arquivo (ou encerrar a execução do programa) é de extrema importância executar este comando. Caso o arquivo não seja fechado, pode haver perda de dados.

Manipulação de arquivos em Pascal Você agora deve escrever um programa capaz de gravar informações em um arquivo texto e outro programa para exibir cada linha desse arquivo na tela.

Manipulação de arquivos em Pascal Você precisa declarar o manipulador do arquivo e (opcionalmente) uma variável cujo valor será gravado no arquivo. Program Ola_Mundo_arquivo; var F: Text; frase: String;

Manipulação de arquivos em Pascal O manipulador do arquivo deve ser associado ao nome real do arquivo na memória secundária. Program Ola_Mundo_arquivo; var F: Text; frase: String; begin assign(f, 'meuarq.txt'); Coloque aqui o nome real de seu arquivo. O manipulador do arquivo é como um apelido que você usará para fazer qualquer referência ao verdadeiro arquivo. meuarq.txt Agora, também conhecido por F.

Manipulação de arquivos em Pascal O segundo parâmetro do comando assign (que é o verdadeiro nome do arquivo) é na realidade uma string qualquer, que deve indicar um caminho completo (local + nome do arquivo) em uma unidade de memória secundária ou apenas o nome do arquivo. Quando apenas o nome é indicado, o programa tentará abrir o arquivo no diretório corrente (onde se dá a execução do programa). Caso queira oferecer a possibilidade do usuário escolher o local e o nome do arquivo, você pode passar ao comando assign uma varável como o segundo parâmetro em vez da string constante.

Manipulação de arquivos em Pascal Exemplo: O usuário poderá digitar um endereço completo para o arquivo. Ex.: c:\textos\meudoc.txt Torça para este caminho existir (c:\textos\) Ou apenas um nome válido. Ex.: meudoc.txt Var F: Text; local_e_nome: String; begin readln(local_e_nome); assign(f, local_e_nome); Sem apóstrofes, isto não é uma constante string, mas uma variável. Arquivo? Agora, também conhecido por F.

Manipulação de arquivos em Pascal O comando rewrite cria um NOVO arquivo vazio e o deixa pronto para receber dados. Para criar um novo arquivo e abrí-lo para gravação, use o comando rewrite. O arquivo é conhecido em seu programa pelo apelido dele. (o manipulador do arquivo) Program Ola_Mundo_arquivo; var F: Text; frase: String; begin assign(f, 'meuarq.txt'); rewrite(f); IMPORTANTE Use o comando REWRITE somente para gravar (CRIAR) um NOVO arquivo. Caso o verdadeiro nome de arquivo já exista no local em que seu programa está sendo executado, um novo arquivo VAZIO substituirá o arquivo EXISTENTE. Um arquivo vazio foi criado com o nome meuarq.txt

Manipulação de arquivos em Pascal Tendo a informação disponível em algum local, grave-a no arquivo usando os comandos write ou writeln: Em arquivos texto, o comando write grava as informações uma após a outra, sempre que é executado sem necessariamente inserir o caractere de nova linha. Já o comando writeln, escreve a informação no arquivo e pula de linha. (A próxima escrita será feita na próxima linha do arquivo). Após obter alguma informação através da variável frase, você quer gravá-la no arquivo. Program Ola_Mundo_arquivo; var F: Text; frase: String; begin assign(f, 'meuarq.txt'); rewrite(f); readln(frase); writeln(f, frase); O comando de escrita enviará os dados para o buffer do arquivo F. Coloque aqui a informação a ser gravada no arquivo.

Manipulação de arquivos em Pascal Quando não for mais necessário utilizar o arquivo, feche-o com o comando Close. Feche o arquivo antes de sair. Program Ola_Mundo_arquivo; var F: Text; frase: String; begin end. assign(f, 'meuarq.txt'); rewrite(f); readln(frase); writeln(f, frase); close(f); Assim você solicita que toda informação no buffer de escrita ainda não enviada para o arquivo seja gravada. Esquecer de usar adequadamente o comando CLOSE antes de encerrar o programa pode (em alguns casos) ocasionar perda de dados (E se isto acontecer não há como recuperá-los facilmente na RAM). Fique atento: o comando não garante obrigatoriamente que tudo foi gravado. outras falhas do sistema (arquivo excluído por outro programa, falta de espaço em disco, etc...) também podem gerar erros de gravação no arquivo.

Manipulação de arquivos em Pascal Mas este programa só grava uma frase no arquivo! Utilize iterações para gravar várias informações. Enquanto a frase digitada não for igual a fim, grave-a em uma linha separada do arquivo. Program Ola_Mundo_arquivo; var F: Text; frase: String; assign(f, 'meuarq.txt'); rewrite(f); readln(frase); while frase <>'fim' do begin writeln(f, frase); readln(frase); {leia a próxima frase} end; close(f); end.

Manipulação de arquivos em Pascal O que esta modificação faz a seu arquivo?? Alguém modificou o comando de escrita! Program Ola_Mundo_arquivo; var F: Text; frase: String; assign(f, 'meuarq.txt'); rewrite(f); readln(frase); while frase <>'fim' do begin write(f, frase + ' @ '+': '+':)'); readln(frase); {leia a próxima frase} end; close(f); end.

Manipulação de arquivos em Pascal Para o programa que exibe as linhas do arquivo, você precisa declarar o manipulador do arquivo e uma variável que receberá a informação de cada linha. Program Ola_Mundo_arquivo; var F: Text; linha: String;

Manipulação de arquivos em Pascal Realize o assinalamento e abertura do arquivo. Program Ola_Mundo_arquivo; var F: Text; linha: String; begin assign(f, 'meuarq.txt'); reset(f); O arquivo será associado ao manipulador de arquivo chamado F

Manipulação de arquivos em Pascal O comando de leitura a partir de arquivos, é o read/readln. Como você precisa ler várias linhas (uma de cada vez), utilize o comando readln dentro de uma repetição. Ele funcionará como um cortador de papel, recortando uma linha inteira de seu arquivo cada vez que for chamado. O arquivo inteiro deve ser enviado ao cortador... Cortador de papel while...do Observação: diferente de um cortador real, o comando de leitura de linha (readln) não destruirá os dados do seu arquivo. Ele apena extrai linhas. Para recortar as linhas uma a uma, você precisará executar o comando várias vezes até atingir a última linha do arquivo.

Manipulação de arquivos em Pascal Mas quando o seu cortador de papel deverá parar de puxar o papel? (como saber se a última linha foi alcançada?) Para evitar uma tentativa de leitura de dados além do fim de um arquivo pode-se utilizar a função EOF antes de se executar qualquer comando de leitura: Esta função retorna o valor lógico TRUE quando a posição de acesso atual for o fim do arquivo. Neste caso, apenas gravação de novos dados seria coerente. Retornando FALSE, espera-se que ainda existam dados (registros) além da posição atual no arquivo.

Manipulação de arquivos em Pascal A função EOF é uma das estratégias mais simples de controlar a leitura de dados em um arquivo texto, já que a linguagem Pascal não dispõe de recursos predefinidos de localização para este tipo de arquivo. Para repetir até o fim do arquivo, use o comando while verificando a situação da função EOF (seu arquivo)

Manipulação de arquivos em Pascal Acrescentando o cortador while not(eof(f)) do ao seu código: Recorte e exiba as linhas até atingir o fim do arquivo. Program Ola_Mundo_arquivo; var F: Text; linha: String; begin assign(f, 'meuarq.txt'); reset(f); while not (EOF(F)) do begin readln(f,linha); writeln(linha); end;

Manipulação de arquivos em Pascal Por fim, o comando close garante que nenhuma operação entre os buffers e seu arquivo ficou pendente. Feche o arquivo antes de sair. Program Ola_Mundo_arquivo; var F: Text; linha: String; begin assign(f, 'meuarq.txt'); reset(f); while not (EOF(F)) do begin readln(f,linha); writeln(linha); end; close(f); end.

Arquivos tipificados Os arquivos tipificados permitem guardar informações nos arquivos de forma mais prática, quando não se deseja apenas gravar informação textual.

Arquivos tipificados Os juízes da maratona de surf de Alegre resolveram armazenar em um arquivo os resultados de todos os participantes.

Arquivos tipificados Você pode gravar as informações em um arquivo texto. Porém, quando for recuperá-las para uso, terá mais trabalho para separar as notas dos nomes. Além disso, toda informação lida a partir de um arquivo texto será lida como uma string de caracteres. Consequentemente, além de do trabalho de separar os nomes e as notas em variáveis strings diferentes, mais um comando será necessário, para converter as strings nas variáveis que contém as notas em valores numéricos.

Arquivos tipificados Os arquivos tipificados permitem que a gravação e leitura de dados em arquivo, usando diferentes tipos para cada fração de informação. Assim, no caso da maratona de surf, você poderá gravar o nome como uma string e as notas como valores numéricos. Cada participante terá seu nome e nota em um registro separado no arquivo. E quando for ler do arquivo, nenhuma conversão de dado será necessária.

Arquivos tipificados A forma mais simples de declarar um arquivo para esta tarefa é definir um tipo para os registros do arquivo. Você irá declarar manipuladores de arquivo e quantas variáveis forem necessárias como sendo do tipo registro que você criou. Type meu_tipo = registro....... fim Var arq_tipo: FILE of meu_tipo; v1,v2: meu_tipo;

Arquivos tipificados Definindo o tipo registro para a o programa da maratona de surf. Program surf_alegre; Type T_Reg_Surf = record nome: string; nota: real; end; Var F: File of T_Reg_Surf; reg: T_Reg_Surf; Para facilitar sua vida, defina um TIPO para os registros do arquivo. Cada registro possuirá um nome e uma nota (os participantes possuirão estas informações) Declare o manipulador do arquivo e uma variável para poder usar os dados (leitura/gravação)

Arquivos tipificados Faça o assinalamento entre o arquivo o manipulador do arquivo e crie um novo arquivo abrindo-o para gravar os novos registros. Program surf_alegre; Type T_Reg_Surf = record nome: string; nota: real; end; var F: file of T_Reg_Surf; reg: T_Reg_Surf; begin assign(f, 'results.dat'); rewrite(f); Nome Nota results.dat

Arquivos tipificados Grave registro por registro até que o usuário informe a condição de parada (para este exemplo, utilize nome = fim ). Program surf_alegre; Type T_Reg_Surf = record nome: string; nota: real; end; var F: file of T_Reg_Surf; reg: T_Reg_Surf; begin assign(f, 'results.dat'); rewrite(f); readln(reg.nome); while (reg.nome<>'fim') do begin readln(reg.nota); write(f,reg); readln(reg.nome); end; Nome Nota Johnny 8.65 Juan 9.12 Joseph 8.45...... results.dat

Arquivos tipificados Feche o arquivo quando terminar. Program surf_alegre; Type T_Reg_Surf = record nome: string; nota: real; end; var F: file of T_Reg_Surf; reg: T_Reg_Surf; begin assign(f, 'results.dat'); rewrite(f); readln(reg.nome); while (reg.nome<>'fim') do begin readln(reg.nota); write(f,reg); readln(reg.nome); end; close(f) end. Nome Nota Johnny 8.65 Juan 9.12 Joseph 8.45...... results.dat

Arquivos tipificados Para abrir um arquivo e exibir os registros, o processo é similar ao que foi feito com o arquivo texto. Basta utilizar a função EOF para saber que não há mais registros a serem acessados. Entretanto, os arquivos tipificados, quando abertos com o comando reset, permitem a gravação de novos dados em qualquer posição existente do arquivo. Isto facilita operações de alteração e inclusão de novos registros. Para eliminar um registro de um arquivo tipificado, o arquivo deve ser copiado em um novo arquivo sem o registro a ser excluído. (não há como excluir diretamente um registro, diminuindo o tamanho do arquivo) Nome Nota Johnny 8.65 Juan 9.12 Joseph 8.45...... results.dat

Posição de acesso em um arquivo Os arquivos são sequências de bytes. O primeiro byte está na posição 0, o segundo na posição 1, etc. Todo arquivo usado no programa tem um "cursor" interno que indica a posição do próximo byte a ser lido ou gravado com os comandos read, write, etc. Este cursor que indica a posição corrente no arquivo costuma ser chamado de ponteiro do arquivo.

Posição de acesso em um arquivo Quando abrimos um arquivo, o ponteiro vai normalmente para posição 0. A cada comando de leitura ou gravação, o cursor avança o número de bytes correspondentes ao que foi gravado (ou lido).

Posição de acesso em um arquivo Representação gráfica da ideia de ponteiro (cursor) para um arquivo de texto: O presente arquivo de texto contem as informações aqui registradas na forma de uma sequencia de bytes codificados de acordo com o padrão ASCII... No exemplo acima, o cursor do arquivo está no 23º caractere (ou byte) da linha atual, que é onde ocorre a o caractere t da palavra texto. O número de linha não pode ser definido sem o uso de técnicas que verificam a ocorrência de caracteres especiais no arquivo texto.

Posição de acesso em um arquivo No Windows, uma linha em um arquivo texto é simplesmente uma sequencia de 0 ou mais caracteres que ocorrem até a posição onde ocorrem dois caracteres especiais (2 bytes) que encerram uma linha: Um CR (Carriage Return, ou retorno de carro, valor 0x0D, ou 13) seguido de um LF (Line Feed, ou "avanço de linha", valor 0x0A ou 10). Esta é a primeira linha Passamos para a segunda linha Aí vem a terceira... Neste exemplo, o fim da linha ocorre logo após o 23º byte (ou a letra a da palavra linha )

Posição de acesso em um arquivo Em arquivos texto, não é difícil realizar leituras de porções de comprimento variáveis de dados. Em arquivos tipificados, o acesso padrão é feito em porções de tamanho fixo de dados (os registros geralmente são estruturas de tamanho fixo). Como exemplos, em um arquivo texto poder-seia ter as seguintes situações: Caso seja feita uma leitura dos 5 primeiros caracteres em uma linha, o próximo acesso se dará do sexto caractere em diante na mesma linha, caso existirem. Caso seja lida uma linha inteira, o próximo acesso será no início da próxima linha;

Posição de acesso em um arquivo Em arquivos tipificados, o pascal permite o acesso direto a qualquer registro, além do acesso sequencial. Isto é feito com uma função específica, na qual indica-se a posição relativa do registro, que é um número inteiro entre 0 e n-1, sendo n o número total de registros do arquivo. De modo geral, em um arquivo tipificado ocorre o seguinte: Uma leitura/gravação no registro de índice n, acarreta que o próximo acesso (leitura/gravação) será realizado em um registro de índice n+1.

Manipulação de arquivos em Pascal Representação gráfica da ideia de ponteiro para um arquivo de tipificado: Nº do Registro Valor 0 Fulano 1 Beltrano de Jacoiba 2 Ciclano de jatobá...... No exemplo acima, a posição atual de acesso (ou ponteiro do arquivo), representada pela seta azul, é o registro de posição 1.

Vale lembrar Acessos de leitura além da posição final de um arquivo fazem seu programa terminar com uma mensagem de erro.

Manipulação de arquivos em Pascal Nos arquivos tipificados além da função EOF existem outras funções que podem facilitar o acesso aos dados de maneira correta.

Manipulação de arquivos em Pascal Funções para manipulação de arquivos tipificados: filepos(manipulador de arquivo) Retorna um valor Longint (inteiro longo) que é a posição corrente do ponteiro do arquivo (o número de registro atual); filesize(manipulador de arquivo) Retorna um valor Longint (inteiro longo) que o número total de registros contidos no arquivo; Seek(manipulador de arquivo, pos) Posiciona o ponteiro do arquivo na posição indicada pelo parâmetro pos (um valor Longint);

Manipulação de arquivos em Pascal Dado um arquivo tipificado, não vazio, identificado pelo manipulador de arquivo meuarq, qual o efeito da execução da seguinte instrução: seek(meuarq,filesize(meuarq)-1);?

Manipulação de arquivos em Pascal As tarefas com arquivos podem ser modularizadas. Exemplo, elaborar um programa para gerenciar um arquivo com os dados do problema do placar da maratona de surf. O programa deve oferecer as seguintes funções ao usuário: Criar um novo arquivo em branco; Cadastrar novos registros; Realizar busca por nome e Sair do programa.

Referências FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Algoritmos estruturados. 3ed, Ed. LTC, 1999. ISBN: 9788521611806. GUIMARÃES, A. M.; LAGES, N. A. C.; Algoritmos e estruturas de dados. 1ed, Ed. LTC, 1994. ISBN: 9788521603788. FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Pascal estruturado. 3ed, Ed. LTC, 1999. ISBN: 9788521611745. Velloso, F. C.; Informática: Conceitos Básicos. 7ed, Ed. Campus, 2004. ISBN: 9788535215366. http://www.hkbu.edu.hk/~bba_ism/ism2110/index.htmj MAURI, G. R.; Notas de aula de Programação I. 2010. Ajuda do Turbo Pascal 7.0