Sie sind auf Seite 1von 28

ECT2303 – Linguagem de Programação

Aula 22b þ Operações com Arquivos

Einstein Santos

UFRN

24 de outubro de 2018

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 1 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 2 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 3 / 28


O que é um arquivo
Definição

Arquivo é uma sequência de bytes armazenados em um dispositivo de


armazenamento. O dispositivo de armazenamento pode ser um disco
rígido, um CD, um DVD, um pendrive, um cartão de memória, dentre
outros.
Exemplos de tipos de arquivos: txt, mp3, flac, png, jpeg, mp4, mkv,
avi, etc.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 4 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 5 / 28


Os arquivos IOSTREAM e FSTREAM
Definição

As classes usadas para impressão em vídeo e leitura do teclado estão


declaradas no arquivo IOSTREAM.
As classes usadas para leitura e gravação em discos são declaradas
no arquivo FSTREAM.
A classe ifstream é usada na manipulação de arquivos em disco para
leitura.
A classe ofstream é usada na manipulação de arquivos em disco para
escrita.
A classe fstream é usada na manipulação de arquivos em disco para
leitura e escrita (configuração via modos de abertura de arquivos).

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 6 / 28


Modos de abertura de arquivos
Descrição dos modos de abertura de arquivos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 7 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 8 / 28


Abrindo e fechando um arquivo para escrita
Manipulação de arquivos: escrita

Uma maneira de criarmos / abrirmos um arquivo para escrita é


utilizando a seguinte instrução:

ofstream nomeDoObjeto("nomeDoArquivo.txt");

onde,
ofstream: classe utilizada para escrita;
nomeDoObjeto: nome do objeto vinculado ao arquivo; e
“nomeDoArquivo.txt”: nome do arquivo e sua extensão.

Þ Obs.: Por padrão, o arquivo é criado em modo texto.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 9 / 28


Abrindo e fechando um arquivo para escrita
Manipulação de arquivos: escrita

Para fecharmos um arquivo utilizamos a instrução que segue:

nomeDoObjeto.close();

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 10 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 11 / 28


Abrindo e fechando um arquivo para leitura
Manipulação de arquivos: leitura

Uma maneira de abrirmos um arquivo para leitura é utilizando a


seguinte instrução:

ifstream nomeDoObjeto("nomeDoArquivo.txt");

onde,
ifstream: classe utilizada para leitura;
nomeDoObjeto: nome do objeto vinculado ao arquivo; e
“nomeDoArquivo.txt”: nome do arquivo e sua extensão.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 12 / 28


Abrindo e fechando um arquivo para leitura
Manipulação de arquivos: leitura

Para fecharmos um arquivo utilizamos a instrução que segue:

nomeDoObjeto.close();

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 13 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 14 / 28


As funções eof() e is_open()
A função eof()

A função eof() é utilizada para verificar se o fim do arquivo foi


atingido.
Ex.:

ifstream arquivoDeLeitura("teste.txt");
...
while( ! arquivoDeLeitura.eof() )
{
...
}
...

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 15 / 28


As funções eof() e is_open()
A função is_open()

A função is_open() é utilizada para verificar a situação de abertura


de um arquivo.
Ex.:

ifstream arquivoDeLeitura("teste.txt");
...
if( ! arquivoDeLeitura.is_open() )
{
cout <<"Falha ao abrir o arquivo!" <<endl;
exit(1);
}
...

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 16 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 17 / 28


Exemplos
Gravando linha a linha em arquivos em discos

1 # include < fstream >


2 # include < iostream >
3 # include < cstdlib >
4
5 using n a m e s p a c e std ;
6
7 int main ()
8 {
9 ofstream escrita ( " arquivo . txt " ) ;
10
11 if ( ! escrita . is_open () ) {
12 cout <<" Falha ao abrir o arquivo ! " << endl ;
13 exit (1) ;
14 }
15 escrita <<" Quero ler esta linha num arquivo ! " << endl ;
16 escrita <<" ... esta outra também ! " << endl ;
17 escrita < <1000 << endl ;
18
19 int x = 7;
20 float y = 14.11;
21
22 escrita <<x << ’\ t ’ <<y << endl ;
23 escrita . close () ;
24
25 return 0;
26 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 18 / 28


Exemplos
Lendo uma linha por vez em arquivos em discos

1 # include < fstream >


2 # include < iostream >
3 # include < cstdlib >
4
5 using n a m e s p a c e std ;
6
7 int main ()
8 {
9 char linha [80];
10
11 ifstream le ( " arquivo . txt " ) ;
12
13 if ( ! le . is_open () ) {
14 cout <<" Falha ao abrir o arquivo ! " << endl ;
15 exit (1) ;
16 }
17
18 while ( ! le . eof () ) {
19 le . getline ( linha ,80) ;
20 cout << linha << endl ;
21 }
22
23 le . close () ;
24
25 return 0;
26 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 19 / 28


Exemplos
Lendo e gravando um caractere por vez no arquivo

1 # include < fstream >


2 # include < iostream >
3 # include < cstdlib >
4
1 ifstream larq ( " dados . dat " ) ;
5 using n a m e s p a c e std ;
2
6
3 if ( ! larq . is_open () ) {
7 int main ()
4 cout <<" Falha ao abrir o
8 {
arquivo ! " << endl ;
9 ofstream earq ( " dados . dat " ) ;
5 exit (1) ;
10
6 }
11 char ch ;
7
12
8 while ( larq . get ( ch ) ) {
13 if ( ! earq . is_open () ) {
9 cout . put ( ch ) ;
14 cout <<" Falha ao abrir o
10 }
arquivo ! " << endl ;
11
15 exit (1) ;
12 larq . close () ;
16 }
13
17
14 return 0;
18 while ( cin . get ( ch ) && ch !=27) {
15 }
19 earq . put ( ch ) ;
20 }
21
22 earq . close () ;

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 20 / 28


Exemplos
Utilizando modos de abertura de arquivos

1 # include < fstream >


2 # include < iostream >
3 # include < cstdlib >
4
5 using n a m e s p a c e std ;
6
7 int main () 1 elarq . seekg (0) ;
8 { 2
9 fstream elarq ( " dados . dat " , ios :: 3 while ( elarq . get ( ch ) ) {
out | ios :: in | ios :: ate ) ; 4 cout . put ( ch ) ;
10 5 }
11 char ch ; 6
12 7 elarq . close () ;
13 if ( ! elarq . is_open () ) { 8
14 cout <<" Falha ao abrir o 9 return 0;
arquivo ! " << endl ; 10 }
15 exit (1) ;
16 }
17
18 while ( cin . get ( ch ) && ch !=27) {
19 elarq . put ( ch ) ;
20 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 21 / 28


Exemplos
Exemplo – Enunciado

. Implemente um programa em C++ que gere aleatoriamente 100 gru-


pos de 10 jogadas de um dado e as armazene em um arquivo de nome
“jogadas.txt” (cada grupo de 10 jogadas deve estar em uma linha no
arquivo). Implemente outro programa que leia o arquivo gerado e que
processe os dados de modo a encontrar o número com maior frequên-
cia.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 22 / 28


Exemplos
Exemplo – Implementação

1 # include < fstream >


2 # include < iostream >
3 # include < cstdlib > 1 srand ( time ( NULL ) ) ;
4 # include < ctime > 2
5 # include < iomanip > 3 for ( int i =0; i <100; i ++) {
6 4 for ( int j =0; j <10; j ++) {
7 using n a m e s p a c e std ; 5 escreve << setw (3) << rand () %6
8 + 1;
9 int main () 6 }
10 { 7 escreve << endl ;
11 ofstream escreve ( " jogadas . txt " ) ; 8 }
12 9
13 if ( ! escreve . is_open () ) { 10 escreve . close () ;
14 cout <<" Falha ao abrir o 11
arquivo ! " 12 return 0;
15 << endl ; 13 }
16 exit (1) ;
17 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 23 / 28


Exemplos
Exemplo – Implementação

1 # include < fstream >


2 # include < iostream >
3 # include < cstdlib >
4
1 maior_quant = cont [0];
5 using n a m e s p a c e std ;
2 maior = 1;
6
3
7 int main ()
4 for ( int i =1; i <6; i ++) {
8 {
5 if ( cont [ i ] > maior_quant ) {
9 ifstream le ( " jogadas . txt " ) ;
6 maior_quant = cont [ i ];
10
7 maior = i +1;
11 if ( ! le . is_open () ) {
8 }
12 cout <<" Falha ao abrir o
9 }
arquivo ! " << endl ;
10
13 exit (1) ;
11 cout <<" \ nNúmero com maior
14 }
12 frequência : " << maior
15
13 << endl ;
16 int n , cont [6]={} , maior ,
14
maior_quant ;
15 le . close () ;
17
16
18 while ( ! le . eof () ) {
17 return 0;
19 for ( int i =0; i <10; i ++) {
18 }
20 le >>n ;
21 cont [n -1]++;
22 }
23 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 24 / 28


Sumário

1 O que é um arquivo

2 Os arquivos IOSTREAM e FSTREAM

3 Abrindo e fechando um arquivo para escrita

4 Abrindo e fechando um arquivo para leitura

5 As funções eof() e is_open()

6 Exemplos

7 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 25 / 28


Exercícios

1. Implemente um programa em C++ que armazene em um arquivo a


matrícula, o nome e o e-mail de n alunos fornecidos pelo usuário.
Também deve ser implementado um programa para ler os dados ar-
mazenados no arquivo criado. Esse programa deve ler do teclado um
ano fornecido pelo usuário e exibir os dados de todos os alunos cuja
matrícula possua esse ano.
2. Implemente um programa em C++ que leia um arquivo com todos os
jogos da Mega-Senaa e que armazene em um segundo arquivo a por-
centagem de vezes que cada número (1-60) foi sorteado.
3. Implemente um programa em C++ que leia um arquivo com um texto
qualquer e que efetue o levantamento da frequência das letras per-
tencentes ao texto. O levantamento deverá ser armazenado em um
arquivo.
a http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 26 / 28


Atividade Extraclasse
Pesquisa

- Pesquise a biblioteca fstream.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 27 / 28


Operações com Arquivos

Fim da aula 22b

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de outubro de 2018 28 / 28

Das könnte Ihnen auch gefallen