Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Estruturada – Arquivos (P1) Prof. Lincoln Faria lfaria@unicarioca.edu.br Prof. Lincoln Faria - lfaria@unicarioca.edu.br 2 Aula de hoje -->Arquivos e fluxos -->Manipulação de arquivos de acesso sequencial Prof. Lincoln Faria - lfaria@unicarioca.edu.br 3 Arquivos e fluxos Introdução: O armazenamento de dados em variáveis e matrizes é temporário; todos os dados são perdidos quando um programa termina. Os arquivos são usados para conservação permanente de grandes quantidades de dados. Os computadores armazenam arquivos em dispositivos secundários de armazenamento, especialmente dispositivos de armazenamento em disco. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 4 Arquivos e fluxos Hierarquia de dados: Bit - Os menores itens de dados em um computador podem assumir o valor 0 ou o valor 1. Tal item de dados é chamado um bit (abreviação de binary digit, ou dígito binário). Prof. Lincoln Faria - lfaria@unicarioca.edu.br 5 Arquivos e fluxos Hierarquia de dados: Caracteres – São os dígitos decimais, letras e símbolos especiais. Como os computadores podem processar apenas 1s e 0s, qualquer caractere do conjunto de caracteres de um computador é representado por uma combinação de 1s e 0s (chamada de byte). Atualmente, os bytes são normalmente compostos de oito bits. Os programadores criam programas e itens de dados como caracteres; os computadores manipulam e processam esses caracteres como padrões de bits. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 6 Arquivos e fluxos Hierarquia de dados: Campo – Da mesma forma que os caracteres são compostos de bits, os campos são compostos de caracteres. Um campo é um grupo de caracteres que possui um significado. Por exemplo, um campo consistindo unicamente em letras maiúsculas e minúsculas pode ser usado para representar o nome de uma pessoa. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 7 Arquivos e fluxos Hierarquia de dados: Registro – Um registro (i.e., uma struct em C) é composto de vários campos. Em um sistema de folha de pagamento, por exemplo, um registro de um determinado empregado pode consistir nos seguintes campos: 1. Número de Previdência Social 2. Nome 3. Endereço 4. Valor do salário por hora 5. Número de dispensas solicitadas Prof. Lincoln Faria - lfaria@unicarioca.edu.br 8 Chave de registro: Para facilitar a recuperação de registros específicos de um arquivo, pelo menos um campo em cada registro é escolhido como chave de registros. A chave de registros identifica um registro como pertencendo a uma determinada pessoa ou entidade. Por exemplo, no registro de folha de pagamento o número de identificação do empregado poderia ser escolhido para ser a chave de registros. Arquivos e fluxos Prof. Lincoln Faria - lfaria@unicarioca.edu.br 9 Arquivos e fluxos Hierarquia de dados: Arquivo – é um grupo de registros relacionados. Um arquivo de folha de pagamento de uma companhia contém um registro para cada empregado. Assim, o arquivo de folha de pagamento de uma pequena empresa talvez 22 registros, entretanto o arquivo da folha de pagamento de uma grande empresa pode conter 100.000 registros. Não é raro uma organização ter centenas ou mesmo milhares de arquivos e cada um deles possuir milhões ou até bilhões de caracteres de informações. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 10 Arquivos e fluxos Hierarquia de dados: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 11 Arquivos e fluxos Hierarquia de dados: Banco de dados – é um grupo de arquivos relacionados entre si. A maioria das empresas utiliza muitos arquivos diferentes para armazenar dados. Por exemplo, as companhias podem ter arquivos de folhas de pagamento, arquivos de contas a receber (listando o dinheiro devido pelos clientes), arquivos de contas a pagar (listando o dinheiro devido aos fornecedores), arquivos de inventário (listando características a respeito de todos os itens gerenciados pela empresa muitos outros tipos de arquivos. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 12 Arquivos e fluxos Arquivos e streams: A linguagem C considera arquivo simplesmente como uma sequência de bytes ou um fluxo de bytes, que é uma streams. Todo lugar que tem capacidade receber ou transmitir bytes da ou para a memória, recebe o nome de arquivo. Assim, arquivos em disco, teclado, vídeo, impressora, portas de comunicação são exemplos de arquivos para a linguagem C. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 13 Manipulação de arquivos de acesso sequencial Há muitas maneiras de organizar registros em um arquivo. No tipo mais comum de organização, arquivo sequencial, registros são organizados normalmente segundo o campo de chave dos registros. Em um arquivo de folha de pagamentos, por exemplo, poderíamos usar o número de identificação dos empregados. O registro do primeiro empregado no arquivo conteria o menor número de identificação e os registros subsequentes conteriam números de identificação em ordem crescente. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 14 Manipulação de arquivos de acesso sequencial Exemplo 01: criação de um arquivo com 5 registro. #include <stdio.h> #include <locale.h> struct banco_clientes{ int conta; char nome[20]; float saldo; }; typedef struct banco_clientes banco_clientes; int main(void){ setlocale(LC_ALL, "Portuguese"); int i; banco_clientes cliente = {0,"",0.0}; FILE *fp; fp=fopen("Clientes.dat","wb"); if(fp==NULL){ /*testando a abertura do arquivo*/ printf("Impossível abrir o arquivo %s!\n","Clientes.dat"); } else{ printf("Arquivo %s aberto com sucesso!\n\n","Clientes.dat"); for(i=0;i<5;i++){ fwrite(&cliente, sizeof(banco_clientes), 1, fp); } } fclose(fp); return 0; } Prof. Lincoln Faria - lfaria@unicarioca.edu.br 15 Manipulação de arquivos de acesso sequencial Exemplo 01: criação de um arquivo de acesso sequencial. Conta Nome Saldo 0 0.00 0 0.00 0 0.00 0 0.00 0 0.00 No arquivo Clientes.dat: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 16 Manipulação de arquivos de acesso sequencial Principais funções de manipulação de arquivos: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 17 Manipulação de arquivos de acesso sequencial Função fopen( ): FILE *fp; fp=fopen("Clientes.dat","w"); Ponteiro do tipo FILE para arquivo Modos de abertura de arquivo Uma string com o nome do arquivo Prof. Lincoln Faria - lfaria@unicarioca.edu.br 18 Manipulação de arquivos de acesso sequencial Principais modos de abertura de arquivo: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 19 Manipulação de arquivos de acesso sequencial Principais modos de abertura de arquivo: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 20 Manipulação de arquivos de acesso sequencial Função fclose( ): Recebe o ponteiro de aquivo, fechando a stream que foi aberta por meio de uma chama da a fopen( ) fclose(fp); Prof. Lincoln Faria - lfaria@unicarioca.edu.br 21 Manipulação de arquivos de acesso sequencial Exemplo 02: escrita em arquivo de acesso sequencial. #include <stdio.h> #include <locale.h> struct banco_clientes{ int conta; char nome[20]; float saldo; }; typedef struct banco_clientes banco_clientes; int main(void){ setlocale(LC_ALL, "Portuguese"); int i; banco_clientes cliente = {0,"",0.0}; FILE *fp; fp=fopen("Clientes.dat","rb+"); if(fp==NULL){ /*testando a abertura do arquivo*/ printf("Impossível abrir o arquivo %s!\n","Clientes.dat"); } else{ printf("Arquivo %s aberto com sucesso!\n\n","Clientes.dat"); for(i=0;i<5;i++){ cliente.conta=i; printf("Digite o nome e o saldo do cliente %d: \n", cliente.conta); scanf("%s%f",cliente.nome, &cliente.saldo); fwrite(&cliente, sizeof(banco_clientes), 1, fp); } } fclose(fp); return 0; } Prof.Lincoln Faria - lfaria@unicarioca.edu.br 22 Manipulação de arquivos de acesso sequencial Exemplo 02: criação de um arquivo de acesso sequencial. Conta Nome Saldo 0 Pedro 200.00 1 Rebeca -100.00 2 João 50.00 3 Maria 200.00 4 Carlos -300.00 Arquivo Clientes.dat aberto com sucesso! Digite o nome e o saldo do cliente 0: Pedro 200 Digite o nome e o saldo do cliente 1: Rebeca -100 Digite o nome e o saldo do cliente 2: João 50 Digite o nome e o saldo do cliente 3: Maria 200 Digite o nome e o saldo do cliente 4: Carlos -300 Na tela do computador: No arquivo Clentes.dat: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 23 Manipulação de arquivos de acesso sequencial Exemplo 03: leitura de um arquivo de acesso sequencial. #include <stdio.h> #include <locale.h> struct banco_clientes{ int conta; char nome[20]; float saldo; }; typedef struct banco_clientes banco_clientes; int main(void){ setlocale(LC_ALL, "Portuguese"); banco_clientes cliente = {0,"",0.0}; FILE *fp; fp=fopen("Clientes.dat","r"); if(fp==NULL){ /*testando a abertura do arquivo*/ printf("Impossível abrir o arquivo %s!\n","Clientes.dat"); } else{ printf("Arquivo %s aberto com sucesso!\n\n","Clientes.dat"); printf("%-10s%-13s%s\n","Conta","Nome", "Saldo"); while(!feof(fp)){ fread(&cliente, sizeof(banco_clientes),1,fp); printf("%-10d%-13s%.2f\n",cliente.conta, cliente.nome, cliente.saldo); } } fclose(fp); return 0; } Prof. Lincoln Faria - lfaria@unicarioca.edu.br 24 Manipulação de arquivos de acesso sequencial Exemplo 03: leitura de um arquivo de acesso sequencial. Conta Nome Saldo 0 Pedro 200.00 1 Rebeca -100.00 2 João 50.00 3 Maria 200.00 4 Carlos -300.00 Na tela do computador: Prof. Lincoln Faria - lfaria@unicarioca.edu.br 25 Problema Escreva, em linguagem C, um programa que salve, em arquivo, uma frase digitada pelo usuário. Seu programa deve conter as seguintes tarefas: a) Criação e abertura de um arquivo com o nome “frase.dat”. b) Um teste para verificar se a abertura do arquivo “frase.dat” foi bem sucedida. c) Uma solicitação ao usuário, ou seja, pedir ao usuário que entre, via teclado, com uma frase. d) Gravação da frase digitada no arquivo “frase.dat”. e) Fechamento do arquivo. Prof. Lincoln Faria - lfaria@unicarioca.edu.br 26 #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(void){ setlocale(LC_ALL, "Portuguese"); char nome[50]; FILE *fp; fp=fopen("frase.dat","w"); if(fp==NULL){ /*testando a abertura do arquivo*/ printf("Impossível abrir o arquivo %s!\n","frase.dat"); } else{ printf("Arquivo %s aberto com sucesso!\n","frase.dat"); printf("Digite uma frase: "); gets(nome); fprintf(fp,"%s",nome); } fclose(fp); return 0; } Possível solução Prof. Lincoln Faria - lfaria@unicarioca.edu.br 27 Considerações finais Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27
Compartilhar