Mudanças entre as edições de "Sistemas Operacionais e Introdução a Programação - projeto em C"
(30 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | + | Proposta de projeto: uma agenda de eventos multiusuário. | |
=Requisitos do Sistema= | =Requisitos do Sistema= | ||
Linha 7: | Linha 7: | ||
* Um evento deve conter: | * Um evento deve conter: | ||
*# título | *# título | ||
− | *# horários de início e fim | + | *# datas e horários de início e fim |
*# data e horário de criação | *# data e horário de criação | ||
*# descrição | *# descrição | ||
*# local de realização | *# local de realização | ||
− | |||
*# estado. | *# estado. | ||
*# categoria: pessoal, trabalho, etc. | *# categoria: pessoal, trabalho, etc. | ||
Linha 18: | Linha 17: | ||
** Adicionar, ler/modificar ou remover eventos de sua agenda. | ** Adicionar, ler/modificar ou remover eventos de sua agenda. | ||
** Pesquisar eventos em sua agenda de acordo com qualquer dado de evento. | ** Pesquisar eventos em sua agenda de acordo com qualquer dado de evento. | ||
− | |||
− | |||
− | |||
* A agenda deve poder ser tanto exportada quanto importada do formato [http://www.ietf.org/rfc/rfc2445.txt iCalendar]. | * A agenda deve poder ser tanto exportada quanto importada do formato [http://www.ietf.org/rfc/rfc2445.txt iCalendar]. | ||
=Etapas do projeto= | =Etapas do projeto= | ||
==1: Ler/escrever tarefas== | ==1: Ler/escrever tarefas== | ||
− | + | O aluno deve modelar um evento, e criar uma interface baseada em menus para inseri-los e mostrar os eventos existentes. Os eventos devem ser armazenados em memória RAM, e por isto serão perdidos quando o programa da agenda terminar. | |
− | + | ===Conhecimentos envolvidos=== | |
− | + | * uso de tipos de dados básicos | |
− | + | * definição e uso de strings | |
− | + | * definição e uso de estruturas de dados do tipo registro (''struct''), para representar um evento | |
− | + | * definição e uso de vetores | |
− | + | * entrada e saída padrão, para mostrar mensagens na tela e ler dados do teclado | |
− | + | * estruturas de decisão (if e switch) para identificar opção de menu escolhida | |
− | + | * estruturas de repetição (while ou for) para o laço do menu | |
− | Considerações | + | ===Considerações dos Professores=== |
− | + | * Prof. Sobral: | |
− | # | + | ** Para manter a agenda em memória define-se um vetor de eventos. Cada evento será representado por uma variável do tipo [http://www.ead.cpdee.ufmg.br/cursos/C/aulas/cb00.html struct]. |
− | + | ** Algumas considerações sobre os recursos da linguagem C a serem usados nesta etapa estarão na [[Projeto final de SOP - turmas 2070114 e 2070115|página de acompanhamento das turmas 207014 e 207015]]. Ali ficarão também pequenos exemplos de como resolver problemas específicos que aparecem no desenvolvimento da agenda (ex: como fazer para que forçar a leitura de um valor inteiro, mesmo que o usuário erre a digitação e forneça um valor de outro tipo). | |
+ | |||
+ | * Prof. Ederson: | ||
+ | ** Alguns exercícios serão resolvidos em aula e [[Sistemas Operacionais e Introdução a Programação (diário 2009-2)#Início da Etapa 1|publicados no wiki]], como por exemplo a sequência de Fibonacci. | ||
+ | *** Se alguém se interessar, pode modificar o código para melhorá-lo! :-) | ||
==2: Ler/escrever no arquivo== | ==2: Ler/escrever no arquivo== | ||
− | + | O aluno deve implementar o armazenamento da agenda em um arquivo. Assim, será necessário definir um formato de gravação dos eventos em arquivo, de forma a poder facilmente recuperá-los. Cada novo evento deve ser gravado individualmente no arquivo. Não pode haver eventos conflitantes. | |
− | + | ===Conhecimentos envolvidos=== | |
− | + | * Entrada e saída em arquivos | |
− | + | * funções, para encapsular os algoritmo envolvidos: leitura de evento, gravação de evento, pesquisa de evento conflitante, pesquisa de intervalos livres | |
− | + | * representação de dados em arquivo, e conversão para a representação em memória. Há detalhes sobre como armazenar cada tipo de dados: convertendo tudo para um formato de texto, ou guardar os dados em formato cru (''raw''). Creio que seja mais fácil explorar o potencial das funções [http://www.ead.cpdee.ufmg.br/cursos/C/aulas/c980.html fprintf e fscanf], que trabalham com representações de valores em formato de texto. | |
==3: Busca nas tarefas== | ==3: Busca nas tarefas== | ||
− | + | O aluno deve implementar na agenda a pesquisa de tarefas de acordo com uma combinação de seus dados, que são: título, data e horário, duração, participantes, estado. | |
− | + | ===Conhecimentos envolvidos=== | |
− | + | * Condições compostas e de tamanho variável: manipulação de ''strings''. Ex: uma busca pode se basear somente no título, mas outra pode se basear em horário de início e local de realização. | |
− | ==4: Importação e exportação para formato | + | ==4: Importação e exportação para formato iCalendar== |
− | + | Um usuário deve poder exportar sua agenda para o formato iCalendar, o que possibilita que ela possa ser visualizada e manipulada por qualquer outro software que suporte esse formato (ex: Thunderbird, Outlook Express, Turba e outros). Analogamente, uma agenda iCal deve poder ser importada para ser visualizada e modificada. | |
− | + | ===Conhecimentos envolvidos=== | |
− | + | * Leitura e gravação de arquivos no formato iCalendar | |
− | + | * Conversão de valores segundo o formato iCalendar | |
− | + | * Uso de <tt>fscanf</tt> para fazer ''parsing'' de linhas de texto | |
− | Considerações | + | ===Considerações dos Professores=== |
− | + | * Prof. Sobral: | |
+ | ** Acho essa etapa 6 mais importante que a 5. Se tiver que escolher qual delas fazer, se faltar tempo (algo bastante provável), fico com a 6. O atraente nela é a ligação com uma aplicação real, que não parece somente um exercício de aula. E talvez ela possa ser uma etapa 4. | ||
+ | * Prof. Ederson: | ||
+ | ** Acompanhe a [[Discussão:Sistemas Operacionais e Introdução a Programação - projeto em C|discussão do projeto]]. | ||
=Calendário de Entregas= | =Calendário de Entregas= | ||
+ | Em cada etapa do projeto, há três obrigações: | ||
+ | # Apresentação do código-fonte completo. | ||
+ | # Breve explicação do código-fonte da etapa em questão (+- 3min). | ||
+ | # Demonstração de funcionalidade do programa compilado. | ||
+ | |||
+ | ==Datas== | ||
* Etapa 1: 30/09 | * Etapa 1: 30/09 | ||
* Etapa 2: 13/11 | * Etapa 2: 13/11 | ||
Linha 71: | Linha 80: | ||
=Referências Bibliográficas= | =Referências Bibliográficas= | ||
* [http://www.ead.cpdee.ufmg.br/cursos/C/c.html Curso de linguagem C] - disponível nas [[Sistemas Operacionais e Introdução a Programação#Referências Bibliográficas|referências bibliográficas]] da disciplina. | * [http://www.ead.cpdee.ufmg.br/cursos/C/c.html Curso de linguagem C] - disponível nas [[Sistemas Operacionais e Introdução a Programação#Referências Bibliográficas|referências bibliográficas]] da disciplina. | ||
+ | |||
+ | |||
+ | <center><small>[[Sistemas Operacionais e Introdução a Programação (diário 2009-2)#19/10: Projeto final|Diário de 2009-2 da disciplina - Prof. Ederson]]</small></center> | ||
+ | |||
+ | <center><small>[[Projeto final de SOP - turmas 2070114 e 2070115|Diário do projeto - Prof. Sobral]]</small></center> | ||
+ | |||
+ | <center><small>[[Sistemas Operacionais e Introdução a Programação (página)|Página principal da disciplina]]</small></center> |
Edição atual tal como às 06h58min de 4 de novembro de 2009
Proposta de projeto: uma agenda de eventos multiusuário.
Requisitos do Sistema
- Uma agenda é formada por eventos inseridos pelo usuário.
- Cada usuário tem sua própria agenda para anotar seus eventos.
- Cada agenda será armazenada em um arquivo exclusivo, onde serão escritos/lidos esses eventos.
- Cada usuário tem sua própria agenda para anotar seus eventos.
- Um evento deve conter:
- título
- datas e horários de início e fim
- data e horário de criação
- descrição
- local de realização
- estado.
- categoria: pessoal, trabalho, etc.
- recorrência: com que regularidade ocorre e prazo.
- Um usuário poderá:
- Adicionar, ler/modificar ou remover eventos de sua agenda.
- Pesquisar eventos em sua agenda de acordo com qualquer dado de evento.
- A agenda deve poder ser tanto exportada quanto importada do formato iCalendar.
Etapas do projeto
1: Ler/escrever tarefas
O aluno deve modelar um evento, e criar uma interface baseada em menus para inseri-los e mostrar os eventos existentes. Os eventos devem ser armazenados em memória RAM, e por isto serão perdidos quando o programa da agenda terminar.
Conhecimentos envolvidos
- uso de tipos de dados básicos
- definição e uso de strings
- definição e uso de estruturas de dados do tipo registro (struct), para representar um evento
- definição e uso de vetores
- entrada e saída padrão, para mostrar mensagens na tela e ler dados do teclado
- estruturas de decisão (if e switch) para identificar opção de menu escolhida
- estruturas de repetição (while ou for) para o laço do menu
Considerações dos Professores
- Prof. Sobral:
- Para manter a agenda em memória define-se um vetor de eventos. Cada evento será representado por uma variável do tipo struct.
- Algumas considerações sobre os recursos da linguagem C a serem usados nesta etapa estarão na página de acompanhamento das turmas 207014 e 207015. Ali ficarão também pequenos exemplos de como resolver problemas específicos que aparecem no desenvolvimento da agenda (ex: como fazer para que forçar a leitura de um valor inteiro, mesmo que o usuário erre a digitação e forneça um valor de outro tipo).
- Prof. Ederson:
- Alguns exercícios serão resolvidos em aula e publicados no wiki, como por exemplo a sequência de Fibonacci.
- Se alguém se interessar, pode modificar o código para melhorá-lo! :-)
- Alguns exercícios serão resolvidos em aula e publicados no wiki, como por exemplo a sequência de Fibonacci.
2: Ler/escrever no arquivo
O aluno deve implementar o armazenamento da agenda em um arquivo. Assim, será necessário definir um formato de gravação dos eventos em arquivo, de forma a poder facilmente recuperá-los. Cada novo evento deve ser gravado individualmente no arquivo. Não pode haver eventos conflitantes.
Conhecimentos envolvidos
- Entrada e saída em arquivos
- funções, para encapsular os algoritmo envolvidos: leitura de evento, gravação de evento, pesquisa de evento conflitante, pesquisa de intervalos livres
- representação de dados em arquivo, e conversão para a representação em memória. Há detalhes sobre como armazenar cada tipo de dados: convertendo tudo para um formato de texto, ou guardar os dados em formato cru (raw). Creio que seja mais fácil explorar o potencial das funções fprintf e fscanf, que trabalham com representações de valores em formato de texto.
3: Busca nas tarefas
O aluno deve implementar na agenda a pesquisa de tarefas de acordo com uma combinação de seus dados, que são: título, data e horário, duração, participantes, estado.
Conhecimentos envolvidos
- Condições compostas e de tamanho variável: manipulação de strings. Ex: uma busca pode se basear somente no título, mas outra pode se basear em horário de início e local de realização.
4: Importação e exportação para formato iCalendar
Um usuário deve poder exportar sua agenda para o formato iCalendar, o que possibilita que ela possa ser visualizada e manipulada por qualquer outro software que suporte esse formato (ex: Thunderbird, Outlook Express, Turba e outros). Analogamente, uma agenda iCal deve poder ser importada para ser visualizada e modificada.
Conhecimentos envolvidos
- Leitura e gravação de arquivos no formato iCalendar
- Conversão de valores segundo o formato iCalendar
- Uso de fscanf para fazer parsing de linhas de texto
Considerações dos Professores
- Prof. Sobral:
- Acho essa etapa 6 mais importante que a 5. Se tiver que escolher qual delas fazer, se faltar tempo (algo bastante provável), fico com a 6. O atraente nela é a ligação com uma aplicação real, que não parece somente um exercício de aula. E talvez ela possa ser uma etapa 4.
- Prof. Ederson:
- Acompanhe a discussão do projeto.
Calendário de Entregas
Em cada etapa do projeto, há três obrigações:
- Apresentação do código-fonte completo.
- Breve explicação do código-fonte da etapa em questão (+- 3min).
- Demonstração de funcionalidade do programa compilado.
Datas
- Etapa 1: 30/09
- Etapa 2: 13/11
- Etapa 3: 27/11
- Etapa 4: 11/12
Referências Bibliográficas
- Curso de linguagem C - disponível nas referências bibliográficas da disciplina.