programação estruturada 2 - aula 04
TRANSCRIPT
PEA - Programação Estruturada II
Vamos ver o PEA:
Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as aulaslecionadas 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 !!!
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
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 !!!
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
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
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
Arquivos
Bem conhecido no nosso dia-a-dia:
Todos os dias no nosso trabalho ou em casa utilizamos arquivos para armazenarinformações tais como: imagem, texto, trabalho de faculdade, relatórios, planilhasde gastos e etc. Até esse ponto do curso, todas as informações eram armazenadasna memória, ou seja, quando um programa terminava não existia nenhumprocesso 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
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 tiposde informações. Algumas extensões conhecidas: pdf, doc, xls, gif
Arquivos
Prof. Thomás da Costa Programação Estruturada II
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
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
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
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
Arquivos
Lembrete:
Sempre que um arquivo for aberto para leitura ou escrita, o mesmo deve serfechado, para que possa ser utilizado por outros programas e não ocupar recursosdo sistema operacional.
Arquivos
Prof. Thomás da Costa Programação Estruturada II
Utilizar o comando close() dos objetos ofstream e ifstream !!!
Arquivos
Novos tipos e comandos:
string: novo tipo de variável, semelhante a um vetor de chargetline: efetua a leitura de uma linha de um arquivois_open: verifica se o arquivo foi aberto ou criado corretamente no disco. Exemplode problemas: falta de espaço em disco, diretório não existente e etc
Arquivos
Prof. Thomás da Costa Programação Estruturada II
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
#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
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. Paraescolher a forma de trabalhar com o arquivo, passamos parâmetros na funçãoopen 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
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
Arquivos
Lendo um arquivo com várias linhas:
Normalmente um arquivo texto possui várias linhas de caracteres. Quandodesenvolvemos um programa para ler um arquivo, não temos ideia do seutamanho. Para efetuarmos a leitura do arquivo até o seu fim, utilizamos ocomando 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
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.
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
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 umarquivo. A estrutura é gravado em um arquivo no formato binário
Para isso vamos aprender uma nova forma de trabalhar com arquivo. Essa novaforma, 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 !!!
#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
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
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
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
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
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
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