Buscar

Linguagem de Programação I Aula 10 (Original)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

LINGUAGEM DE PROGRAMAÇÃO I
Aula 10- Armazenando para preservar - 2a parte 
Atenção aos Temas Principais dessa Aula
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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. 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Direto ao Assunto
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
TRABALHANDO COM ARQUIVO BINÁRIO
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Funções de leitura e gravação em arquivos binários
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Funções de leitura e gravação em arquivos binários
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Funções de leitura e gravação em arquivos binários
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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);
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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çãosizeof (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âmetrotamanho
ptrArq
variável ponteiro de arquivo que aponta para o arquivo externo
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Exemplo de um programa com menu, matrizes bidimensionais e arquivo binário
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
#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");
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
#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");
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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;
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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");
 for(x=0;x<3;x++)
 { somaLin[x]=0; 
 for(y=0;y<5;y++)
 somaLin[x]+= mat[x][y]; 
 } 
 printf("\nSoma Linha Gerada\n");
 flag3=1;
}
 else printf("\nEntre primeiro com os dados\n"); 
 break;
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Opção 1
Opção 3
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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; 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Opção 2
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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");
 for(y=0;y<5;y++)
 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; 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Opção 5
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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; 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Opção 6
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 case 7:
 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"); 
 break;
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Opção 4
Opção 7
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Função que retorna a posição corrente
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Função que retorna a posição corrente
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Função que retorna a posição corrente
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função que desloca o indicador de posição de arquivo para uma determinada posição
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função que desloca o indicador de posição de arquivo para uma determinada posição
Função de localização e posicionamento
Armazenando para preservar
- 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
#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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
#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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função função seta o indicador de posição do arquivo no início
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Função função seta o indicador de posição do arquivo no início
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Função de localização e posicionamento
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
#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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
#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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 pos1=4; 
 valorT=1515;
 fsetpos(arq, &pos1); 
 fwrite(&valorT,sizeof(valorT), 1, arq);
 fsetpos(arq, &pos1); 
 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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Outras funções 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Outras funções 
Função que apaga o arquivo especificado 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Outras funções 
Função que apaga o arquivo especificado 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Outras funções 
Função que renomeia o arquivo especificado .
Função que apaga o arquivo especificado 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Outras funções 
Função que renomeia o arquivo especificado .
Função que apaga o arquivo especificado 
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
O exemplo do funcionário – Trecho Excluir
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
else
{ printf("\nROTINA DE EXCLUSAO\n");
 arq2=fopen("TEMP","wb");
 if(arq2==NULL)
 { printf("\nArquivo nao pode ser aberto\n"); fclose(arq); }
 else
 {
 /*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
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
 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);
 }
 fread(&mat,tam,1,arq);
 }
 fclose(arq); fclose(arq2);
 remove("funcionarios"); 
 rename("TEMP","funcionarios");
 }
 else { fclose(arq); fclose(arq2); } 
 }
 }
Funcionário
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Vamos ao Bate Pronto
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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 ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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 ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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 ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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 ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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 ?
Armazenando para preservar - 2a parte– Aula
10
LINGUAGEM DE PROGRAMAÇÃO I
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 ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
4) Qual a função que pode substituir rewind(arqPtr); ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
R: fseek(arqPtr, 0, SEEK_END);
4) Qual a função que pode substituir rewind(arqPtr); ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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); ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
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); ?
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I
Resumindo
Armazenando para preservar - 2a parte– Aula 10
LINGUAGEM DE PROGRAMAÇÃO I

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais