2. PEA - Programação Estruturada II
Vamos ver o PEA:
Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as aulas
lecionadas e vamos ver as próximas lições até o fim do curso.
PEA - Programação Estruturada II
Prof. Thomás da Costa Programação Estruturada II
Vamos ver o que aprendemos
até agora !!!
3. Status Matéria
Apresentação da disciplina. Revisão de aspectos básicos da linguagem C.
Depuração e documentação interna de programas.
Conceituação de modularização. Utilização de Funções. Passagem de
parâmetros por valor.
Utilização de Funções. Passagem de parâmetros por referência. Exemplos e
exercícios.
Definição de tipos. Tipos definidos pelo programador. Utilização do tipo struct.
Conceituação, principais utilizações, exemplos e exercícios.
Abordagem dos tipos union e enum. Conceituação, principais utilizações,
exemplos e exercícios.
Revisão
Atividades de Avaliação.
PEA - Programação Estruturada II
Prof. Thomás da Costa Programação Estruturada II
4. PEA - Programação Estruturada II
Prof. Thomás da Costa Programação Estruturada II
Vamos ver as próximas aulas
até o fim do curso !!!
5. Status Matéria
Introdução a arquivos de dados. Conceito de campos e registros. Criação de registros e criação de
arquivos.
Operações com arquivos: inclusão de registro, consulta a registros. Fechamento de arquivos.
Exemplos e exercícios.
Operações com arquivos: exclusão de registros, alterações de registros. Exercícios em sala.
Exercícios com arquivos.
Conceito de recursividade. Aplicações. Exemplos de programas recursivos.
Recursão: exercícios.
Introdução a ponteiros e suas aplicações. Exemplos e exercícios em sala.
Tipos de ponteiros. Utilização de operadores aritméticos e de comparação em ponteiros. Exercícios.
Introdução a Ponteiros avançados e operadores bit-a-bit
Ponteiros avançados e operadores bit-a-bit. Exemplos e exercícios.
Revisão
Prova Escrita Oficial
Prova Substitutiva
PEA - Programação Estruturada II
Prof. Thomás da Costa Programação Estruturada II
6. Avaliação – B2
Avaliação – B2
- Período das avaliações B2: 15 até 19 de Junho
- Data da Avaliação B2: 15 de junho (SIS) e 16 de junho (TADS)
- Obrigatoriamente, avaliação da B2 é PROVA
- PROVA SUBSTITUTIVA SUBSTITUI A NOTA DA B2, NÃO SUBSTITUI A MENOR NOTA
DAS PROVAS OU A B1
- Matéria da Prova é todo o conteúdo do semestre
- Será disponibilizado uma lista com 20 exercícios para estudar
Prof. Thomás da Costa Programação Estruturada II
7. ATPS – B2
ATPS – B2
- Data de Entrega B2: 08 de junho (SIS) e 09 de junho (TADS)
- O prazo para entrega é até as 20h50 do dia 08 (SIS) e 09 (TADS)
- Fora desse horário não será aceito
- Grupo no máximo de 5 pessoas
- Efetuar a entrega da ETAPA 3 e ETAPA 4
- Fazer os exercícios em C++. Se for feito em C será considerado ERRADO
- Façam a REVISÃO do trabalho antes de imprimir e entregar
- Seguir a Normalização de Trabalhos Acadêmicos :
http://www.anhanguera.com/bibliotecas/biblioteca-virtual/pagina/normalizacao
Prof. Thomás da Costa Programação Estruturada II
9. Arquivos
Bem conhecido no nosso dia-a-dia:
Todos os dias no nosso trabalho ou em casa utilizamos arquivos para armazenar
informações tais como: imagem, texto, trabalho de faculdade, relatórios, planilhas
de gastos e etc. Até esse ponto do curso, todas as informações eram armazenadas
na memória, ou seja, quando um programa terminava não existia nenhum
processo de armazenamento de dados.
Vamos aprender a armazenar informações em arquivos textos ou de dados !!!
Arquivos
Prof. Thomás da Costa Programação Estruturada II
10. Arquivos
Tipos de Arquivos:
Texto: armazena somente texto e caracteres. Normalmente possuem extensão txt
Binário: arquivos que podem armazenar textos, imagens, planilhas e outros tipos
de informações. Algumas extensões conhecidas: pdf, doc, xls, gif
Arquivos
Prof. Thomás da Costa Programação Estruturada II
11. Arquivos
Criando arquivos textos em C++:
Arquivos
Prof. Thomás da Costa Programação Estruturada II
#include <fstream>
...
ofstream ofs;
ofs.open("ola_mundo.txt", ios::out);
Include da biblioteca de arquivos
Variável do arquivo
Nome do arquivo
Formato de abertura do arquivo
12. Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void gravar_arquivo();
int main()
{
gravar_arquivo();
}
void gravar_arquivo()
{
string valor;
valor = "Ola Mundo";
ofstream ofs;
ofs.open("ola_mundo.txt", ios::out);
ofs << valor;
ofs.close();
}
Exemplo 1
Grava um texto no arquivo
O tipo string é semelhante a um vetor de char,
ou seja, armazena um conjunto de caracteres
13. Arquivos
Lendo arquivos textos em C++:
Arquivos
Prof. Thomás da Costa Programação Estruturada II
#include <fstream>
...
ifstream ifs;
ifs.open("ola_mundo.txt", ios::in);
Include da biblioteca de arquivos
Variável do arquivo
Nome do arquivo
Formato de abertura do arquivo
14. Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void ler_arquivo();
int main()
{
ler_arquivo();
}
void ler_arquivo()
{
string valor;
ifstream ifs;
ifs.open("ola_mundo.txt", ios::in);
if (!ifs.is_open())
{
cout << "Não foi possivel abrir o arquivo" << endl;
return;
}
getline(ifs, valor);
cout << "Conteúdo do Arquivo:" << valor << endl;
ifs.close();
}
Exemplo 2
Efetua a leitura de uma
linha no arquivo
15. Arquivos
Lembrete:
Sempre que um arquivo for aberto para leitura ou escrita, o mesmo deve ser
fechado, para que possa ser utilizado por outros programas e não ocupar recursos
do sistema operacional.
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Utilizar o comando close() dos objetos
ofstream e ifstream !!!
16. Arquivos
Novos tipos e comandos:
string: novo tipo de variável, semelhante a um vetor de char
getline: efetua a leitura de uma linha de um arquivo
is_open: verifica se o arquivo foi aberto ou criado corretamente no disco. Exemplo
de problemas: falta de espaço em disco, diretório não existente e etc
Arquivos
Prof. Thomás da Costa Programação Estruturada II
17. Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void gravar_arquivo();
int main()
{
gravar_arquivo();
}
void gravar_arquivo()
{
int valor_1;
double valor_2;
float valor_3;
char valor_4;
cin >> valor_1;
cin >> valor_2;
cin >> valor_3;
cin >> valor_4;
ofstream ofs;
ofs.open("numeros.txt", ios::out);
ofs << valor_1 << endl;
ofs << valor_2 << endl;
ofs << valor_3 << endl;
ofs << valor_4 << endl;
ofs.close();
}
Exemplo 3
Lendo valores a partir do teclado
Gravando os valores sequencialmente
18. #include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void ler_arquivo();
int main()
{
ler_arquivo();
}
Prof. Thomás da Costa Programação Estruturada II
void ler_arquivo()
{
int valor_1;
double valor_2;
float valor_3;
char valor_4;
ifstream ifs;
ifs.open("numeros.txt", ios::in);
if (!ifs.is_open())
{
cout << "Não foi possivel abrir o arquivo" << endl;
return;
}
ifs >> valor_1;
ifs >> valor_2;
ifs >> valor_3;
ifs >> valor_4;
cout << "Valores do arquivo:" << valor_1 << ","
<< valor_2 << "," << valor_3 << "," << valor_4;
ifs.close();
}
Exemplo 4
Lendo os valores sequencialmente
19. Arquivos
Formas de abertura de um arquivo:
Quando trabalhamos com arquivos, existem várias formas de leitura e escrita.
Podemos abrir o arquivo somente para leitura, escrita, escrita/leitura e etc. Para
escolher a forma de trabalhar com o arquivo, passamos parâmetros na função
open do ofstream ou do ifstream conforme a tabela abaixo:
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Parâmetro Descrição
ios::in Efetua operação de leitura de arquivo (Sempre usar no ifstream)
ios::out Efetua operação de escrita de arquivo (Sempre usar no ofstream)
ios::binary Cria um arquivo binário
ios::app Insere valores no fim do arquivo
ios::trunc Apaga o conteúdo do arquivo e substitui por um novo
20. Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void gravar_fim_arquivo();
int main()
{
gravar_fim_arquivo();
}
void gravar_fim_arquivo()
{
string valor;
valor = "Nova linha no arquivo";
ofstream ofs;
ofs.open("arquivo_linhas.txt", ios::out | ios::app);
ofs << valor << endl;
ofs.close();
}
Exemplo 5
Abre o arquivo para escrita e
insere valores no final do arquivo
21. Arquivos
Lendo um arquivo com várias linhas:
Normalmente um arquivo texto possui várias linhas de caracteres. Quando
desenvolvemos um programa para ler um arquivo, não temos ideia do seu
tamanho. Para efetuarmos a leitura do arquivo até o seu fim, utilizamos o
comando getline dentro de uma instrução while.
Arquivos
Prof. Thomás da Costa Programação Estruturada II
O comando getline busca sempre o
fim de linha
22. Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void gravar_arquivo();
int main()
{
gravar_arquivo();
}
void gravar_arquivo()
{
string valor;
ofstream ofs;
ofs.open("arquivo_linhas.txt", ios::out);
valor = "O que são funções:";
ofs << valor << endl;
valor = "São rotinas que tem como objetivo, "
"executar trechos de códigos de forma modular, "
"melhorando a organização do programa e evitando repetição de
código.";
ofs << valor << endl;
valor = "As funções são reutilizáveis dentro de um programa.";
ofs << valor << endl;
ofs.close();
}
Exemplo 6
Criando um arquivo com várias
linhas. No nosso caso, 3 linhas.
23. Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <fstream>
#include <strings.h>
using namespace std;
void ler_arquivo();
int main()
{
ler_arquivo();
}
void ler_arquivo()
{
string linha;
ifstream ifs;
ifs.open("arquivo_linhas.txt", ios::in);
if (!ifs.is_open())
{
cout << "Não foi possivel abrir o arquivo" << endl;
return;
}
while (getline(ifs, linha))
{
cout << linha << endl;
}
ifs.close();
}
Exemplo 7
Utilizando getline para efetuar a leitura de
uma linha. Enquanto existir linha no
arquivo, a leitura será efetuada
24. Arquivos
Gravando estruturas em arquivo:
Até agora vimos como gravar informações no formato texto.
Neste ponto da matéria, iremos aprender a gravar um estrutura dentro de um
arquivo. A estrutura é gravado em um arquivo no formato binário
Para isso vamos aprender uma nova forma de trabalhar com arquivo. Essa nova
forma, podemos gravar e ler informações utilizando apenas um tipo de variável,
sem precisar usar o ofstream e o ifstream
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Vamos ver a nova forma de gravação em arquivos !!!
25. #include <fstream>
...
fstream fst;
fst.open("registros.dat",
ios::in | ios::out | ios::app | ios::binary);
Arquivos
Escrevendo/Lendo arquivos textos e binários em C++:
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Include da biblioteca de arquivos
Variável do arquivo
Nome do arquivo
Formato de abertura do arquivo
26. fst.write((char *)&alu, sizeof(alu));
Arquivos
Gravando uma estrutura em um arquivo:
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Comando para gravação
“Cast” da estrutura para char
Tamanho da estrutura que será gravada
27. Prof. Thomás da Costa Programação Estruturada II
Exemplo 8
#include <iostream>
#include <fstream>
#include <strings.h>
#include <limits>
using namespace std;
struct alunos
{
long id;
char nome[255];
char ra[30];
int idade;
};
void gravar_arquivo_registros();
int main()
{
gravar_arquivo_registros();
}
void gravar_arquivo_registros()
{
alunos alu;
cout << "Digite o nome do aluno:";
gets(alu.nome);
cout << "Digite o RA do aluno:";
gets(alu.ra);
cout << "Digite a idade do aluno:";
cin >> alu.idade;
fstream fst;
fst.open("registros.dat",
ios::in | ios::out | ios::app | ios::binary);
if (!fst.is_open())
{
cout << "Não foi possivel abrir o arquivo"
<< endl;
return;
}
fst.write((char *)&alu, sizeof(alu));
fst.close();
}
Gravando uma estrutura no
arquivo
28. fst.read((char *)&alu,sizeof(alu))
Arquivos
Lendo uma estrutura em um arquivo:
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Comando para leitura
“Cast” da estrutura para char
Tamanho da estrutura que será lida
29. Prof. Thomás da Costa Programação Estruturada II
Exemplo 9
#include <iostream>
#include <fstream>
#include <strings.h>
#include <limits>
using namespace std;
struct alunos
{
long id;
char nome[255];
char ra[30];
int idade;
};
void ler_arquivo_registros();
int main()
{
ler_arquivo_registros();
}
void ler_arquivo_registros()
{
alunos alu;
fstream fst;
fst.open("registros.dat",
ios::in | ios::out | ios::app | ios::binary);
if (!fst.is_open())
{
cout << "Não foi possivel abrir o arquivo";
return;
}
while (fst.read((char *)&alu,sizeof(alu)))
{
cout << "************************" << endl;
cout << "Nome:" << alu.nome << endl;
cout << "RA:" << alu.ra << endl;
cout << "Idade:" << alu.idade << endl;
}
fst.close();
}
Lendo uma estrutura do
arquivo
30. Arquivos
Resumo:
- Existem dois formatos de arquivos: texto e binário
- Utilizamos o tipo ofstream para escrita em um arquivo
- Utilizamos o tipo ifstream para leitura em um arquivo
- Podemos gravar uma estrutura em um arquivo
- O tipo fstream é utilizado para escrita e leitura de arquivos
- Devemos sempre fechar o arquivo com o close do tipo específico do arquivo
- O tipo string é semelhante a um vetor de char
- O comando getline efetua a leitura de uma linha em um arquivo texto
- O is_open tem como finalidade, indicar se o arquivo foi aberto ou criado
corretamente
- Para efetuar a leitura de um arquivo com várias linhas utilizamos o getline
dentro de laço até o final do arquivo
Arquivos
Prof. Thomás da Costa Programação Estruturada II
31. Arquivos
Próxima Aula:
- LABORATÓRIO !!!
- Vamos praticar os conhecimentos dessa aula
- O exercícios vão manter o mesmo padrão: básico, normal e avançado
- Iremos aprender matéria nova sobre arquivos no laboratório
Arquivos
Prof. Thomás da Costa Programação Estruturada II