Computação Eletrônica. Arquivo

Documentos relacionados
Lista de Comandos: Arquivo texto e Binário

Computação Eletrônica

Computação L2. Arquivos. Observação: Material da Disciplina Computação Eletrônica CIN/UFPE.

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

Computação Eletrônica

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

Tutorial de Turbo Pascal

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

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

Computação Eletronica: Arquivos (Introdução)

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

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

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

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

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

PROG. DE COMPUTADORES II SI Arquivos

Operações em Arquivos. MC102 Felipe Bergo

1/24 FICHEIROS DE TEXTO

Manipulação de Arquivos

Manipulação de Arquivos em Pascal

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.

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Agregado Homogêneo e Heterogêneo

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

9/24/2014. Prof. André Backes

Agregado Homogêneo e Heterogêneo. Agregado Homogêneo. Agregado Homogêneo 28/11/2015

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Construção de Algoritmos II Aula 04

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO

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

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

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

ESTRUTURA HOMOGÊNEA: VETORES/ARRAYS

Modularização. Prof. Antonio Almeida de Barros Junior

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

Arquivos em C. Material da Prof. Ana Eliza

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

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

10) REGISTROS : Exemplos: var N,I: integer; A,B,C: real; CHAVE: boolean; CARAC: char; V: array[1..20] of real; M: array[1..10,1..

Programação de Computadores:

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

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

Sumário. Ficheiros. Ficheiros

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

Linguagem Computacional

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

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

Fundamentos de Arquivos

Algoritmos e Estruturas de Dados II IEC013

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

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Rosane Minghim e Guilherme P. Telles

Computação. Introdução a C e Variáveis Inteiras

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

CURSO de CIÊNCIA DA COMPUTAÇÃO NITERÓI - Gabarito

Linguagem de programação: Pascal

Linguagens de Programação

Algoritmos e Programação

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA CONTROLE DE ENTRADA E SAÍDA DE DADOS JAVA.

5. NOÇÕES DE PROGRAMAÇÃO

FACCAT Sistemas de Informação. Estruturas de Dados

12 - Dados Estruturados Vetores, Matrizes e Strings

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP

b) Quantos bits são necessários para o registrador de instruções?

Programação de Computadores II

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Análise Semântica e Tratamento de Erros Dependentes de Contexto

Aula 26: Arquivos de texto

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Introdução ao Fortran 90. Aula 3

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

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

LINGUAGEM C: ARQUIVOS

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

Trabalhando com Arquivos

= = = = = = = = = = = = = = = =

PHP INTRODUÇÃO FOPEN FOPEN

Computação I. Prof. Miguel Elias Mitre Campista.

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

Exercícios. Resposta: a) var valor: real; i: integer. b)

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

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

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Programação II. Arquivos - Conceito. Arquivos

Arquivos. INF1005 Programação I Profa. Simone D.J. Barbosa sala 410 RDC

Arquivos. Programação de Computadores I. Natália Batista.

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Memória Secundária x Principal. Informação mantida em memória secundária (externa)

Aula 4 Introdução ao C

Aula 07. Representação da Informação. Prof. Dr. Dilermando Piva Jr.

Geração de Código para LALG

Capítulo 3 CARACTERÍSTICAS GERAIS DA LINGUAGEM PASCAL 1. INTRODUÇÃO

1. [VETOR][SALA] Cálculo da média aritmética de 10 valores armazenados em um vetor.

1 Escrita de Arquivos Binário

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).

Variáveis e Memória. Revisão. Conceitos. Operações sobre a memória

Transcrição:

Computação Eletrônica Arquivo

Memória RAM (1 Giga Byte) Processador (Intel Pentium) Disco ou (100 Giga Bytes) Por que temos 2 memórias? : permanente (pode desligar o computador), barato e lento O é representado por um cilindro RAM: volátil (ao desligar o computador, perde tudo), caro e rápido 2

Até o momento, todos os programas Pascal usavam apenas a memória RAM As variáveis são armazenadas na memória RAM 3

Suponha um programa Pascal que lê o nome e a nota de 70 alunos armazenando em 2 vetores. Se o computador for desligado no meio da digitação, todos os dados são perdidos Pior: assim que o programa terminar, todos os dados são perdidos também Como fazer para salvar estas informações no disco? Ou seja, como manipular arquivos em Pascal? 4

Não confunda: Arquivos que contém um programa Pascal Este arquivos, por exemplo, helloworld.pas, são compilados (traduzidos) para helloworld.exe. Se você der 2 cliques em helloworld.exe o programa executará. Chamaremos estes arquivos de arquivos Pascal Arquivos criados por um programa Pascal São arquivos que contém dados como inteiros, reais, nome de aluno, notas, número de matrícula, sócios de clubes, etc. Não podem ser lidos pelo Windows. Duplo clique neles não resultam em nada. Apenas programas Pascal conseguem ler estes arquivos (acessar suas informações). Chamaremos estes arquivos de arquivos Arq 5

No disco (ou ) é onde ficam armazenados os arquivos Todas estas pastas e estes arquivos estão armazenados no disco. Ou seja, você pode desligar o computador sem perder esses dados. 6

Pascal consegue criar arquivos Todo arquivo Arq possui um tipo Por exemplo, arquivo do tipo inteiro, ou arquivo do tipo real, etc. Um arquivo do tipo inteiro, armazena vários números inteiros Um arquivo do tipo real, armazena vários números reais Um arquivo do tipo aluno armazena vários alunos 7

Todo arquivo Arq também possui um nome (assim como todo arquivo de qualquer computador) Todo arquivo Arq possui, no final, um símbolo de fim de arquivo (eof) 8

Exemplo de um arquivo Arq cujo nome é arquivopascal.arq Este arquivo pode ser salvo em qualquer pasta do seu Windows. No caso abaixo, a pasta é My Documents Como este arquivo foi parar aí? Calma... Aguarde os próximos slides. 9

O que contém um arquivo de inteiros? Se pudéssemos ver seu conteúdo, seria mais ou menos assim: Arquivo de inteiros que contém os números 15, 3 e 1. 15 3 1 eof arquivopascal.arq eof: Símbolo especial que indica o fim do arquivo. Todo arquivo Pascal tem este símbolo no final 10

Como manipular arquivos Arq em Pascal? 1. Declare uma variável do tipo file of <tipo> Por exemplo, um arquivo de inteiros é uma variável do tipo file of integer 2. Associe o nome do arquivo no à variável declarada 3. Prepare o arquivo para ser usado 4. Leia ou escreva dados na variável declarada 11

1. Declare uma variável do tipo file of <tipo> Program arquivo1; var xyz: file of integer;... Esta declaração diz ao Pascal: a variável xyz será usada para manipular um arquivo de inteiros. O programa continua nos próximos slides. Dependendo do problema, podemos declarar variáveis do tipo file of real, file of boolean, file of String, file of socio (onde socio é um registro), etc. 12

2. Associe o nome do arquivo no à variável declarada Program arquivo1; var xyz: file of integer; n: integer; Assign(xyz,'arquivoPascal.arq');... Este comando apenas diz ao Pascal: a variável xyz será usada para manipular um arquivo cujo nome no é arquivopascal.arq. Não confunda! O nome da variável do tipo file é diferente do nome do arquivo no. Pascal precisa saber como estes nomes se relacionam. 13

Este slide assume que o arquivo arquivopascal.arq está no 3. Prepare o arquivo para ser usado Program arquivo1; var xyz: file of integer; n: integer; Assign(xyz, arquivopascal.arq'); Reset(xyz); reset(xyz)prepara o arquivo arquivopascal.arq para ser utilizado. Pascal localiza o arquivo no e deixa seu conteúdo disponível para manipularmos. Dizemos que reset abre o arquivo.... reset(xyz) xyz 15 3 1 eof arquivopascal.arq 14

Este slide assume que o arquivo arquivopascal.arq está no 4. Leia ou escreva dados na variável declarada Program arquivo1; var xyz: file of integer; n: integer; Assign(xyz, arquivopascal.arq'); Reset(xyz);... xyz 15 3 1 eof arquivopascal.arq Um arquivo é uma lista de elementos. No nosso exemplo, um arquivo é uma lista de inteiros. Para manipular arquivos, Pascal automaticamente define a posição nessa lista em que o arquivo se encontra. Após o reset, a posição é a zero. No exemplo, a posição zero contém o número 15. 15

Este slide assume que o arquivo arquivopascal.arq está no 4. Leia ou escreva dados na variável declarada Program arquivo1; var xyz: file of integer; n: integer; Assign(xyz, arquivopascal.arq'); Reset(xyz); read(xyz,n); read(xyz,n) lê o número na posição corrente de xyz (no caso, 15) e copia este valor para a variável n. Pascal automaticamente adianta a posição do arquivo. n 0 xyz 15 3 1 eof read(xyz,n) n 15 xyz 15 3 1 eof Memória RAM arquivopascal.arq Memória RAM arquivopascal.arq 16

Este slide assume que o arquivo arquivopascal.arq está no 4. Leia ou escreva dados na variável declarada Program arquivo1; var xyz: file of integer; n: integer; Assign(xyz, arquivopascal.arq'); Reset(xyz); read(xyz,n); write(xyz,n); write(xyz,n) grava o valor de n na posição corrente de xyz. Pascal automaticamente adianta a posição do arquivo. n 15 xyz 15 3 1 eof write(xyz,n) n 15 xyz 15 15 1 eof Memória RAM arquivopascal.arq Memória RAM arquivopascal.arq 17

Este slide assume que o arquivo arquivopascal.arq está no Ao final do programa, feche os arquivos. Program arquivo1; var xyz: file of integer; end. n: integer; Assign(xyz, arquivopascal.arq'); Reset(xyz); read(xyz,n); write(xyz,n); close(xyz); xyz 15 3 1 eof arquivopascal.arq close(xyz) close(xyz) diz a Pascal que o arquivo não será mais manipulado. 18

E se quisermos criar um novo arquivo? var xyz: file of integer; Assign(xyz, arquivopascal.arq'); Rewrite(xyz);... rewrite(xyz) eof xyz Rewrite(xyz) cria no um arquivo vazio (só com o eof) cujo nome é arquivopascal.arq. A posição do arquivo é a zero, que aponta para eof. arquivopascal.arq 19

E se quisermos criar um novo arquivo? var xyz: file of integer; Assign(xyz, arquivopascal.arq'); Rewrite(xyz);... rewrite(xyz) eof xyz arquivopascal.arq Rewrite(xyz) cria no um arquivo vazio (só com o eof) cujo CUIDADO: nome é Se um arquivo chamado arquivopascal.arq. A arquivopascal.arq já posição do arquivo é a existir zero, no que, aponta ele será para apagado eof. e substituído pelo novo arquivopascal.arq vazio. 20

A posição de um arquivo é um número que vai de 0 (início) à N (eof). xyz 30 2 Eof Pos 0 1 2 arquivopascal.arq 21

A função filepos(arquivo) retorna a posição corrente do arquivo (sem alterá-la). No exemplo abaixo, filepos(xyz) retorna o número 1. xyz 30 2 Eof Pos 0 1 2 arquivopascal.arq 22

A função seek(arquivo,n) posiciona o arquivo na posição n. O exemplo abaixo seek(xyz,0) leva o arquivo para a posição zero. xyz 30 2 Eof Pos 0 1 2 seek(xyz,0) xyz 30 2 Eof Pos 0 1 2 arquivopascal.arq arquivopascal.arq 23

Devemos ter cuidado ao atualizar um arquivo. Atualizar significa ler um dado do arquivo, modificá-lo e gravar a modificação. Como read automaticamente avança a posição corrente do arquivo, temos que sempre voltar uma posição antes de usar write. 24

Programa que lê o primeiro número de um arquivo e atualiza-o com seu valor mais 5. Program atualiza; var arquivo: file of integer; n, pos: Integer; Assign(arquivo, arquivodeinteiros.dad ); Reset(arquivo); Read(arquivo, n); {n recebe o primeiro numero do arquivo.} {Porem, read avancou a posicao do arquivo. Temos que voltar 1 posicao} pos := filepos(arquivo); {guarda em pos a posicao atual do arquivo} pos := pos - 1; {calcula a posicao anterior} seek(arquivo,pos); {posiciona o arquivo na posicao anterior} n := n+5; {calcula o novo valor de n} write(arquivo,n); {atualiza n} close(arquivo); end. 25

{Criar um arquivo de inteiros.} Program arquivo1; var arquivo: file of integer; Assign(arquivo,'meuPrimeiroArquivo.arq'); end. Rewrite(arquivo); Close(arquivo); 26

{Cria e grava um arquivo de inteiros.} Program arquivo2; var arquivo: file of integer; i,n: integer; Assign(arquivo,'quadrados.arq'); Rewrite(arquivo); i := 1; while (i <= 50) do end; n := i * i; write(arquivo,n); i := i + 1; close(arquivo); end. 27

{Lê um arquivo de inteiros.} Program arquivo3; var arquivo: file of integer; end. i,n: integer; Assign(arquivo,'quadrados.arq'); Reset(arquivo); while not(eof(arquivo)) do end; readln; read(arquivo,n); writeln(n); Close(arquivo); 28

{Atualiza um arquivo de inteiros.} Program arquivo3_5; var arquivo: file of integer; i,n,dobro: integer; Assign(arquivo,'quadrados.arq'); Reset(arquivo); while not(eof(arquivo)) do end; read(arquivo,n); dobro := 2 * n; seek(arquivo,filepos(arquivo)-1); write(arquivo,dobro); Close(arquivo); end. 29

{Cria um arquivo com registros} { Program arquivo4; type aluno = record mat: integer; cpf: integer; end; var arquivo: file of aluno; a: aluno; i: integer; Assign(arquivo,'alunos.arq'); Rewrite(arquivo); i := 1; while (i <= 5) do write('entre matricula e cpf: '); readln(a.mat,a.cpf); write(arquivo,a); end; close(arquivo); end. 30

{Consulta um arquivo pela mat, retornando a mat e cpf} Program arquivo6; type aluno = record mat: integer; cpf: integer; end; var arquivo: file of aluno; a: aluno; matricula: integer; Assign(arquivo,'alunos.arq'); Reset(arquivo); while not(eof(arquivo)) do read(arquivo,a); if (a.mat = matricula) then writeln('matricula: ',a.mat,' CPF: ',a.cpf); writeln('sua posicao no arquivo eh: ',filepos(arquivo)-1); end; end; close(arquivo); end. write('entre a matricula: '); readln(matricula); 31

{ arquivos e arrays } Program arquivo_array; var arquivo: file of integer; vetor: array[0..50] of integer; n,i,pos:integer; Assign(arquivo,'arquivo.arq'); Rewrite(arquivo); { i := 1; } write(arquivo,5); { vetor[i] := 5; i := i + 1; } write(arquivo,8); { vetor[i] := 8; i := i + 1; } write(arquivo,10); { vetor[i] := 10; i := i + 1; } Reset(arquivo); { i := 0; } read(arquivo,n); { n := vetor[i]; i := i + 1; } read(arquivo,n); { n := vetor[i]; i := i + 1; } read(arquivo,n); { n := vetor[i]; i := i + 1; } pos := filepos(arquivo); { pos := i; } seek(arquivo,3); { i := 3; } read(arquivo,n); { n := vetor[i]; i := i + 1; } pos := filepos(arquivo); { pos := i; } n := n + 1; { n := n + 1; } write(arquivo,n); { vetor[i] := n; i := i + 1; } close(arquivo); end. 32