Introdução a Programação. Arquivos

Documentos relacionados
Métodos Computacionais. Arquivos

Arquivos Binários UFOP 1/25

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Aula 29: Arquivos binários

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

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

Arquivos em C. Material da Prof. Ana Eliza

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

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

Introdução a Programação. Manipulando Arquivos em Modo Texto

LINGUAGEM C: ARQUIVOS

TÉCNICAS DE PROGRAMAÇÃO

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

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

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

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Manipulação de Arquivos. Técnicas de Programação

Computação 2. Aula 8. Profª. Fabiany Arquivos

Computação 2. Aula 9. Diego Addan Arquivos

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

Programação para Computação 13ª Aula

Programação de Computadores

Laboratório de Introdução à Ciência da Computação I

Operações em Arquivos. MC102 Felipe Bergo

Aula 26: Arquivos de texto

INF 1620 P2-14/10/05 Questão 1 Nome:

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

Fundamentos de Programação 1

13a. Aula Manipulação de arquivos

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

LINGUAGEM C: ARQUIVOS

Fundamentos de Programação

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

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

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

Introdução à Programação

Linguagem C Ficheiros Compilação Separada

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

Aula 16: Manipulação de Arquivos em C

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

1/22 FICHEIROS BINÁRIOS

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Sumário. Ficheiros. Ficheiros

Outline. 33. Manipulação de arquivos DIM

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido

Manipulação de Arquivos em C

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

Capítulo 6: Arquivos

Arquivos em C Parte 2

Manipulação de Arquivos

Programação II. Arquivos - Conceito. Arquivos

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

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Aula 16. Ficheiros de texto

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

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

Alocação Dinâmica de Memória - Exercício

Arquivos. Estruturas de Dados II Vanessa Braganholo

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos.

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

Linguagem de Programação

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

Programação de Computadores II

Programação II. Files Read & Write. Bruno Feijó Dept. de Informática, PUC-Rio

Capítulo 06: Arquivos

Manipulação de Arquivos

Structs, Ponteiros e Arquivos. Prof. Maurício Dias

Depuração e Teste de programas C C Depuração e teste de programas C

Tópicos em C. Eliade F. Lima

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

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

Faculdade de Computação

Parte 3: Estruturas de dados para pesquisa em memória secundária

Introdução a Programação. Tipos Estruturados de Dados

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Métodos Computacionais. Tipos Estruturados

1 Escrita de Arquivos Binário

Algoritmos e Estruturas de Dados II IEC013

9/24/2014. Prof. André Backes

MC-102 Algoritmos e Programação de Computadores

INF 1620 P4 11/12/06 Questão 1 Nome:

UNIVERSIDADE DA BEIRA INTERIOR

Banco de Dados Alimentos SA

Programação Estruturada II

Referências. Arquivos. Tópicos Principais. Programação de Computadores II. Motivação. Motivação. Abertura de arquivo. Slides da profa.

INF 1005 Programação I - Prof. Hélio Lopes 24/04/2012

Linguagem de Programação C. Arquivos

Linguagem C: Arquivo-Texto

INF 1620 P3-02/07/02 Questão 1 Nome:

INF 1620 P4-01/07/08 Questão 1 Nome:

1 Arquivos em C. CEFETES Serra - Programação II Mateus Costa Notas de Aula - Arquivos

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Aula 24 Ponteiros, vetores e structs

Transcrição:

Introdução a Programação Arquivos

Tópicos da Aula Hoje aprenderemos a persistir dados Conceito de arquivos Importância de persistência Modos de acesso de arquivos em C Operações em arquivos Funções de leitura/escrita em modo binário 2

Arquivos Um arquivo representa um elemento de informação armazenado em memória secundária (disco) Características: Informações são persistidas Atribui-se nomes aos elementos de informação (arquivos e diretórios), em vez de endereços de memória Acesso às informações são mais lentos 3

Persistência... pra quê? Não perder os dados no fim da execução de um programa Memória temporária(volatil) principal Mais rápida e cara Memória permanente secundária mais lenta e barata Para melhorar velocidade de acesso, a cada acesso, transfere-se trechos maiores do arquivo para espaços da memória (buffers) 4

Modos de Acesso a Arquivos em C Dois modos de acesso: Texto e Binário String Informação persistida Arquivo Texto: 0 1 2 3 4 Arquivo Binario: 0 1 2 3 4 Inteiros 5

Modo Texto É interpretado como uma seqüência de caracteres agrupadas em linhas Linhas são separadas por um caractere de nova linha Vantagens: Pode ser lido facilmente por uma pessoa Editado por editores de texto convencionais Desvantagens Codificação dos caracteres pode variar (ASCII, UTF- 8, ISO-8859, etc) Arquivos tendem a ser maiores (todas os dados são convertidos para caracteres) 6

Modo Binário Dados são armazenados da mesma forma que são armazenados na memória principal Vantagens: Facilmente interpretados por programas Maior velocidade de manipulação Arquivos são, geralmente, mais compactos Desvantagens: Difícil de serem entendidos por pessoas Dependentes da máquina onde foram gerados 7

Operações em Arquivos Abertura Sistema Operacional (SO) encontra arquivo pelo nome Prepara buffer na memória Leitura SO recupera trecho solicitado do arquivo Parte ou todo trecho pode vir do buffer 8

Operações em Arquivos Escrita SO altera conteúdo do arquivo Alteração é feita primeiro no buffer para depois ser transferida para o disco Fechamento Informação do buffer é atualizada no disco Área do buffer utilizada na memória é liberada 9

Abertura de Arquivos em C Operações de manipulação de arquivos em C se encontram, geralmente, na stdio.h Função de Abertura FILE* fopen(char* nome,char* modo); Nome Nome do arquivo FILE Tipo estruturado que representa uma abstração do arquivo modo r - Indica leitura w Indica escrita a Indica escrita ao final do existente t Indica modo texto b Indica modo binário 10

Abrindo arquivos FILE *fptr; /* ponteiro para arquivo */ fptr = fopen( arqtext.txt, w ); nome do arquivo Tipo de abertura Modo t pode ser omitido r Abrir arquivo texto para leitura. O arquivo deve estar presente no disco w Abrir arquivo texto para gravação. Se o arquivo existir ele será destruído e reinicializado. Se não existir, será criado a Abrir um arquivo texto para gravação. Os dados serão adicionados no fim do arquivo existente, ou cria um novo 11

Abrindo arquivos FILE *fptr; /* ponteiro para arquivo */ fptr = fopen( arqtext.txt, w+ ); Tipo de abertura r+ Abrir arquivo texto para leitura e gravação. O arquivo deve existir e pode ser atualizado. w+ Abrir arquivo texto para leitura e gravação. Se o arquivo existir ele será destruído e reinicializado. Se não existir, será criado. a+ Abrir um arquivo texto para atualização e para adicionar dados no fim do arquivo existente, ou cria um novo 12

Abrindo arquivos FILE *fptr; /* ponteiro para arquivo */ fptr = fopen( arqtext.txt, wb ); Tipo de abertura rb Abrir arquivo binário para leitura. O arquivo deve estar presente no disco wb Abrir arquivo binário para gravação. Se o arquivo existir ele será destruído e reinicializado. Se não existir, será criado ab Abrir um arquivo binário para gravação. Os dados serão adicionados no fim do arquivo existente, ou cria um novo 13

Abrindo arquivos FILE *fptr; /* ponteiro para arquivo */ fptr = fopen( arqtext.txt, wb+ ); Tipo de abertura rb+ Abrir arquivo binário para leitura e gravação. O arquivo deve existir e pode ser atualizado. wb+ Abrir arquivo binário para leitura e gravação. Se o arquivo existir ele será destruído e reinicializado. Se não existir, será criado. ab+ Abrir um arquivo binário para atualização e para adicionar dados no fim do arquivo existente, ou cria um novo 14

Observações sobre Abertura de Arquivos em C SO mantém um cursor que indica a posição de trabalho no arquivo Se não for possível a abertura, a função fopen retorna NULL 15

Fechamento de Arquivos Após leitura/escrita do arquivo, devemos fechálo Função de fechamento int fclose(file* fp); Retorna 0 se o arquivo foi fechado com sucesso 16

Leitura (Modo Binário) int fread(void* p,int tam,int nelem,file* fp); p é o endereço de memória em que vai ser armazenado o que for lido tam é o tamanho em bytes de cada elemento lido nelem é o número de elementos de tamanho tam lidos Retorna a quantidade de bytes lidos com sucesso (tam * nelem) 17

Escrita (Modo Binário) int fwrite(void* p,int tam,int nelem,file* fp); p é o endereço de memória cujo conteúdo deseja-se salvar em arquivo tam é o tamanho em bytes de cada elemento escrito nelem é o número de elementos de tamanho tam escritos Retorna a quantidade de bytes escritos com sucesso (tam * nelem) 18

Verificando o Final do Arquivo Em operações de leitura do arquivo, é comum verificarmos se o final do arquivo já foi atingido Função de verificação de fim de arquivo int feof(file* fp); Retorna 1 se o fim do arquivo foi atingido Retorna 0 caso contrário 19

Usando fwrite na Escrita #include <stdio.h> typedef struct ponto { float x,y; } Ponto; Programa que salva n pontos em um arquivo binário int main () { Gravando cada ponto entrado int i,n; pelo usuario usando fwrite Ponto p; FILE* fp = fopen( arquivo, wb ); if (fp!= NULL) { printf( Digite numero de pontos a gravar\n ); scanf( %d,&n); for (i = 0; i < n; i++) { scanf( %d %d,&p.x,&p.y); fwrite(&p, sizeof(ponto), 1, fp); } fclose(fp); } else { printf( Erro na abertura do arquivo.\n ); } } 20

Usando fread na Leitura #include <stdio.h> int main () { int i,n; Ponto p; FILE* fp = fopen( arquivo, rb ); if (fp!= NULL) { while(!feof(fp)){ Programa que lê todos os pontos armazenados em um arquivo binário Testa se o fim do arquivo já foi atingido } fread(&p, sizeof(ponto), 1, fp); printf( Ponto lido: (%d,%d),p.x,p.y); } fclose(fp); } else { printf( Erro na abertura do arquivo.\n ); } Lê cada ponto e guarda na variável p 21

Leitura/Escrita de Blocos de Dados As funções fread/fwrite permitem ler/escrever grandes blocos de dados em um arquivo Um dos parâmetros indica qual é a quantidade de dados de um determinado tipo a ser lido/escrito Portanto podem ser úteis para ler/escrever estruturas ou vetores em um arquivo numa única chamada de função 22

Usando fwrite na Escrita #include <stdio.h> typedef struct ponto { float x,y; } Ponto; Número de pontos do vetor void salva (char* arquivo, int n, Ponto* vet) { FILE* fp = fopen(arquivo, wb ); if (fp!= NULL) { fwrite(vet, sizeof(ponto), n, fp); fclose(fp); } else { } printf( Erro na abertura do arquivo.\n ); exit(1); Função que salva um vetor de pontos em um arquivo binário } 23

Usando fread na Leitura void carrega (char* arquivo, int n, Ponto* vet) { } FILE* fp = fopen (arquivo, rb ); if (fp!= NULL) { fread (vet, sizeof(ponto), n, fp); fclose(fp); } else { } printf( Erro na abetura do arquivo.\n ); exit(1); Função que recupera um vetor de pontos de um arquivo binário 24

Usando as Funções Definidas Anteriormente int main() { Ponto *entrada, *saida; int npontos, cont,pos ; FILE *arquivo; char nome_arquivo[121]; printf( Digite o nome do arquivo:\n ); scanf( %120s,nome_arquivo); printf( \ndigite o número de pontos:\n ); scanf( %d,&npontos); entrada = (Ponto *) malloc(npontos*sizeof(ponto)); for (cont = 0; cont < npontos;cont++) { } printf( Digite coordenadas x,y:\n ); scanf( %f%f,&entrada[cont].x,&entrada[cont].y); /* continua */ Programa que salva e recupera um vetor de pontos em um arquivo binário 25

Usando as Funções Definidas Anteriormente } salva(nome_arquivo, npontos, entrada); do { printf( Digite agora a posição do ponto que deseja ver: \n ); Gravando os pontos no scanf( %d,&pos); arquivo } while (pos > npontos pos<=0 ); saida = (Ponto *) malloc (npontos*sizeof(ponto)); carrega(nome_arquivo, npontos, saida); printf( O ponto na posicao %d é {%f,%f}\n, pos, saida[pos-1].x, saida[pos-1].y); Lendo os pontos do arquivo 26