Buscar

Programação Estruturada parte 9

Prévia do material em texto

Programação Estruturada
Prof.ª: Priscilla Abreu
pbraz@unicarioca.edu.br
Disciplina – Programação Estruturada
Roteiro de aula:
• Objetivo da aula
– Arquivos
• Conceito
• Manipulação
• Exercícios
2Algoritmos II
MANIPULAÇÃO DE ARQUIVOS
3Programação Estruturada
Introdução - Arquivos
̶ Até o momento: foco em manipulação de dados
apenas na memória principal do computador;
̶ Arquivos: possibilidade de guardar os dados em
memória secundária e manipulá-los posteriormente.
4Programação Estruturada
Arquivos
Coleção de bytes armazenados em dispositivos de
memória secundária (disco rígido, pen drive, ...)
que são referenciados através de nomes que os
identificam.
5Programação Estruturada
Manipulação de dados em um arquivo
Acesso e manipulação de arquivos por meio de:
̶ Leitura e gravação de caracteres;
̶ Leitura e gravação de strings;
̶ Leitura e gravação de dados formatados;
̶ Leitura e gravação de blocos de informações
estruturadas.
8Programação Estruturada
Arquivo texto x arquivo binário
̶ Dois modos de acesso aos arquivos: modo texto e
modo binário;
̶ Arquivos texto: interpretados como uma sequência
de caracteres ASCII, que é agrupada em linhas,
separadas pelo caractere ‘\n’.
̶ Arquivos binário: transferência de dados da forma
como os dados são armazenados na memória do
computador.
9Programação Estruturada
Arquivo texto x arquivo binário
̶ Exemplo: Número 109751 armazenado em arquivo
texto ocupa 5 bytes, já no modo binário ocupa 4
bytes.
̶ Arquivos texto ocupam mais espaço do que arquivos
binários. Geralmente, arquivos binários são
manipulados mais rapidamente do que os de texto.
̶ Arquivos no modo texto, após a execução do
programa, podem ser acessados facilmente por um
editor de texto, tendo seu conteúdo legível.
10Programação Estruturada
A estrutura FILE
̶ Ponteiros de arquivos para a leitura e escrita em
arquivos:
̶ Relaciona o sistema de E/S a um buffer e contém informações
do arquivo;
̶ Não aponta diretamente para o arquivo em disco, controla qual
o próximo byte a ser acessado por um comando de leitura.
̶ Declaração:
̶ FILE *ponteiro;
̶ Exemplo:
̶ FILE *fptr;
̶ FILE *p;
11Programação Estruturada
Abrindo um arquivo
̶ Preparar o arquivo para operações de leitura e/ou escrita,
devolvendo um ponteiro para a estrutura FILE associada.
̶ Sintaxe:
̶ Ponteiro = fopen(nome, modo);
̶ Exemplos:
̶ ftpr = fopen("teste.txt", "r"); //mesma pasta do arquivo .c
̶ arquivo = fopen("teste.bin", "wb");
̶ pontarq = fopen("c:\\tmp\\teste.txt", "w+");
12Programação Estruturada
Abrindo um arquivo
13Programação Estruturada
Tipo
Descrição
Texto Binário
“r” “rb” Abre um arquivo para leitura, que deve existir 
no disco.
“w” “wb” Abre um arquivo para escrita. Caso ele já 
exista, ele será destruído e reinicializado. 
Caso contrário, ele será criado.
“a” “ab” Abre um arquivo para gravação. Caso ele já 
exista, os dados serão adicionados ao seu 
final. Caso contrário, ele será criado.
“r+”
“w+”
“a+”
“r+b”
“w+b”
“a+b”
Abre um arquivo texto/binário para a 
leitura/escrita. Se não existir, ele será criado.
Abrindo um arquivo
̶ Erro na abertura:
FILE *pont;
pont = fopen("teste.bin", "wb");
if (pont != NULL)
printf(“Arquivo aberto com sucesso!”);
else
printf(“Erro! Arquivo não foi criado!”);
14Programação Estruturada
Fechando um arquivo
̶ Ao encerrar o processamento de um arquivo
devemos fechá-lo.
̶ Sintaxe:
̶ fclose(ptarq);
15Programação Estruturada
Manipulação de dados em um arquivo
Acesso e manipulação de arquivos por meio de:
̶ Leitura e gravação de caracteres;
̶ Dados são lidos e gravados caractere a caractere;
̶ Funções:
̶ getc(caracter, ponteiro) => leitura de caracter de um arquivo;
̶ putc(caracter, ponteiro) => gravação de caracter em um arquivo.
16Programação Estruturada
Gravação de caracteres em arquivo texto
̶ putc(caracter, ponteiro)
#include <stdio.h>
int main(){
char c;
FILE *ptArq;
ptArq = fopen("exemplo.txt", "w");
if (ptArq != NULL)
printf("Arquivo criado com sucesso!");
else{
printf("Arquivo não foi criado!");
exit(0);
}
17Programação Estruturada
printf("Digite um caracter: ");
scanf("%c", &c);
putc(c, ptArq);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
Gravação de caracteres em arquivo texto
̶ Exemplo: escrevendo vários caracteres
#include <stdio.h>
int main(){
char c;
FILE *ptArq;
ptArq = fopen("exemplo.txt", "w");
if (ptArq != NULL)
printf("Arquivo criado com sucesso!");
else{
printf("Arquivo não foi criado!");
exit(0);
}
18Programação Estruturada
Gravação de caracteres em arquivo texto
do{
printf("Digite um caracter: ");
fflush(stdin);
scanf("%c", &c);
putc(c, ptArq);
}while (c != ' ');
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
19Programação Estruturada
Leitura de caracteres em arquivo texto
̶ getc(ponteiro)
Realiza a leitura de um arquivo caracter a caracter. Quando chega
ao final do arquivo, a função retorna o valor EOF (End of File).
Exemplo:
#include <stdio.h>
#include <conio.h>
int main(){
char c= ‘ ’;
FILE *ptArq;
ptArq = fopen("exemplo_leitura.txt", "r");
20Programação Estruturada
Leitura de caracteres em arquivo texto
if (ptArq != NULL)
printf("Arquivo acessado com sucesso!");
else{
printf("Arquivo não foi aberto!");
exit(0);
}
do{
c = getc(ptArq);
printf("%c", c);
}while (c != EOF);
printf("\n Fechando o arquivo... ");
fclose(ptArq);
}
21Programação Estruturada
Manipulação de dados em um arquivo
Acesso e manipulação de arquivos por meio de:
̶ Leitura e gravação de strings (exclusivo para arquivos
do tipo texto);
̶ Dados são lidos e gravados por meio de strings;
̶ Funções:
̶ fgets(string, tamanho, ponteiro) => leitura de string;
̶ fputs(endereço_string, ponteiro) => gravação de string.
22Programação Estruturada
Leitura de strings em arquivo texto
Acesso e manipulação de arquivos por meio de:
̶ fgets(string, tamanho, ponteiro) => leitura de string;
̶ A função faz a leitura de uma linha inteira;
̶ A função finaliza a leitura quando lê um caractere de nova
linha (‘\n’) ou quando recebe o status EOF, retornando o
endereço da string lida, que será NULL quando chegar ao fim
do arquivo.
̶ Exemplo:
fgets(texto, 91, pontArq);
Lê até 90 caracteres ou até o ‘\n’ do arquivo associado a
pontarq e armazena-os em texto, como uma string.
23Programação Estruturada
Leitura de strings em arquivo texto
Exemplo: leitura de 1 linha do arquivo
#include <stdio.h>
int main(){
char string[100];
FILE *ptArq;
ptArq = fopen("exemplo.txt", "r");
if (ptArq != NULL)
printf("Arquivo aberto com sucesso! ");
else{
printf("Arquivo não foi criado! ");
exit(0);
}
24Programação Estruturada
Leitura de strings em arquivo texto
printf("Conteúdo lido:\n");
fgets(string, 100, ptArq);
printf("%s", string);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
25Programação Estruturada
Leitura de strings em arquivo texto
Exemplo: leitura de todo o arquivo
#include <stdio.h>
int main(){
char string[100];
FILE *ptArq;
ptArq = fopen("exemplo.txt", "r");
if (ptArq != NULL)
printf("Arquivo aberto com sucesso! ");
else{
printf("Arquivo não foi criado! ");
exit(0);
}
26Programação Estruturada
Leitura de strings em arquivo texto
printf("Conteúdo lido:\n");
while( (fgets(string, 100, ptArq))!=NULL )
printf("%s\n", string);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
27Programação Estruturada
Gravação de strings em arquivo texto
Acesso e manipulação de arquivos por meio de:
̶ fputs(endString, ponteiro) => gravação de string;
̶ A função faz a gravação linha a linha;
̶ A função não coloca o caracter ‘\n’ ao final da gravação da
linha. É necessário fazer isso explicitamente.
̶ Exemplo:
fputs( string, pontArq);
fputs("\n", pontArq);
28Programação Estruturada
Gravação de strings em arquivo texto
Exemplo:
#include <stdio.h>
int main(){
char string[100];
FILE *ptArq;
ptArq = fopen("exemplo.txt", "w");
if (ptArq != NULL)
printf("Arquivo criado com sucesso!");
else{
printf("Arquivo não foi criado!");
exit(0);}
29Programação Estruturada
Leitura de strings em arquivo texto
printf(“Digite a informação que deseja gravar no
arquivo:”);
fgets(string, 100, stdin); //ou gets(string);
fputs(string, ptArq);
fputs("\n",ptArq);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
30Programação Estruturada
Manipulação de dados em um arquivo
Acesso e manipulação de arquivos por meio de:
̶ Leitura e gravação de dados formatados;
̶ Dados são lidos e gravados com formato, semelhante ao
uso dos comandos printf e scanf;
̶ Usados para arquivo texto.
̶ Funções:
̶ fscanf(ponteiro, “operador/formato”, &argumentos) => leitura de
dado formatado;
̶ fprintf(ponteiro, “operador/formato”, argumentos) => gravação
de dado formatado.
31Programação Estruturada
Leitura e gravação de dados formatados
̶ Exemplo de gravação formatada
#include <stdio.h>
int main(){
FILE *ptArq; int idade=20;
ptArq = fopen("exemplo.txt", "w");
if (ptArq != NULL){
printf("Arquivo criado com sucesso!");
else{
printf("Arquivo não foi criado!");
exit(0);
}
32Programação Estruturada
Leitura e gravação de dados formatados
fprintf(ptArq, "Isso é um teste!\n");
fprintf(ptArq, "%d\n", idade);
fprintf(ptArq, "%s tem %d anos\n", "João", idade);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
33Programação Estruturada
Leitura e gravação de dados formatados
̶ Exemplo de gravação formatada
#include <stdio.h>
int main(){
FILE *ptArq; int idade; char nome[50];
ptArq = fopen("exemplo.txt", "w");
if (ptArq != NULL){
printf("Arquivo criado com sucesso!");
else{
printf("Arquivo não foi criado!");
exit(0);
}
34Programação Estruturada
Leitura e gravação de dados formatados
printf("Informe o seu nome");
gets(nome);
printf("Informe sua idade:");
scanf("%d",&idade);
fprintf(ptArq, "Nome\tIdade\n");
fprintf(ptArq, "%s\t%d\n", nome, idade);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
35Programação Estruturada
Leitura e gravação de dados formatados
̶ Exemplo de leitura formatada
#include <stdio.h>
#include <string.h>
int main(){
FILE *ptArq; int idade=0; char nome[20];
ptArq = fopen("leitura.txt", "r");
if (ptArq != NULL)
printf("Arquivo criado com sucesso!");
else{
printf("Arquivo não foi criado!");
exit(0);
}
36Programação Estruturada
Leitura e gravação de dados formatados
fscanf(ptArq, "%d", &idade);
printf("\nIdade lida: %d", idade);
fscanf(ptArq, "%s %d", nome, &idade);
printf("\nNome e idade lidos foram: %s, %d", nome,
idade);
printf("\n Fechando o arquivo...");
fclose(ptArq);
}
37Programação Estruturada
DÚVIDAS ?
38Programação Estruturada
Exercício
1) Faça um programa que armazene em um arquivo
denominado raizQuadrada.txt uma tabela de raízes
quadradas dos cem primeiros inteiros positivos.
2) Faça um programa que defina uma estrutura (código,
nome, idade e endereço) e após cadastrar seus dados,
grave o conteúdo da estrutura no arquivo texto
gravStruct.txt. Crie um cabeçalho para esse arquivo,
contendo o nome de cada informação armazenada.
Utilize a opção \t para a tabulação entre os dados do
cabeçalho e os dados do registro.
39Programação Estruturada

Continue navegando