• Nenhum resultado encontrado

Laboratório de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Laboratório de Programação"

Copied!
24
0
0

Texto

(1)

Laboratório de

Programação

Dr. Italo Santiago Vega

Curso de Graduação Ciência da Computação

Pontifícia Universidade de São Paulo Copyright © 1998-2004, Italo S. Vega

(2)

Calendário

Semana Data Tópico

21 04/08/2004 Milhão da Computação (i) 22 11/08/2004 Milhão da Computação (ii) 23 18/08/2004 Milhão da Computação (iii)

24 25/08/2004 Milhão da Computação (iv). Entrega da A21. I 25 01/09/2004 Milhão da Computação v. 2 (i)

26 08/09/2004 Milhão da Computação v. 2 (ii) 27 15/09/2004 Milhão da Computação v. 2 (iii) 28 22/09/2004 Milhão da Computação v. 2 (iv)

29 29/09/2004 Milhão da Computação v. 2 (v). Entrega da A22. 30 06/10/2004

31 13/10/2004 32 20/10/2004 33 27/10/2004 34 03/11/2004

(3)

Conteúdo

1 Critérios de Avaliação 2

1.1 Quantificação . . . 4

1.2 Penalização após a data de entrega: . . . 6

1.3 Considerações . . . 7

1.4 Estrutura do Documento . . . 9

1.5 Programação em Parceria . . . 12

2 Atividade A2: Milhão da Computação (v. 2) 13 2.1 Meta . . . 13

(4)

1

Critérios de Avaliação

Os seguintes critérios serão utilizados para avaliar os trabalhos de programação.

• A solução proposta atende ao problema apresentado. Especificamente:

– A solução representa, de forma clara, uma idéia que atende aos requisitos

especificados.

– O programa compila e executa.

– Foram elaborados testes que comprovam o atendimento a todos os requisitos

especificados.

– O programa é corretamente executado e passa em todos os testes elaborados.

• A solução constitui um produto de alta qualidade, condizente com o esperado de

(5)

comandos if não triviais, repetições, ativações de operações, etc.) são adequadamente documentados.

– O desenho geral do programa é claro e razoável. Ex.: o programa faz bom uso

das classes e operações; os algoritmos dos métodos são apropriados para a

tarefa e claramente explicados, sendo implementados de forma compreensível. Todas as classes, interfaces e métodos incluiem uma descrição “JavaDoc”

apropriada. Classes devem conter as marcas @autor e @version (utilize a data de escrita do código como valor de versão), juntamente com uma

descrição do que a classe representa e para que ela serve. Métodos devem incluir uma descrição do seu comportamento, juntamente com descrições de cada parâmetro (marca @param) e o valor de retorno, se houver (marca

(6)

1.1

Quantificação

Nota Significado

10 a solução atende a todos os critérios muito bem.

9 a solução não é exatamente a esperada, com erros superficiais 8 a solução atende à maioria dos critérios, mas pode ser melhorada.

6 a solução é satisfatória, atendendo a alguns critérios, mas precisa ser significativamente melhorada.

4 a solução é aceitável; vários critérios não foram atendidos; precisa de muitas melhorias.

(7)

1.2

Penalização após a data de entrega:

15% até a primeira semana posterior à data de entrega. Não serão aceitos trabalhos além desta data de penalização.

(8)

1.3

Considerações

Os alunos às vezes questionam porque um erro, aparentemente pequeno, provoca uma nota baixa. A principal razão é que um sistema de software que não funciona

apropriadamente, mesmo em relação a um pequeno aspecto (em sitações do “mundo real”) pode ter um alto custo ou serem até mesmo perigosos para os usuários. Uma parcela grande do alto custo de um software é decorrente da dificuldade de alteração para as empresas que o desenvolvem.

Muitos contratantes de profissionais de software exigem altos padrões de qualidade. É importante entender que “quase certo” não é o suficiente para a maior parte dos

contratantes. Além disso, do ponto de vista profissional, o “quase certo” não deveria ser bom o suficiente para o programador, mesmo atendendo às expectativas do

(9)

Assim, um erro que impede o funcionamento do programa (especialmente se ele sequer compila) pode resultar em uma redução volumosa da nota. Assim,

recomenda-se continuar trabalhando no programa, mesmo que a data de entrega esteja vencida, recebendo uma penalidade por atraso, do que submeter a avaliação de um programa inaceitável.

Em atividades que envolvem diversos alunos, todos devem estar de acordo com o trabalho entregue. Quaisquer discordâncias ou sitações extraordinárias serão tratadas diretamente pelo professor.

(10)

1.4

Estrutura do Documento

Deverá ser entregue um documento com a seguinte estrutura na data de entrega da avaliação (as páginas do trabalho deverão ser numeradas):

(11)

1. Capa

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE SÃO PAULO LABORATÓRIO DE PROGRAMAÇÃO - LP, 2004

Atividade= A2, Milhão da Computação

Turma = C22

Time= 22-<número indicado em aula> <INSCRIÇÃO>; <Nome do Aluno>

Professor= Ítalo

Data de Entrega= <a ser preenchido na entrega do documento>

(12)

2. Programação Texto descrevendo o as classes (ilustrações do BlueJ), os métodos (ilustados com mapas de execução) e outros elementos relevantes.

3. Testes e Resultados Texto descrevendo, para cada serviço oferecido pelo sistema para o usuário, o respectivo teste de aceitação.

Também, para funcionalidade interna relevante, o respectivo teste de aceitação.

4. Programa Texto do programa entregue (devidamente comentado com as marcas JavaDoc).

5. Sugestões (NÃO SERÃO CONSIDERADAS DURANTE A AVALIAÇÃO.) Sugestões para melhorias futuras desta atividade para que haja um melhor

(13)

1.5

Programação em Parceria

Programação em parceria é uma idéia relativamente nova para aumentar a

produtividade e qualidade no desenvolvimento de sistemas de software. Nas aulas de laboratório existe uma sugestiva evidência que a programação em parceria aumenta as notas (mesmo em avaliações teóricas), diminui a frustração dos alunos e melhora a taxa de sucesso dos times com parceiros em dificuldades.

O trabalho em parceria segue algumas regras que organizam a dinâmica de

programação. Um dos parceiros será o piloto, responsável pelo uso do teclado, escrita de notas e elaboração de desenhos. O outro será o navegador, observando o trabalho do piloto, procurando defeitos de software (erros sintáticos, lógicos, etc.), questionando sobre o desenho proposto e sugerindo caminhos alternativos. É importante lembrar que

(14)

2

Atividade A2: Milhão da Computação (v. 2)

Data de Entrega: 30/09/2004

2.1

Meta

Escrever um programa em Java que apresenta um questionário a ser respondido pelo jogador, pergunta a pergunta. Cada pergunta faz o programa apresentar quatro

alternativas, apenas uma delas correta. O jogador pode responder corretamente, errar ou desistir.

(15)

Niveis de Perguntas No primeiro nível, conhecido por nível fácil e composto por cinco perguntas, as apostas correspondem a $1.000 por pergunta. O jogador inicia o nível com $1.000.

No segundo nível, conhecido por nível médio e composto por cinco perguntas, as

apostas correspondem a $10.000 por pergunta. O jogador inicia o nível com $10.000. No terceiro nível, conhecido por nível difícil e composto por cinco perguntas, as

apostas correspondem a $100.000 por pergunta. O jogador inicia o nível com $100.000.

(16)

Categorias de Ajuda Durante as perguntas destes níveis, o jogador contará com

duas categorias de ajuda. Em cada partida, ele poderá recorrer a apenas uma categoria:

• Cartas do Baralho:

– ÁS: elimina uma alternativa errada.

– DOIS: elimina duas alternativas erradas. – TRÊS: elimina três alternativas erradas. – REI: nada acontece.

• Dica: apresenta uma dica para a alternativa correta.

Mecanismo de Pulos O jogador poderá fazer uso do mecanismo de pulos: passa para a pergunta seguinte, sem responder à atual. O uso deste mecanismo está restrito a

(17)

Valor Acumulado No decorrer do jogo serão acumulados os valores referentes às perguntas até que o jogador desista, erre ou ganhe o jogo. Durante as perguntas dos níveis fácil, médio e difícil, o valor da pergunta corresponde ao acumulado pelo jogador mais o valor da aposta. Caso o jogador erre, ele ganha a metade do valor acumulado. Se ele desistir, ele recebe o valor acumulado. Na situação de acerto, o jogador acumula o valor da pergunta.

Pergunta Final Caso o jogador tenha acertado as perguntas de todos os níveis, uma última pergunta poderá ser formulada, valendo $1.000.000. Neste caso, entretanto, o jogador não poderá desistir.

(18)

Bancos de Perguntas O jogo deverá oferecer um universo de perguntas referentes aos seguintes assuntos:

• Fundamentos da Computação • Teoria da Computação • Estruturas de Dados • Algoritmos • Laboratório de Programação • Programação em Java • Internet • Redes de Computadores

(19)

Restrições de Modelagem As seguintes restrições tecnológicas deverão ser obedecidas:

1. O sistema deverá oferecer um serviço de listagem das perguntas e respostas

corretas realizadas até um determinado momento. O serviço de listagem deverá

fazer uso de uma estrutura de dados do tipo pilha. No código em Java, a classe

Stack deverá ser utilizada.

2. As perguntas de um particular jogo deverão ser sorteadas de bancos de perguntas fáceis, médias e difíceis. Cada banco de perguntas deverá fazer uso de uma

estrutura de dados do tipo dicionário (ou mapa). No código em Java, a interface

Map deverá ser utilizada. A classe Hashtable irá implementar esta interface. A chave de acesso aos dicionários deverá ser a ordem de cadastramento das

perguntas nos bancos. O método

Hashtable::put(chave:String, pergunta:Pergunta)

(20)

2.2

Parte I: Programação

Escrever o programa que permita jogar o Milhão da Computação.

Estrutura Inicial de Classes Como ponto de partida para a organização dos

(21)

Bases de perguntas do jogo representadas por três objetos

da classe Hashtable. Histórico de perguntas já formuladas. As perguntas são armazenadas em um objeto da classe Stack.

Cada nível deverá solicitar que a respectiva base de perguntas “sorteie” as suas cinco perguntas.

Cada nível deve informar para o objeto histórico, a pergunta formulada e a alternativa correta. Cada nível do

jogo deve ser armazenado em

um objeto da classe Vector.

(22)

Sugestões:

• Criar as variáveis baseFacil, baseMedio e baseDificil da classe BasePerguntas na classe Jogo.

• Criar as variáveis acil, medio e dificil da classe Nivel na classe Jogo. • Criar a variável atual:Pergunta na classe Jogo.

• Criar a variável acumulado:int na classe Jogador. • Crar a variável aposta:int na classe Nivel.

• Crar a variável perguntas:Vector na classe Nivel.

• Crar a variável alternativas:Vector na classe Pergunta.

(23)

2.3

Parte II: Testes

Criar testes que mostrem o correto funcionamento do jogo implementado. Os papéis devem ser trocados nesta parte: piloto e navegador.

Sugestões:

• Criar uma classe para a realização de testes: TesteMilhao.

• Inserir um método para cada aspecto relevante dos comportamentos interno e

externo esperados do sistema. Ex.: comportamentos externos: testar formulação de pergunta, testar desistência, testar acerto, testar troca de nível, etc.

Comportamentos internos: testar cálculo da aposta, testar leitura do

arquivo-questionário, etc. Cada um destes métodos deverá instanciar o universo apropriado de objetos para que seja realizado.

(24)

Calendário

Semana Data Tópico

21 04/08/2004 Milhão da Computação (i) 22 11/08/2004 Milhão da Computação (ii) 23 18/08/2004 Milhão da Computação (iii)

24 25/08/2004 Milhão da Computação (iv). Entrega da A21. I 25 01/09/2004 Milhão da Computação v. 2 (i)

26 08/09/2004 Milhão da Computação v. 2 (ii) 27 15/09/2004 Milhão da Computação v. 2 (iii) 28 22/09/2004 Milhão da Computação v. 2 (iv)

29 29/09/2004 Milhão da Computação v. 2 (v). Entrega da A22. 30 06/10/2004

31 13/10/2004 32 20/10/2004 33 27/10/2004 34 03/11/2004

Referências

Documentos relacionados

Este estudo apresenta como tema central a análise sobre os processos de inclusão social de jovens e adultos com deficiência, alunos da APAE , assim, percorrendo

Todos os docentes que estiverem interessados em participar Diverso material de desgaste Sim  Não  Não inserir no dia cultural Intervenientes Alunos, Docentes,

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Estudos sobre privação de sono sugerem que neurônios da área pré-óptica lateral e do núcleo pré-óptico lateral se- jam também responsáveis pelos mecanismos que regulam o

Evolução do SOA: SaaS, composição e S+S Utilizador Interface Utilizador unificado Pessoas e Dispositivos Web 2.0 Portal Apoio cliente Portfolio de Serviços Finanças

We propose a conformance testing theory to deal with this model and describe a test case generation process based on a combination of symbolic execution and constraint solving for

de lôbo-guará (Chrysocyon brachyurus), a partir do cérebro e da glândula submaxilar em face das ino- culações em camundongos, cobaios e coelho e, também, pela presença

For each material sample, it was accomplished the metallography analysis, the hardness testing, the measurement of ultrasonic velocities of longitudinal and transverse waves