Introdução à Programação

Documentos relacionados
Capítulo 06: Arquivos

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

Capítulo 6: Arquivos

Outline. 33. Manipulação de arquivos DIM

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

Métodos Computacionais. Arquivos

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

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

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

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

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

Linguagem C: Arquivo-Texto

Introdução a Programação de Jogos

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

INF 1620 P3-29/06/04 Questão 1 Nome:

ponteiros INF Programação I Prof. Roberto Azevedo

Manipulação de Arquivos

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

Introdução à Computação II AULA 08 BCC Noturno - EMA896115B

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

Curso de Introdução à Liguagem de. Grupo PET-Tele. Universidade Federal Fluminense. July 16, 2012

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

Arquivos em C Parte 2

LINGUAGEM C: ARQUIVOS

Capítulo 08: Matrizes

INF 1007 Programação II

Arquivos de Texto UFOP 1/31

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

4 MDP. void média e dp(int a[],int n,float em,float ed) 7. Variáveis auxiliares 7. Faça ed igual ao desvio padrão 6 }

INF 1620 P3-25/11/05 Questão 1 Nome:

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Linguagem C: Introdução

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

float vantagem(float candidato[], float concorrente[], int n);

Programação: Vetores

Linguagem C Ficheiros Compilação Separada

Programação Básica. Estrutura de um algoritmo

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

ADTs (Abstract Data Types): Motivação

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Disciplina de Algoritmos e Programação

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Algoritmos e Estruturas de Dados II IEC013

Aula 16. Ficheiros de texto

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Vetores. e o programa deverá ler os valores separadamente:

Manipulação de Arquivos

Fundamentos de Programação

Manipulação de Arquivos

Arquivos. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

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

Manipulação de Arquivos

LINGUAGEM C: ARQUIVOS

Métodos Computacionais. Vetores e Matrizes Dinâmicas

P2 Programação II Departamento de Informática/PUC-Rio

1 Escrita de Arquivos Binário

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação. Roberto Araujo 2013

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P2 20/10/2010. Aluno: Exemplo (apenas um exemplo!):

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

5 Comando de Seleção Simples e Composta

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

INF 1620 P1-14/04/07 Questão 1 Nome:

Aula 1 Apresentação do Curso

Introdução a Computação

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Sequência de informações binárias armazenadas num dispositivo de armazenamento permanente. Em geral os bits são agrupados em grupos de 8 (1 byte)

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Introdução à Linguagem C Variáveis e Expressões

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

ARQUIVOS DE DADOS EM C: UMA INTRODUÇÃO

Módulo 5 Vetores e Alocação Dinâmica

Métodos Computacionais. Listas Encadeadas

Exercícios: Arquivos

Manipulação de arquivos

Disciplina de Algoritmos e Programação

5. Vetores e alocação dinâmica

Introdução à Linguagem C

Capítulo 8: Matrizes

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

INF 1005 Programação I lista 09

Tipos Abstratos de Dados. Estrutura de Dados

1 O filtro da mediana

Departamento de Informática - PUC-Rio INF 1005 Programação I P1 22/09/2010 Nota

Introdução a Computação

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

LP II Estrutura de Dados

Entender o problema Encontrar um algoritmo para resolvê-lo. Implementar o algoritmo numa linguagem de programação

Linguagem C Funções. André Tavares da Silva.

Capítulo 7: Vetores. Waldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012

INF1005: Programação 1. Repetições. 08/03/10 (c) Paula Rodrigues 1

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Transcrição:

Introdução à Programação Aula 09 Arquivos Edirlei Soares de Lima <edirlei@iprj.uerj.br>

Funções de Entrada e Saída em Arquivos Até agora nós desenvolvemos somente programas que capturam dados de entrada via teclado e exibem seus dados de saída na tela. Problema: Erros de digitação obrigam o usuário a começar desde o inicio O que fazer quando um programa precisa processar um volume de dados muito grande?

Funções de Entrada e Saída em Arquivos 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: Nesse curso, usaremos um conjunto de funções presentes na biblioteca stdio.h

Funções de Entrada e Saída em Arquivos Um arquivo pode ser visto de duas maneiras: modo texto e modo binário Neste curso, vamos trabalhar apenas com arquivos no modo texto 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

Funções de Entrada e Saída em Arquivos Para abrir um arquivo é necessário definir se o mesmo será utilizado para leitura ou escrita: Leitura: para abrirmos um arquivo para leitura é necessário que o arquivo já exista. Escrita: 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 stdio.h 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. Um ponteiro é um tipo de variável que serve para armazenar endereços de memória.

Declaração e Abertura de um Arquivo Declaração de uma variável do tipo ponteiro para FILE: FILE *fp; Abrindo o arquivo para leitura de dados: fp = fopen( entrada.txt, r ); Abrindo o arquivo para escrita de dados: fp = fopen( saida.txt, w );

Declaração e Abertura de um Arquivo 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 ); return 1; /* aborta programa */ } Após realizar as operações de entrada e saída no arquivo, este deve ser fechado com o uso da função fclose. fclose(fp);

Leitura em Arquivo: fscanf A principal função para leitura de arquivos chama-se fscanf, e é similar ao scanf usado para captura de dados via teclado. int a; float b; FILE* fp = fopen("entrada.txt", "r");... fscanf(fp, "%d %f", &a, &b);... fclose(fp); A função fscanf tem como valor de retorno o número de parâmetros que foram lidos com sucesso.

Exemplo de Leitura Vamos considerar a existência de um arquivo que armazena notas que os alunos obtiveram em uma disciplina. 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:

Exemplo 1: O programa deve 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 */ }...

(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 ", &nota); soma = soma + nota ; } /* fechamento do arquivo */ fclose(fp); } /* cálculo da média e impressão na tela */ printf("media = %.2f \n", soma / n); return 0;

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 ; fp = fopen ("notas.txt", "r"); n = 0; /* laço para leitura de cada nota */ while (fscanf(fp, "%f", &nota) == 1) { soma = soma + nota; n++; } fclose(fp); if (n > 0) { printf("media = %.2f \n", soma / n); } return 0; } O while processa as notas do arquivo enquanto o final do arquivo não é alcançado.

Escrita em Arquivo: fprintf A principal função para escrita de dados em arquivos chama-se fprintf, e é similar ao printf usado para escrita de dados na tela. int a ; float b ; FILE* fp = fopen("saida.txt", "w");... fprintf(fp, "Valores : %d %f \n", a, b);... fclose(fp);

Exemplo de Escrita Vamos considerar uma disciplina onde 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

Exemplo de Escrita O objetivo é desenvolver um programa que processe as notas do arquivo entrada.txt. Para cada aluno, o programa deve calcular a sua nota final 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) R se o aluno foi reprovado.

#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; }

Exercícios Lista de Exercícios 07 - Arquivos http://www.inf.puc-rio.br/~elima/intro-prog/