Capítulo 06: Arquivos
|
|
|
- Tânia Brás Carvalhal
- 9 Há anos
- Visualizações:
Transcrição
1 Capítulo 06: Arquivos INF1004 e INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar um volume de dados muito grande Imagine ter que digitar n dados novamente por causa de um simples erro de digitação? A estratégia adequada para se trabalhar com grande volume de dados é fazer uso de arquivos de dados. Para que programas possam ler e salvar dados em um arquivo, é necessário ter acesso a um conjunto de funções que permitam realizar essas operações: No nosso curso, usaremos um conjunto de funções presentes na biblioteca stdio.h. 1
2 Funções de entrada e saída em arquivos Para que possamos ler ou escrever em um arquivo é necessário que antes o arquivo esteja aberto. Cada arquivo é identificado pelo seu nome, que normalmente é o nome do arquivo mais a extensão: exemplo.txt, cap8.ppt, saida.txt Para abrir um arquivo é necessário definir se o mesmo será utilizado para leitura ou escrita: Para abrirmos um arquivo para leitura é necessário que o arquivo já exista. Quando abrimos um arquivo para escrita criamos um novo arquivo onde dados de saída serão escritos, ou sobrescrevemos um arquivo existente. Funções de entrada e saída em arquivos Para abrir um arquivo, a biblioteca padrão oferece a função fopen. Esta função serve tanto para abrir um arquivo para leitura como para escrita. A função recebe dois parâmetros, o nome do arquivo que se deseja abrir e o modo de abertura:» Leitura: "r" (read)» Escrita: "w" (write). Esta função retorna um ponteiro para o tipo FILE definido na biblioteca. Um ponteiro é um tipo de variável que serve para armazenar endereços de memória. 2
3 Funções de entrada e saída em arquivos: declaração e inicialização Declaração de uma variável do tipo ponteiro para FILE (no exemplo, o nome dado à variável é fp): FILE *fp; Inicialização: Abrindo o arquivo para leitura de dados:» fp = fopen( entrada.txt, r ); Abrindo o arquivo para escrita de dados:» fp = fopen( saida.txt, w ); Funções de entrada e saída em arquivos: declaração e inicialização Se a abertura do arquivo não for bem sucedida, a função retorna o valor definido pela constante simbólica NULL:... fp = fopen( entrada.txt, r ); if (fp == NULL) { printf( Erro na abertura do arquivo.\n ); exit(1); /* aborta programa */... O valor retornado pela função fopen deve ser passado como parâmetro para as demais funções para identificar em qual arquivo se deseja fazer a operação de entrada ou saída. Após realizar as operações de entrada e saída no arquivo, este deve ser fechado com o uso da função fclose
4 Leitura: fscanf A principal função da biblioteca padrão para leitura de arquivos chama-se fscanf, e é análoga à função scanf para captura de dados via teclado. int a; float b; FILE* fp = fopen("entrada.txt", "r");... fscanf(fp, "%d %f", &a, &b);... A função fscanf tem como valor de retorno o número de parâmetros que foram lidos com sucesso (também vale para a função scanf). Exemplo de Leitura Vamos considerar a existência de um arquivo que armazena notas que os alunos obtiveram em uma disciplina. Vamos considerar que a primeira linha contém um número inteiro que informa a quantidade de notas armazenadas a seguir, estando uma nota por linha. Arquivo notas.txt: 4
5 Exemplo de Leitura O nosso programa vai ler as notas do arquivo e escrever na tela a média dos alunos. #include <stdio.h> int main (void) { int i, n; float nota, soma = 0.0; FILE *fp ; /* abertura do arquivo para leitura */ fp = fopen ("notas.txt", "r"); /* teste para verificar se houve algum erro */ if (fp == NULL) { printf("erro na abertura do arquivo.\n"); return 1; /* aborta programa ( retorna da função main) */ Exemplo de Leitura (continuação) /* leitura da quantidade de notas no arquivo */ fscanf( fp, "%d", &n); /* laço para leitura de cada nota */ for (i=0; i<n ; i++) { fscanf(fp, "%f ", ¬a); soma = soma + nota ; /* fechamento do arquivo */ /* cálculo da média e impressão na tela */ printf("media = %.2f \n", soma / n); return 0; 5
6 Exemplo de Leitura Quando escrevemos programas para processar dados de entrada de um arquivo, procuramos manter o formato dos dados presentes no arquivo o mais flexível possível. O formato do arquivo de notas do exemplo anterior não é muito flexível pois se formos adicionar uma nota no arquivo teremos também que atualizar a primeira linha do arquivo, que representa a quantidade de notas. Para tornar o formato mais flexível, podemos pensar em eliminar a informação da primeira linha, isto é, podemos listar apenas as notas, e o programa deve ser capaz de exibir a média de todas as notas. #include <stdio.h> int main (void) { int n; float nota, soma = 0.0; FILE *fp ; /* abertura do arquivo */ fp = fopen ("notas.txt", "r"); n = 0; Neste caso utilizaremos o comando while para processar as notas do arquivo enquanto o final do arquivo não é alcançado. Para cada nota lida incrementamos o valor do contador. /* laço para leitura de cada nota */ while (fscanf(fp, "%f ", ¬a) == 1) { soma = soma + nota; n++; /* fechamento do arquivo */ /* cálculo da média e impressão na tela */ if (n > 0) { printf("media = %.2f \n", soma / n); return 0; 6
7 Escrita: fprintf A principal função de saída em arquivo da biblioteca padrão chama-se fprintf, sendo análoga à função printf para saída na tela. A diferenca é que a função fprintf espera um primeiro parâmetro adicional que identifica o arquivo. int a ; float b ; FILE* fp = fopen("saida.txt", "w");... fprintf(fp, "Valores : %d %f \n", a, b);... Obviamente os valores de a e b precisam ser definidos antes da chamada à função fprintf. Exemplo de Escrita Vamos considerar que numa disciplina cada aluno faz 3 provas, obtendo três notas que são consideradas para o cálculo da nota final. Considere que as notas obtidas para cada aluno estão armazenadas no arquivo entrada.txt 7
8 Exemplo de Escrita Vamos então desenvolver um programa que processe as notas do arquivo entrada.txt. Para cada aluno, o programa deve calcular a sua nota final (nf = (p1+p2+p3)/3) e verificar se o aluno foi aprovado ou reprovado. O programa deve gerar um arquivo de saída com o nome saida.txt. Neste arquivo de saída, para cada linha do arquivo de entrada, deve-se escrever a linha correspondente com a nota final do aluno e sua situação: A se o aluno foi aprovado (media >=5.0) ou R se o aluno foi reprovado. Exemplo de Escrita #include <stdio.h> int main (void) { float p1, p2, p3, media; FILE *ent, *sai; ent = fopen("entrada.txt", "r"); sai = fopen("saida.txt", "w"); while (fscanf(ent, "%f %f %f", &p1, &p2, &p3) == 3) { media = (p1 + p2 + p3) / 3; fprintf(sai, %.1f, media); if (media >= 5.0) fprintf(sai, A\n ); else fprintf(sai, R\n ); fclose(ent); fclose(sai); return 0; 8
INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1
INF1005: Programação 1 Arquivos 02/05/10 (c) Paula Rodrigues 1 Tópicos Principais Motivação Abertura e fechamento de arquivos Leitura com fscanf Escrita com fprintf 08/03/10 (c) Paula Rodrigues 2 Motivação
Capítulo 6: Arquivos
Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de
Manipulação de Arquivos em C
Manipulação de Arquivos em C 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni [email protected] Introdução Até agora temos utilizado
Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 15 - Arquivos 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
INF 1620 P3-02/07/02 Questão 1 Nome:
INF 1620 P3-02/07/02 Questão 1 Considere um arquivo texto que contém os nomes e as notas dos alunos de uma disciplina. As informações de cada aluno ocupam duas linhas do arquivo: a primeira linha contém
INF 1620 P4 30/06/07 Questão 1 Nome:
INF 1620 P4 30/06/07 Questão 1 O maior divisor comum (MDC) de dois números inteiros é o maior número inteiro que faz uma divisão exata (com resto zero) desses dois números. Por exemplo, o MDC de 32 e 40
Métodos Computacionais. Arquivos
Métodos Computacionais Arquivos 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
Computação 2. Aula 8. Profª. Fabiany Arquivos
Computação 2 Aula 8 Arquivos Profª. Fabiany [email protected] E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca
Arquivos em C. Notas de Aula. Prof. Francisco Rapchan
Arquivos em C Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan Há várias definições para arquivos em computação. Uma das mais usadas é a de que um arquivo é um conjunto de registros
Linguagem C. Armazenamento de Dados em Arquivos - Continuação
Linguagem C Armazenamento de Dados em Arquivos - Continuação Arquivos Binários Comandos para gravação e leitura de arquivos (revisão): FILE *arquivo; arquivo = fopen( nome, modo ); fwrite (&variavel, sizeof
INF 1620 P2-14/10/05 Questão 1 Nome:
INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome
CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:
CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta
INF 1620 P3-27/11/04 Questão 1 Nome:
INF 1620 P3-27/11/04 Questão 1 Considere um arquivo texto com as notas dos alunos de uma disciplina. Os dados de cada aluno são armazenados em duas linhas do arquivo: uma com o seu nome (cadeia com até
Linguagem C: Arquivo-Texto
Prof. Paulo R. S. L. Coelho [email protected] Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução em C 2 3 Organização Introdução em C 1 Introdução em C 2 3 Introdução
Aula 16: Manipulação de Arquivos em C
Aula 16: Manipulação de Arquivos em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Manipulação de Arquivos Programação de Computadores IV 1 / 33
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente
Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br
Computação Eletrônica Aula 12 Arquivos Texto e Binário Prof: Luciano Barbosa Relembrando a Arquitetura Básica de um Computador Até agora, toda a informação armazenada por nossos programas estava na memória
Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria
USP - ICMC - SSC SSC 0501-1o. Semestre 2015 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/
INF 1620 P3-29/06/04 Questão 1 Nome:
INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica
a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)
INF 620 P - 7/04/04 Questão a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: Ou seja: π 4 * + 3 π 5 7 + 9 i ( ) 4 * n i= 0 2 * i + + K Esta função
Introdução à Programação
Introdução à Programação Aula 10 Matrizes Edirlei Soares de Lima Conjuntos Bidimensionais Uma matriz representa um conjunto bidimensional de valores. Exemplo de matriz de inteiros:
INF 1620 P3-06/12/03 Questão 1 Nome:
INF 1620 P3-06/12/03 Questão 1 Considere um cadastro com as médias por disciplina dos alunos de uma universidade. Esse cadastro é originalmente armazenado em um arquivo texto que contém, para cada disciplina,
LINGUAGEM C: ARQUIVOS
LINGUAGEM C: ARQUIVOS Prof. André Backes Arquivos 2 Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial;
Introdução à Computação II AULA 08 BCC Noturno - EMA896115B
Introdução à Computação II AULA 08 BCC Noturno - EMA896115B Prof. Rafael Oliveira [email protected] Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Rio Claro 2014 (Sem 2) O ambiente de execução
Sumário. Ficheiros. Ficheiros
Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções
ponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo [email protected] ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes
Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany [email protected] Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente
Vetores. e o programa deverá ler os valores separadamente:
Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.
Linguagem C: Introdução
Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais
INF 1620 P1-18/09/04 Questão 1 Nome:
INF 1620 P1-18/09/04 Questão 1 Considerando a definição da série harmônica abaixo: H n =1+ 1 2 + 1 3 + 1 4 + 1 5 + K+ 1 n (a) Escreva uma função que calcule o valor de H n dado o número de termos da série
Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre
Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros
Arquivos em C Parte 2
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C Parte 2 Profa Rosana Braga Material preparado pela profa Silvana Maria Affonso de Lara 1º semestre de
1 O filtro da mediana
CCM0118 Computação I Departamento de Ciência da Computação IME-USP Curso de Ciências Moleculares Turma 22 Segundo Semestre de 2012 Quarto Exercício-Programa Prazo de entrega: até 4 de dezembro de 2012.
INF 1620 P4-27/06/02 Questão 1 Nome:
INF 1620 P4-27/06/02 Questão 1 Considere o tipo que representa uma grandeza vetorial (com três componentes) dado por: struct vetor { float x; float y; float z; }; typedef vetor Vetor; Pede-se: (a) Escreva
INF 1620 P1-11/04/08 Questão 1 Nome:
INF 1620 P1-11/04/08 Questão 1 Nas Olimpíadas, em uma determinada modalidade esportiva, os competidores recebem a nota de quatro jurados e a nota final é o resultado da média das quatro notas menos um
Introdução a Computação
Introdução a Computação Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Programação Programa é um algoritmo escrito em uma linguagem de programação. Existem diversas linguagens
Programação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Módulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Introdução à Programação
Programação de Computadores Introdução à Programação Prof. Helton Fábio de Matos [email protected] Agenda Algoritmo & Programa Variáveis Declaração de tipos Comando de entrada ou de leitura Comando de
