Especificação do Trabalho Prático



Documentos relacionados
Especificação do Trabalho Prático

Especificação do Trabalho Prático

Especificação do 3º Trabalho

TÉCNICAS DE PROGRAMAÇÃO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio.

OBI2012 Caderno de Tarefas

Manual de Operacionalização do Módulo de Prestação de Contas PCS

Manual do Instar Mail v2.0

Especificação do Trabalho

Trabalho 3: Agenda de Tarefas

Trabalho Prático 1 Tipos Abstratos de Dados

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

OBI2010 Caderno de Tarefas

FACULDADE DE TECNOLOGIA SENAC GOIÁS PROJETO INTEGRADOR. 2º PERÍODO Gestão da Tecnologia da Informação GOIÂNIA 2013.

9 Comandos condicionais

Linguagem de Programação

NORMAS DE PUBLICAÇÃO DA REVISTA ELETRÔNICA SALA DE AULA EM FOCO

BearingNet - Orçamentos Contenuto

MANUAL DO PROFESSOR. Suporte: SISTEMA DE GESTÃO EDUCACIONAL VIRTUALCLASS. Skype: suportetisoebras

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

SISTEMA DE SERVIÇOS DE INFRA-ESTRUTURA DA UFRGS

Microsoft Access INTRODUÇÃO. Sumário INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO. O que é Banco de Dados?

Manual do Teclado de Satisfação Online WebOpinião

REGISTRO DE PROJETOS

Sistema Integrado CAPES - Programa de Apoio a Eventos no País

NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO

Agendador de Rotinas

REGULAMENTO PARA PARTICIPAÇÃO DOS DISCENTES DESTE CAMPUS EM: VISITAS TÉCNICAS CAPÍTULO I

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

Guia de utilização da notação BPMN

Inventário WMS. SCM Concept (47)

Guia de Procedimentos

Especificação,do,Trabalho,Prático,

Lendo o Manual de Diretrizes de projeto e olhando as imagens do google, me deparei com algumas duvidas iniciais.

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

Nota Fiscal Paulista. Manual do Sistema de Reclamações Decreto /08 GOVERNO DO ESTADO DE SÃO PAULO SECRETARIA DE ESTADO DOS NEGÓCIOS DA FAZENDA

1. REGISTRO DE PROJETOS

Núcleo de Relacionamento com o Cliente. de Relacionamento com o Cliente GUIA PRÁTICO DE USO. Produtos

Resolução da lista de exercícios de casos de uso

REGULAMENTO DE UTILIZAÇÃO DOS INICIATIVA ESCOLAS, PROFESSORES E COMPUTADORES PORTÁTEIS EQUIPAMENTOS DO PROJECTO. Ano Lectivo 2006 / 07

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Manual de instalação, configuração e utilização do Enviador XML

BSI Letramento Digital Prof. André Di Thommazo. Organização pessoal

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

COINF. Roteiro de Treinamento 0800Net. Versões e Revisões deste Documento. Índice. 1. Nome do Projeto. 2. Roteiro. Roteiro Treinamento Solicitante

(Capitais e Interior) (Demais Localidades) (Capitais e Interior) Golden Fone (SAC)

1Ò&/(2'(('8&$d 2$',67Æ1&,$1($' PROCEDIMENTOS PARA DISCIPLINAS A DISTÂNCIA MANUAL DO ALUNO

Tutorial para emissão de NF-e

Sistema de Reserva de Laboratório Trabalho Semestral Versão 1.0

AGENDAMENTO PARA IMPORTAÇÃO DE NOTAS FISCAIS 1. PARÂMETROS DO ESTABELECIMENTO CONFIGURAÇÃO DO AGENDADOR... 3

OBI2012 Caderno de Tarefas

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Tutorial 7 Fóruns no Moodle

Exames Periódicos de Saúde

PROCEDIMENTO DE AVALIAÇÃO DE PERFIL E TREINAMENTO VAPT VUPT

Engenharia Informática Engenharia Electrotécnica e Computadores Programação Orientada por Objectos Projecto PlayCards

SYSMO INFORMÁTICA CRM CONTROLE DE PONTUAÇÃO MANUAL DO USUÁRIO SYSMO S1. Versão 1.00 SÃO MIGUEL DO OESTE SC, MAIO DE 2007.

Curso:... Prova de Sistemas de Informação para Bibliotecas (21105) Nome:... Nº de Estudante:... B. I. nº... Assinatura do Vigilante:...

PROCEDIMENTO PARA CRIAÇÃO / ALTERÇÃO DE DOMÍNIO DE PREFEITURAS, CÂMARAS E ÓRGÃOS MUNICIPAIS/ESTADUAIS.

ACESSANDO COM USUÁRIO DE PROFESSOR

SISTEMA DE BIBLIOTECAS DO IFRS

MANUAL DA SECRETARIA

Secretaria de Tecnologia da Informação Coordenadoria de Suporte Técnico aos Usuários

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

Inicialmente, faça seu cadastro, depois, use seu CPF e sua Senha para fazer o Login e entrar no sistema quantas vezes quiser.

BOLETIM INFORMATIVO Nº 084 Novembro 2012

MIT072 Manual de Operação do Portal - Professores

CATÁLOGO DE APLICAÇÕES Apontamento Web

Regulamento Projeto interdisciplinar

Análise e Projeto Orientados a Objeto

EDITAL Nº 01/2015 1º SIMULADO SAS ENEM

MANUAL DE PROCEDIMENTOS MPR/SGP-301-R00 ESTÁGIO PROBATÓRIO

MANUAL DO SISTEMA. Versão 6.07

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Programa de Pós-Graduação em Ensino de Física - Polo 37

REGULAMENTO DO RANKING PARAIBANO 2015

Boletim Eletrônico de Recolhimento Manual do Sistema. Boletim Eletrônico de Recolhimento. Manual do Sistema

Implementando uma Classe e Criando Objetos a partir dela

SquidCacheAux para BrazilFW

Como Obter Sucesso em Introdução à Programação Ulysses de Oliveira

Espaço do Coordenador

Guia de Acesso para os Cursos Online

Site Fácil. Guia do Usuário. PROCERGS Divisão 5

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Universidade Tecnológica Federal do Paraná Departamento de Física Programa de Pós-Graduação em Ensino de Física Polo UTFPR - Campo Mourão

Manual MQS. Logo após colocar essas informações abrirá a página inicial do sistema:

Pró-Reitoria de Administração - PRAd Assessoria de Informática - AI SISTEMA DE PUBLICAÇÃO DE LICITAÇÕES. Manual de Procedimentos

País(es) : Brasil Banco(s) de Dados : Sql Server / Oracle

Manual do Aluno Moodle

Aula 4 Estatística Conceitos básicos

Parâmetros de Utilização e Manutenção das Mensagens do Informa Online Maio 2007

MANUAL DE UTILIZAÇÃO. Produtos: Saúde Pró Faturamento Saúde Pró Upload. Versão:

Curso em Sistema de Editoração Eletrônica de Revistas (SEER) - Tutorial Editores/Editores de Seção

Transcrição:

Especificação do Trabalho Prático O professor Thomas é um homem muito ocupado. Tem, em sua agenda, uma série de compromissos que ele deve atender em 2009. De tantos compromissos que tem, resolveu contratar programadores para desenvolver um sistema de filtro de compromissos. Seu trabalho é desenvolver este sistema. 1. Descrição do problema 1.1. Os compromissos A agenda do professor possui diversos tipos de compromisso: Aulas para turmas de graduação e pós-graduação: inclui data, hora, duração (em minutos), disciplina ministrada e se é de graduação, especialização ou mestrado; Orientação de alunos de graduação e pós-graduação: inclui data, hora, duração (em minutos), nome do orientado e se é de graduação, especialização ou mestrado; Reuniões de departamento: inclui data, hora e duração (em minutos); Eventos, como congressos, simpósios, workshops, etc.: inclui data, hora, duração (em dias), nome do evento e local; eventos são o único compromisso que podem começar em um dia e terminar em outro; considere que eventos que começam as 0:00 horas e duram 1 dia terminam às 0:00 horas do dia seguinte). Compromissos particulares: deseja-se saber data, hora, duração (em minutos) e o motivo. Para efeito de relatório, cada compromisso possui um identificador e uma descrição. O identificador é numérico e será lido do arquivo de entrada. A descrição segue um padrão que varia de acordo com o tipo, segundo a tabela abaixo. Substitua os conteúdos entre <> por dados do compromisso. Tipo de Evento Aulas Orientação Reuniões de Departamento Eventos Compromissos Particulares Descrição Aula de <nome da disciplina> Orientação de <nome do aluno> Reunião de Departamento <nome do evento> <motivo> Para cada compromisso, Thomas atribui um grau de prioridade. Além disso, cada tipo de compromisso possui um fator multiplicador de prioridade, que representa uma classificação de importância dos tipos de compromisso, ou seja, os que tem menor grau de prioridade são aqueles que o professor está mais apto a cancelar ou, se possível, adiar. Os fatores de multiplicação são dados na tabela abaixo: Tipo de Evento Aulas Orientação Reuniões de Departamento Eventos Compromissos Particulares Fator Multiplicador 2x 1x 4x 3x 2x Para todos os compromissos da agenda, além de determinar a prioridade, deve-se também

indicar se o compromisso é adiável ou não, sendo que aulas e eventos nunca são adiáveis. Compromissos inadiáveis (exceto aulas e eventos, que já o são por natureza), devem receber automaticamente +1x em seu fator multiplicador. Ou seja, um compromisso particular adiável tem fator multiplicador 2x, já um inadiável tem fator (2 + 1)x = 3x. 1.2. O filtro O professor Thomas gostaria de ter um filtro que, dados todos os eventos que deseja participar, com seus momentos de ocorrência e prioridades, localize compromissos conflitantes e indique, em relatórios, quais deles devem ser cancelados ou adiados. Seu programa deve separar em quatro relatórios diferentes, um para compromissos confirmados, outro para os que devem ser adiados, outro para os que devem ser cancelados e um último com os dados completos de todos os compromissos: a) No relatório de compromissos confirmados devem constar todos os compromissos que não conflitaram com nenhum outro ou que, se conflitaram, tiveram a maior prioridade e passaram pelo filtro. De cada compromisso deve-se apresentar data, hora, identificador e descrição. Os compromissos devem estar ordenados por data e hora em ordem crescente; b) No relatório de compromissos adiados encontram-se os compromissos adiáveis que conflitaram com algum outro compromisso e que não tiveram a maior prioridade, ou seja, terão que ser adiados, pois outro compromisso mais importante deve ser atendido. De cada compromisso deve-se apresentar identificador, descrição, prioridade e identificador do compromisso mais importante que forçou o adiamento deste. Os compromissos devem estar em ordem decrescente de prioridade; c) No relatório de compromissos cancelados encontram-se os compromissos inadiáveis que conflitaram com algum outro compromisso e que não tiveram a maior prioridade, ou seja, terão que ser cancelados, pois outro compromisso mais importante deve ser atendido. De cada compromisso deve-se apresentar identificador, descrição, prioridade e identificador do compromisso mais importante que forçou o adiamento deste. Os compromissos devem estar em ordem crescente de duração; d) No relatório completo, devem ser exibidos todos os compromissos e todos os dados referentes aos mesmos. O relatório deve encontrar-se ordenado por identificador, em ordem crescente. Além desses quatro relatórios, seu programa deve gerar um outro arquivo, chamado resultado.txt, contendo como único valor a soma das durações (em minutos) do i-ésimo elemento do relatório do item a, do j-ésimo elemento do item b, do k-ésimo elemento do item c e o l-ésimo elemento do item d. Os valores i, j, k e l são fornecidos em um arquivo de entrada chamado posicoes.txt. Em qualquer situação do programa (por exemplo, nos itens a, b e c), caso haja empate, isto é, dois ou mais compromissos tenham a mesma prioridade (obtida multiplicando o grau de prioridade pelo fator multiplicador) ou a mesma duração, utilize os seguintes critérios de desempate : 1º) É mais importante o compromisso que iniciar primeiro; 2º) Caso ainda haja empate, o tipo de compromisso deve desempatar na seguinte ordem de prioridade (da maior para a menor): reunião, evento, aula, particular, orientação; 3º) Caso ainda haja empate, é mais importante o que for primeiro em ordem alfabética de descrição. Tais critérios solucionam todos os empates, visto que não pode haver dois compromissos com a mesma descrição iniciando no mesmo horário. Nas seções seguintes são dados os padrões de entrada e saída de dados e exemplos.

2. Formatos de Entrada e Saída 2.1. Entrada de dados O arquivo principal de entrada de dados será chamado agenda.txt e conterá todos os compromissos, um seguido do outro, sem qualquer ordem específica. Todos os compromissos começam com o tipo e identificador e os dados, na seqüência, dependem do tipo. Cada compromisso deve ser separado do compromisso seguinte por uma linha em branco. A tabela a seguir especifica o padrão de entrada de dados para cada compromisso. Tipo de Compromisso Aulas Orientação Reuniões de Departamento Eventos Compromissos Particulares Padrão de Entrada de Dados A <nome da disciplina> <Graduação Especialização Mestrado> O <nome do orientado> <Graduação Especialização Mestrado> <assunto> R <assunto> E <nome do evento> <local> P <motivo> <local> Um exemplo pode ser encontrado no arquivo anexo exemplo/agenda.txt. É importante salientar que não devem haver espaços em branco ou linhas em branco a mais do que a especificação, do contrário a correção pode não funcionar (não haverá chance de corrigir). O arquivo posicoes.txt conterá os valores inteiros positivos (as posições começam a ser contadas a partir da posição 1 e não da posição 0) de i, j, k e l. Os valores de i, j, k e l se encontrarão posicionados nesta sequência, cada um em uma linha. Um exemplo pode ser encontrado no arquivo anexo exemplo/posicoes.txt. 2.2. Saída de Dados Os relatórios gerados devem ser escritos em arquivos com os seguintes nomes:

Relatório Compromissos confirmados Compromissos adiados Compromissos cancelados Relatório completo Nome do Arquivo relatconfirmados.txt relatadiados.txt relatcancelados.txt relatcompromissos.txt O padrão para construção dos relatórios depende do relatório, como nos mostra a tabela a seguir. Relatório Compromissos Confirmados Compromissos Adiados Compromissos Cancelados Relatório Completo <descrição> Padrão de Saída de Dados <descrição> <prioridade> <identificador do compromisso que adiou este> <descrição> <prioridade> <identificador do compromisso que cancelou este> : <descricao> Início: Fim: <data fim> <hora fim> Prioridade: <prioridade> <dados específicos do compromisso no formato especificado no exemplo divulgado> O arquivo resultado.txt contém apenas um valor inteiro positivo. É ainda mais importante que os relatórios sejam gerados rigorosamente dentro do padrão. Assim como no padrão de entrada, os compromissos devem estar separados por uma linha em branco e não deve haver linhas em branco ao final dos arquivos, pois serão usados na correção automática do trabalho. Exemplos podem ser encontrados em anexo nos arquivos exemplo/relatconfirmados.txt, exemplo/relatcompromissos.txt, exemplo/resultado.txt, exemplo/relatadiados.txt e exemplo/relatcancelados.txt. Estes arquivos representam a solução do problema caso o filtro seja aplicado no arquivo de exemplo de entrada de dados, isto é, exemplo/agenda.txt e exemplo/posicoes.txt. 2.3. Formatos Os formatos dos diferentes dados devem seguir o seguinte padrão: Dado Padrão Número inteiro com 6 algarismos. Preceder com zeros se for necessário. Ex.: 000101 <data> Formato dd/mm/aaaa. Ex.: 05/04/2006. <hora> Formato hh:mm. hh e mm devem ter 2 algarismos obrigatoriamente. Ex.: 09:20. Número inteiro.

Dado Padrão <nome da disciplina> String de tamanho máximo 50. <Graduação Especialização Mestrado> Exatamente uma dessas três opções. Número inteiro. true ou false <nome do orientado> String de tamanho máximo 50. <nome do evento> String de tamanho máximo 50. <local> String de tamanho máximo 50. <motivo> String de tamanho máximo 50. <data fim> Formato dd/mm/aaaa. Ex.: 05/04/2006. <hora fim> Formato hh:mm. hh e mm devem ter 2 algarismos obrigatoriamente. Ex.: 09:20. 3. Requisitos da implementação Modularize seu código adequadamente. O uso de variáveis globais é proibido, mas constantes globais são permitidas; Crie códigos claros e organizados. Utilize um estilo de programação consistente. Comente seu código extensivamente; Seu programa deverá ler os dados de entrada de um arquivo texto chamado agenda.txt e de outro chamado posicoes.txt que se encontram na mesma pasta que o arquivo executável. Seu programa deverá escrever os arquivos de saída na mesma pasta que se encontra o arquivo executável. O programa deve utilizar um único subprograma de ordenação genérico que será usado para todos os tipos de ordenações requeridas nos relatórios. Você deve implementar uma lista encadeada genérica para usar no armazenamento dos registros de cada compromisso da agenda nos trabalhos de C (lista de void*), C++ (lista de template) e Java (lista de generic). Isso significa que você não pode usar listas disponibilizadas nas bibliotecas dessas linguagens. Como Python oferece o tipo de dados lista genérica como parte da linguagem, essa lista pode ser utilizada para implementar o trabalho nesta linguagem. Você deve criar uma hierarquia de registros (estruturas ou classes) para representar os diferentes tipos de compromissos da agenda. 4. Condições de entrega O trabalho deve ser feito individualmente e submetido por e-mail até as 23:59 horas das datas limites especificadas. Não serão aceitos trabalhos entregues após o prazo. 4.1. Formato de entrega do trabalho O recebimento dos trabalhos é automatizado. Portanto, as regras a seguir devem ser seguidas à risca para evitar que seu trabalho não possa ser avaliado. O código-fonte de sua solução deverá ser compactado e entregue por e-mail (anexo ao e-mail) para o endereço fvarejao@ninfa.inf.ufes.br. Serão aceitos trabalhos entregues até as 23h59 da data limite. O assunto do e-mail deverá ser o seguinte: lp:trab<id>:<nome>: O termo <id> deve ser substituído pelo número correspondente do trabalho (1, 2, 3

ou 4). O termo <nome> deverá ser substituído pelo nome e o último sobrenome do aluno, sem acentos, til ou cedilha, como no exemplo abaixo: lp:trab1:flavio Varejao: Atenção: o e-mail não deve ser enviado por servidores de emails que não seguem padrões normais de envio, tais como, TERRA, HOTMAIL ou BOL, pois o recebimento automatizado não consegue reconhecer seu trabalho. O arquivo compactado deve estar no formato tar.gz com o nome trab1.tar.gz e conter apenas os arquivos fonte do programa (não deve conter executáveis ou arquivos compilados). Para isso, abra um console, mude o diretório de trabalho para a pasta onde se encontra o código-fonte do trabalho e execute o seguinte comando: tar -zcvf trab1.tar.gz * Preste bastante atenção para fazer com que o codigo fonte não seja colocado em subdiretórios dentro do arquivo compactado. Se isso ocorrer a compilação automática não funcionará e sua nota será ZERO. Atente também que os nomes usados no arquivo principal dos trabalhos DEVEM ser: trab1.c, trab2.cpp, trab3.java e trab4.py. Um exemplo de um e-mail de envio do trabalho: Para: fvarejao@ninfa.inf.ufes.br De: Joao da Silva Assunto: lp:trab1:joao Silva: Anexo: trab1.tar.gz Para a compilação e execução dos programas, em princípio, serão utilizadas as versões instaladas no labgrad do gcc, g++, javac, java e python. Caso haja alguma modificação de versão de correção, ela será divulgada oportunamente. Os programas serão compilados e executados no sistema operacional linux. Para que não haja problemas na correção do seu trabalho e você seja prejudicado, garanta que ele é compilado na versão de correção e executado no sistema operacional linux. Se tudo correr bem, você receberá um e-mail de confirmação do recebimento do trabalho. Neste e-mail haverá um hash MD5 do arquivo recebido. Para garantir que o arquivo foi recebido sem ser corrompido, gere o hash MD5 do arquivo que você enviou e compare com o hash recebido na confirmação. Para gerar o hash, utilize o seguinte comando: md5sum trab1.tar.gz Caso você não receba o e-mail de confirmação ou caso o valor do hash seja diferente, envie o trabalho novamente. 5. Avaliação Os trabalhos terão nota zero se: A data de entrega for fora do prazo estabelecido; O trabalho não compilar; O trabalho não gerar os arquivos com os resultados e formato esperado; For detectada a ocorrência de plágio pelo sistema. Ainda, os trabalhos poderão ser avaliados segundo os seguintes critérios: Cumprimento das restrições estabelecidas no ítem 3 deste documento; Modularização (considerando o uso de arquivos separados para os diversos tipos abstratos de dados); Ausência de uso de variáveis globais; Legibilidade (nomes de variáveis bem escolhidos, código bem formatado, uso de comentários quando necessário, etc.);

Consistência (utilização de um mesmo padrão de código); Eficiência (sem exageros, tentar evitar grandes desperdícios de recursos); Para programas em C e C++, evite vazamentos de memória (memory leaks). Utilize o programa Valgrind (http://valgrind.org) para detectar e eliminar memory leaks. 6. Observação importante Caso haja algum erro neste documento, serão publicadas novas versões e divulgadas erratas em sala de aula. É responsabilidade do aluno manter-se informado, freqüentando as aulas ou acompanhando as novidades na página da disciplina na Internet.