A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

LINGUAGEM DE PROGRAMAÇÃO I

Apresentações semelhantes


Apresentação em tema: "LINGUAGEM DE PROGRAMAÇÃO I"— Transcrição da apresentação:

1 LINGUAGEM DE PROGRAMAÇÃO I
Aula 10- Armazenando para preservar - 2a parte

2 Atenção aos Temas Principais dessa Aula

3 Conteúdo Programático desta aula
Conhecer e usar as funções rewind(), fread(), fwrite(), fgetpos(), fsetpos(), fseek(), ftell(), rename(), remove(), rewind(); Analisar trechos de gravação, leitura e exclusão em arquivos no modo binário.

4 Direto ao Assunto

5 TRABALHANDO COM ARQUIVO BINÁRIO

6 Funções de leitura e gravação em arquivos binários

7 Funções de leitura e gravação em arquivos binários

8 Funções de leitura e gravação em arquivos binários

9 Funções de leitura e gravação em arquivos binários
fread(vetor, sizeof(tipo), tamanho, arqPtr); fread(vetor, sizeof(vetor), 1, arqPtr); fwrite(&var, sizeof(tipo/var), 1, arqPtr);

10 endereço elemento é um ponteiro para qualquer tipo que localiza a posição na MP onde deverá ser armazenado o elemento que foi lido, ou onde será gravado, do/no arquivo externo tamanho número de bytes do que vai ser lido, fornecido pela função sizeof (argumento) , sendo o argumento o tipo do elemento, ou o nome do elemento quantidade indica o total de itens lidos, onde cada item tem seu tamanho especificado no parâmetro tamanho ptrArq variável ponteiro de arquivo que aponta para o arquivo externo

11 Exemplo de um programa com menu, matrizes bidimensionais e arquivo binário

12 #include <stdio.h>
#include <stdlib.h> int main() { int op,x,y, flag1=0, flag2=0, flag3=0, flag4=0; float mat[3][5],somaLinha[3], somaColuna[5]; FILE *arq; do { system("cls"); printf("\nMenu Matriz\n"); printf("\n1-le do teclado"); printf("\n2-le do arquivo"); printf("\n3-soma Linha"); printf("\n4-soma Coluna"); printf("\n5-exibe na tela"); printf("\n6-grava no arquivo"); printf("\n7-sai"); printf("\nOpcao: "); scanf("%d",&op);fgetc(stdin); system("cls");

13 #include <stdio.h>
#include <stdlib.h> int main() { int op,x,y, flag1=0, flag3=0, flag4=0; float mat[3][5],somaLinha[3], somaColuna[5]; FILE *arq; do { system("cls"); printf("\nMenu Matriz\n"); printf("\n1-le do teclado"); printf("\n2-le do arquivo"); printf("\n3-soma Linha"); printf("\n4-soma Coluna"); printf("\n5-exibe na tela"); printf("\n6-grava no arquivo"); printf("\n7-sai"); printf("\nOpcao: "); scanf("%d",&op);fgetc(stdin); system("cls");

14 switch(op) { case 1: for(x=0;x<3;x++) for(y=0;y<5;y++) printf("\n%d,%d-> ",x+1,y+1); scanf("%f",&mat[x][y]); } flag1=1; flag3=0; flag4=0; break;

15 switch(op) { case 1: for(x=0;x<3;x++) for(y=0;y<5;y++) printf("\n%d,%d-> ",x+1,y+1); scanf("%f",&mat[x][y]); } flag1=1; flag3=0; flag4=0; break; case 3: if(flag1==1 ) printf("\nGerando Soma Linha\n"); { somaLin[x]=0; somaLin[x]+= mat[x][y]; printf("\nSoma Linha Gerada\n"); flag3=1; else printf("\nEntre primeiro com os dados\n");

16 Opção 1 Opção 3

17 case 2: arq=fopen("Matriz","rb"); if(arq==NULL) printf("\nArquivo não abriu \n"); else { printf("\nAguarde. Lendo!\n"); fread(mat,sizeof(mat),1,arq); fread(somaLin,sizeof(somaLin),1,arq); fread(somaCol,sizeof(somaCol),1,arq); fclose(arq); printf("\nAs tres matrizes lidas\n"); flag1=1;flag3=1; flag4=1; } break;

18 Opção 2

19 case 5: if(flag3==1 && flag4==1) { printf("\n\n\t\tMatriz \t\t\t\tSomaLinha\n\n"); for(x=0;x<3;x++) { for(y=0;y<5;y++) printf("%7.3f\t",mat[x][y]); printf("\t%7.3f\n",somaLin[x]); } printf("\n\n"); printf("%7.3f\t",somaCol[y]); printf("\n\t\tSomaColuna\n"); else printf("\nEntre primeiro com os dados ou gere as outras matrizes\n"); break;

20 Opção 5

21 if(flag1==1 && flag3==1 && flag4==1) { arq=fopen("Matriz","wb");
case 6: if(flag1==1 && flag3==1 && flag4==1) { arq=fopen("Matriz","wb"); if(arq==NULL) printf("\nArquivo não pode ser lido\n"); else { printf("\nAguarde. Gravando!\n"); fwrite(mat,sizeof(mat),1,arq); fwrite(somaLin,sizeof(somaLin),1,arq); fwrite(somaCol,sizeof(somaCol),1,arq); fclose(arq); printf("\nAs tres matrizes gravadas\n"); } else printf("\nEntre primeiro com os dados ou gere as outras matrizes\n"); break;

22 Opção 6

23 } /*fecha switch*/ case 4: case 7: if(flag1==1)
printf("\nObrigada por usar meu programa. Autor: \n"); break; default: printf("\nIndisponivel\n"); } /*fecha switch*/ printf("\n\n");system("pause"); }while(op!=7); } case 4: if(flag1==1) { printf("\nGerando Soma Coluna\n"); for(y=0;y<5;y++) { somaCol[y]=0; for(x=0;x<3;x++) somaCol[y]+= mat[x][y]; printf("\nSoma Coluna Gerada\n"); flag4=1; else printf("\nEntre primeiro com os dados\n");

24 Opção 4 Opção 7

25 Função de localização e posicionamento

26 Função de localização e posicionamento
Função que retorna a posição corrente

27 Função de localização e posicionamento
Função que retorna a posição corrente

28 Função de localização e posicionamento
Função que retorna a posição corrente

29 Função de localização e posicionamento

30 Função de localização e posicionamento
Função que desloca o indicador de posição de arquivo para uma determinada posição Função de localização e posicionamento

31 Função de localização e posicionamento
Função que desloca o indicador de posição de arquivo para uma determinada posição Função de localização e posicionamento

32 gravarFtellFseek #include <stdio.h> #include <stdlib.h>
int main() { float valor; FILE *arq; if((arq=fopen("valores", "ab"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else printf("\nValor ou 0: "); scanf("%f", &valor); while(valor != 0 ) fwrite(&valor ,sizeof(valor),1,arq); printf("\nValor ou 0: "); scanf("%f", &valor); } fclose(arq); printf("\n\n"); system("pause"); gravarFtellFseek

33 ler-gravarFtellFseek
#include <stdio.h> #include <stdlib.h> int main() { float valor, valorT; long int pos1; FILE *arq; if((arq=fopen("valores", "rb+"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else printf("\nValores armazenados\n"); pos1=ftell(arq);fread(&valor, sizeof(valor),1,arq); while(!feof(arq) ) printf("\n\nPosicao atual: %ld",pos1 ); printf("\tValor: %7.2f",valor ); pos1=ftell(arq); fread(&valor, sizeof(valor),1,arq); } ler-gravarFtellFseek

34 ler-gravarFtellFseek
pos1=4; valorT=1515; fseek(arq,pos1, SEEK_SET); fwrite(&valorT,sizeof(valorT), 1, arq); fseek(arq, pos1, SEEK_SET); fread(&valor, sizeof(valor),1,arq); printf("\n\nApos Alteracao\nPosicao atual: %ld",pos1 ); printf("\tValor: %7.2f",valor ); fclose(arq); } printf("\n\n"); system("pause"); ler-gravarFtellFseek

35 Função de localização e posicionamento

36 Função função seta o indicador de posição do arquivo no início
Função de localização e posicionamento

37 Função de localização e posicionamento
Função função seta o indicador de posição do arquivo no início

38 Função de localização e posicionamento

39 Função de localização e posicionamento
Função que obtém a posição atual no fluxo, armazenando-a no objeto apontado por pos Função de localização e posicionamento

40 Função de localização e posicionamento
Função que obtém a posição atual no fluxo, armazenando-a no objeto apontado por pos Função de localização e posicionamento

41 Função de localização e posicionamento

42 Função de localização e posicionamento
Função que ajusta o indicador de posição de arquivo para o lugar sinalizado na variável pos Função de localização e posicionamento

43 Função de localização e posicionamento
Função que ajusta o indicador de posição de arquivo para o lugar sinalizado na variável pos Função de localização e posicionamento

44 gravarFgetpos #include <stdio.h> #include <stdlib.h>
int main() { float valor; FILE *arq; if((arq=fopen("valores", "ab"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else printf("\nValor ou 0: "); scanf("%f", &valor); while(valor != 0 ) fwrite(&valor ,sizeof(valor),1,arq); printf("\nValor ou 0: "); scanf("%f", &valor); } fclose(arq); printf("\n\n"); system("pause"); gravarFgetpos

45 ler-gravarFgetposFsetpos
#include <stdio.h> #include <stdlib.h> int main() { float valor, valorT; fpos_t pos1; FILE *arq; if((arq=fopen("valores", "rb+"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else printf("\nValores armazenados\n"); fgetpos(arq, &pos1);fread(&valor, sizeof(valor),1,arq); while(!feof(arq) ) printf("\n\nPosicao atual: %ld",pos1 ); printf("\tValor: %9.2f",valor ); fgetpos(arq, &pos1); fread(&valor, sizeof(valor),1,arq); } ler-gravarFgetposFsetpos

46 ler-gravarFgetposFsetpos
valorT=1515; fsetpos(arq, &pos1); fwrite(&valorT,sizeof(valorT), 1, arq); fread(&valor, sizeof(valor),1,arq); printf("\n\nApos Alteracao\nPosicao atual: %ld",pos1 ); printf("\tValor: %9.2f",valor ); fclose(arq); } printf("\n\n");system("pause"); ler-gravarFgetposFsetpos

47 Outras funções

48 Função que apaga o arquivo especificado
Outras funções Função que apaga o arquivo especificado

49 Função que apaga o arquivo especificado
Outras funções Função que apaga o arquivo especificado

50 Função que renomeia o arquivo especificado .
Outras funções Função que renomeia o arquivo especificado . Função que apaga o arquivo especificado

51 Função que renomeia o arquivo especificado .
Outras funções Função que renomeia o arquivo especificado . Função que apaga o arquivo especificado

52 O exemplo do funcionário – Trecho Excluir

53 else { printf("\nROTINA DE EXCLUSAO\n"); arq2=fopen("TEMP","wb"); if(arq2==NULL) { printf("\nArquivo nao pode ser aberto\n"); fclose(arq); } { /*pos1 recebeu valor no trecho de busca acima*/ fsetpos(arq,&pos1); fread(&mat,tam,1,arq); fread(&salario,tam2,1,arq); printf("\nMatricula: %5d\tSalario: R$ %9.2f",mat,salario); printf("\nExclui este registro(s/n): "); fgetc(stdin);scanf("%c",&ch); if(toupper(ch)=='S') auxI=mat; auxR=salario; rewind(arq); Funcionário

54 fread(&mat,tam,1,arq); while( !feof(arq)) { fread(&salario,tam2,1,arq); if(mat != auxI) fwrite(&mat,tam,1,arq2); fwrite(&salario, tam2, 1, arq2); } fclose(arq); fclose(arq2); remove("funcionarios"); rename("TEMP","funcionarios"); else { fclose(arq); fclose(arq2); } Funcionário

55 Vamos ao Bate Pronto

56 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ?

57 R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ?

58 2) Qual função que grava no arquivo?
R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ?

59 R: fwrite() 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ?

60 3) Qual a função que lê do arquivo?
R: fwrite() 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ?

61 R: fread() 3) Qual a função que lê do arquivo? R: fwrite() 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ?

62 4) Qual a função que pode substituir rewind(arqPtr); ?

63 R: fseek(arqPtr, 0, SEEK_END);
4) Qual a função que pode substituir rewind(arqPtr); ?

64 R: fseek(arqPtr, 0, SEEK_END);
5) Com a função fgetpos(), conseguimos obter a posição atual do fluxo e, com função fsetpos(), posicionar o cursor no local desejado. Que outras funções poderiam fazer essas ações ? 4) Qual a função que pode substituir rewind(arqPtr); ?

65 R: ftell() e fseek() R: fseek(arqPtr, 0, SEEK_END); 5) Com a função fgetpos(), conseguimos obter a posição atual do fluxo e, com função fsetpos(), posicionar o cursor no local desejado. Que outras funções poderiam fazer essas ações ? 4) Qual a função que pode substituir rewind(arqPtr); ?

66 Resumindo


Carregar ppt "LINGUAGEM DE PROGRAMAÇÃO I"

Apresentações semelhantes


Anúncios Google