SlideShare uma empresa Scribd logo
1
CENTRO UNIVERSITÁRIO DA GRANDE DOURADOS
Jhonathan Paulo Banczek
RELATÓRIO
Dourados
2010
2
CENTRO UNIVERSITÁRIO DA GRANDE DOURADOS
Jhonathan Paulo Banczek
RGM: 122.845
Relatório da criação da Agenda.
Relatório apresentado na Disciplina de
Estrutura de Dados II do 2º ano, Curso
de ciência da computação Faculdade de
Ciências exatas. Unigran.
Professor: Ademir M. Sanches.
Dourados
3
Relatório.
Foi implementado uma Agenda Eletrônica em que o usuário informa o nome e data de
nascimento. Usou-se a estrutura de dados – Lista Ordenada – Encadeada.
Como o meu RGM é impar, tive que usar lista ligada ordenada no meu programa.
Seqüência das instruções:
Ao executar o programa, a função abrirArquivo carrega os dados direto do arquivo para a
lista.
Nesta função se não existir o arquivo “agenda.csv” o algoritmo cria um novo.
Código:
Em abrirArquivo, utilizo uma string como buffer, então abro o arquivo “agenda.csv” e
dentro de um loop que pára só quando chega o fim do arquivo, vou recebendo sempre linha
por linha do arquivo. (para cada laço), recebendo a linha que seria como “nome ; data”
utilizo outras duas strings que recebem os valores de nome e da data.
Utilizei uma função que pega o nome da posição 0 da string(bufferArquivo) até quando
achar “;”. Pois seria o campo do nome no arquivo. Logo depois pega a data do “;” até fim
do buffer, e passo o nome e a data para a lista (inserindo) chamando a função
insereOrdenado.
Código:
//grava o nome da variavel da posição 0 até achar ';'
nome = bufferArquivo.substr(0, bufferArquivo.find_first_of(';'));
//grava a data de nascimento partindo do ';' até final da string "bufferArquivo"
data = bufferArquivo.substr(bufferArquivo.find_first_of(';')+1 );
if(aux == NULL) {//senao existir, cria um
novo
aux.open("agenda.csv",ios::out);
aux.close();
4
Isso se repete até o fim do arquivo.
Depois de ler o arquivo, é chamado a função menu, que constrói o menu de opções do
programa. (Na função menu é utilizado system (“cls”); para limpar a tela. )
imagem da tela.
Escolhendo a opção, vai para um CASE em que chama as próximas funções.
1 - Insere contato // recebe o NOME (sendo menor de 30 caracteres e não possuindo
‘;’) e da DATA(sendo menor que 10 caracteres “DD/MM/AAA” e não possuindo “;” ),
antes de passar o nome e a data, criei um código para converter a STRING nome para
minúscula. Pois não existe dentro de STRING uma função para isso:
Código:
//CONVERTE a string para minúscula
for( int i = 0; i < int(add.nome.length()); i ++)
add.nome[i] = tolower(add.nome[i]);
Depois chama a função insereOrdenado, que por sua vez chama a função insereNo, que
insere na lista.
5
Código:
do{
cout <<"Informe o nome: " << endl;
cin.sync(); // equivalente ao flushall() do C
getline(cin,add.nome); //pega o nome
}while ( ( int(add.nome.length()) > 30) || add.nome.find(';') != string::npos)
2 - Remove contato // remove o contato de maior prioridade (ordenado por nome)
3 - Mostra Contatos // mostra os contatos que estão na lista, é passado por parâmetro 0,
para mostrar
4 - Sair do programa // termina o programa
Estas opções ficam dentro de um LOOP principal que só termina quando digitado 4 (sair
do programa).
Ao terminar o programa, chama-se novamente a função mostra, passando agora por
parâmetro 1, que exclui o arquivo “agenda.csv” e passa os dados dos contatos atualizados
para “agenda.csv”.
Depois chama a função libera, que libera toda a memória alocada que a lista usou no
programa.
A minha maior dificuldade foi na implementação da lista, que muitas vezes se mostrou
confusa toda aquela série de ponteiros pra ponteiros e operadores de endereço.
6
Funções:
void menu //função que monta as opções.
int main //função principal.
void abrirArquivo // abre os dados do arquivo "agenda.csv".
void libera //libera toda a memória alocada no programa.
void mostra //mostra os contatos da lista, parâmetro 0 =mostra | 1 = grava e
atualiza dados no arquivo.
void insereOrdenado //insere os dados ordenado pelo nome (campo chave)
void insereNo //insere o nó na lista com os dados = nome e data
void desenha //desenha as linhas parâmetros 0 e 1 < formatos da linha
7
Conclusão
A criação da Agenda eletrônica foi fácil, em alguns momentos existiam alguns problemas
na solução de determinada rotina, porem, uma olhada na referencia da linguagem C++,
conseguia-se obter funções que resolviam o caso, como por exemplo, as funções subst e
find.
Na manipulação do Arquivo também foram utilizadas simples funções descritas na
biblioteca “fstream”.
O meu maior problema foi com a Lista, pois teoricamente aparenta ser fácil, as analogias
usadas em sala para explicar o conceito ajudam bastante, só que, quando implementado
em código se mostra confusa e muitas vezes por ter um código extenso e demasia de
ponteiros se torna sujeita a erros.
8
Referência
• Apostila de Programação Orientada a Objeto em C++ - AAndré Duarte Bueno,
UFSC-LMPT-NPC
• Estrutura de dados – Lista Linear – Prof. Ademir M. Sanches.
• http://www.cppreference.com/wiki/ ( onde aprendi algumas funções de string)
• http://www.cplusplus.com/ (onde aprendi algumas funções de Arquivos em c++)
Dourados
2010

Mais conteúdo relacionado

Semelhante a Relatório agenda

Academia ABAP
Academia  ABAPAcademia  ABAP
Academia ABAP
renata villela
 
PROJETO MODELO editado.docx
PROJETO MODELO editado.docxPROJETO MODELO editado.docx
PROJETO MODELO editado.docx
DiedisonRamos1
 
Pged 03
Pged 03Pged 03
Pged 03
samuelthiago
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdf
Edkallenn Lima
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
Armando Daniel
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
ItamarGoncalves2
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
Daniela Sprovieri
 
Resumo de informática para concursos públicos
Resumo de informática para concursos públicosResumo de informática para concursos públicos
Resumo de informática para concursos públicos
Rogério Cardin
 
Módulo II - Desktop e Arquivos
Módulo II  -  Desktop e ArquivosMódulo II  -  Desktop e Arquivos
Módulo II - Desktop e Arquivos
Mayara Mônica
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
Otaviano Viana
 
Logica usando c_-_aula_1
Logica usando c_-_aula_1Logica usando c_-_aula_1
Logica usando c_-_aula_1
Cristiano Goncalves De Araujo
 
Resumo c#
Resumo c#Resumo c#
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
Pedro De Almeida
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
Verônica Veiga
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
eduan
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
Robson Eduardo
 
Elementos do Sistema Operacionais
Elementos do Sistema OperacionaisElementos do Sistema Operacionais
Elementos do Sistema Operacionais
Jailson Torquato
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
Leinylson Fontinele
 

Semelhante a Relatório agenda (20)

Academia ABAP
Academia  ABAPAcademia  ABAP
Academia ABAP
 
PROJETO MODELO editado.docx
PROJETO MODELO editado.docxPROJETO MODELO editado.docx
PROJETO MODELO editado.docx
 
Pged 03
Pged 03Pged 03
Pged 03
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdf
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
Resumo de informática para concursos públicos
Resumo de informática para concursos públicosResumo de informática para concursos públicos
Resumo de informática para concursos públicos
 
Módulo II - Desktop e Arquivos
Módulo II  -  Desktop e ArquivosMódulo II  -  Desktop e Arquivos
Módulo II - Desktop e Arquivos
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Logica usando c_-_aula_1
Logica usando c_-_aula_1Logica usando c_-_aula_1
Logica usando c_-_aula_1
 
Resumo c#
Resumo c#Resumo c#
Resumo c#
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
 
Elementos do Sistema Operacionais
Elementos do Sistema OperacionaisElementos do Sistema Operacionais
Elementos do Sistema Operacionais
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 

Relatório agenda

  • 1. 1 CENTRO UNIVERSITÁRIO DA GRANDE DOURADOS Jhonathan Paulo Banczek RELATÓRIO Dourados 2010
  • 2. 2 CENTRO UNIVERSITÁRIO DA GRANDE DOURADOS Jhonathan Paulo Banczek RGM: 122.845 Relatório da criação da Agenda. Relatório apresentado na Disciplina de Estrutura de Dados II do 2º ano, Curso de ciência da computação Faculdade de Ciências exatas. Unigran. Professor: Ademir M. Sanches. Dourados
  • 3. 3 Relatório. Foi implementado uma Agenda Eletrônica em que o usuário informa o nome e data de nascimento. Usou-se a estrutura de dados – Lista Ordenada – Encadeada. Como o meu RGM é impar, tive que usar lista ligada ordenada no meu programa. Seqüência das instruções: Ao executar o programa, a função abrirArquivo carrega os dados direto do arquivo para a lista. Nesta função se não existir o arquivo “agenda.csv” o algoritmo cria um novo. Código: Em abrirArquivo, utilizo uma string como buffer, então abro o arquivo “agenda.csv” e dentro de um loop que pára só quando chega o fim do arquivo, vou recebendo sempre linha por linha do arquivo. (para cada laço), recebendo a linha que seria como “nome ; data” utilizo outras duas strings que recebem os valores de nome e da data. Utilizei uma função que pega o nome da posição 0 da string(bufferArquivo) até quando achar “;”. Pois seria o campo do nome no arquivo. Logo depois pega a data do “;” até fim do buffer, e passo o nome e a data para a lista (inserindo) chamando a função insereOrdenado. Código: //grava o nome da variavel da posição 0 até achar ';' nome = bufferArquivo.substr(0, bufferArquivo.find_first_of(';')); //grava a data de nascimento partindo do ';' até final da string "bufferArquivo" data = bufferArquivo.substr(bufferArquivo.find_first_of(';')+1 ); if(aux == NULL) {//senao existir, cria um novo aux.open("agenda.csv",ios::out); aux.close();
  • 4. 4 Isso se repete até o fim do arquivo. Depois de ler o arquivo, é chamado a função menu, que constrói o menu de opções do programa. (Na função menu é utilizado system (“cls”); para limpar a tela. ) imagem da tela. Escolhendo a opção, vai para um CASE em que chama as próximas funções. 1 - Insere contato // recebe o NOME (sendo menor de 30 caracteres e não possuindo ‘;’) e da DATA(sendo menor que 10 caracteres “DD/MM/AAA” e não possuindo “;” ), antes de passar o nome e a data, criei um código para converter a STRING nome para minúscula. Pois não existe dentro de STRING uma função para isso: Código: //CONVERTE a string para minúscula for( int i = 0; i < int(add.nome.length()); i ++) add.nome[i] = tolower(add.nome[i]); Depois chama a função insereOrdenado, que por sua vez chama a função insereNo, que insere na lista.
  • 5. 5 Código: do{ cout <<"Informe o nome: " << endl; cin.sync(); // equivalente ao flushall() do C getline(cin,add.nome); //pega o nome }while ( ( int(add.nome.length()) > 30) || add.nome.find(';') != string::npos) 2 - Remove contato // remove o contato de maior prioridade (ordenado por nome) 3 - Mostra Contatos // mostra os contatos que estão na lista, é passado por parâmetro 0, para mostrar 4 - Sair do programa // termina o programa Estas opções ficam dentro de um LOOP principal que só termina quando digitado 4 (sair do programa). Ao terminar o programa, chama-se novamente a função mostra, passando agora por parâmetro 1, que exclui o arquivo “agenda.csv” e passa os dados dos contatos atualizados para “agenda.csv”. Depois chama a função libera, que libera toda a memória alocada que a lista usou no programa. A minha maior dificuldade foi na implementação da lista, que muitas vezes se mostrou confusa toda aquela série de ponteiros pra ponteiros e operadores de endereço.
  • 6. 6 Funções: void menu //função que monta as opções. int main //função principal. void abrirArquivo // abre os dados do arquivo "agenda.csv". void libera //libera toda a memória alocada no programa. void mostra //mostra os contatos da lista, parâmetro 0 =mostra | 1 = grava e atualiza dados no arquivo. void insereOrdenado //insere os dados ordenado pelo nome (campo chave) void insereNo //insere o nó na lista com os dados = nome e data void desenha //desenha as linhas parâmetros 0 e 1 < formatos da linha
  • 7. 7 Conclusão A criação da Agenda eletrônica foi fácil, em alguns momentos existiam alguns problemas na solução de determinada rotina, porem, uma olhada na referencia da linguagem C++, conseguia-se obter funções que resolviam o caso, como por exemplo, as funções subst e find. Na manipulação do Arquivo também foram utilizadas simples funções descritas na biblioteca “fstream”. O meu maior problema foi com a Lista, pois teoricamente aparenta ser fácil, as analogias usadas em sala para explicar o conceito ajudam bastante, só que, quando implementado em código se mostra confusa e muitas vezes por ter um código extenso e demasia de ponteiros se torna sujeita a erros.
  • 8. 8 Referência • Apostila de Programação Orientada a Objeto em C++ - AAndré Duarte Bueno, UFSC-LMPT-NPC • Estrutura de dados – Lista Linear – Prof. Ademir M. Sanches. • http://www.cppreference.com/wiki/ ( onde aprendi algumas funções de string) • http://www.cplusplus.com/ (onde aprendi algumas funções de Arquivos em c++) Dourados 2010