Departamento de Ciência da Computação - IME - USP

MAC0115 Introdução à Computação

IAG - Primeiro Semestre de 2017

Primeiro Exercício Programa


CRITÉRIOS DE CORREÇÃO DO EP1

 

Estes critérios são dinâmicos. À medida que a correção for avançando, poderão surgir novos casos não previstos ainda. Para acertar isso, novos itens serão colocados na Seção "Outros tipos de problemas encontrados nos EPs".

 

1. Descontos por análise das funções pedidas
(Desconto total máximo: 10 pontos)

Função num_digitos(n) - Valor total: 1.0 ponto

Testes realizados:
  1. erro no valor devolvido pela funcão para valores de n não terminados em zero: desconto de 0.5 pontos
  2. erro no valor devolvido pela funcão para valores de n terminados em zero: desconto de 0.5 pontos

Função pos_ocupada(nlinhas, ncols, x, y, x0, y0, d): - Valor total: 3 pontos

Testes realizados:
  1. erro no valor devolvido pela funcao para toda posição (x,y) dentro do tabuleiro de teste, mas com exceção da posição x = x0 e y = y0 (ou seja, a cabeça da cobra): desconto de 2.7 pontos
  2. erro no valor devolvido pela funcao quando x = x0 e y = y0 (ou seja, a posição a ser verificada é a da cabeça da cobra): desconto de 0.3 pontos

Função imprime_tabuleiro(nlinhas, ncols, x0, y0, d): - Valor total: 3 pontos

Testes realizados:
  1. erro na impressão da borda do tabuleiro: desconto de 3 pontos

    Obs.: Este teste verifica se a função imprime um retângulo do tamanho correto, com as bordas delimitadas por caracteres "#". Os caracteres impressos no interior do retângulo são ignorados no teste.

  2. erro na impressão do interior do tabuleiro: desconto de 2 pontos

    Obs. 1: O teste 2 só é executado se a função passou sem erros pelo teste 1.
    Obs. 2: Para verificar se a impressão do interior do tabuleiro está correta, considera-se a implementacao feita pelo aluno da função pos_ocupada. Ou seja, passará no teste o tabuleiro que for desenhado corretamente de acordo com o que é devolvido na funcão pos_ocupada do aluno, ainda que o tabuleiro impresso não fique igual ao esperado (devido a algum possível erro na implementação de pos_ocupada).

Função move(nlinhas, ncols, x0, y0, d, direcao): - Valor total: 3 pontos

Testes realizados:
  1. erro no valor devolvido pela função quando o movimento é para a esquerda: desconto de 0.6 pontos
  2. erro no valor devolvido pela função quando o movimento é para a direita: desconto de 0.6 pontos
  3. erro no valor devolvido pela função quando o movimento é para cima: desconto de 0.6 pontos
  4. erro no valor devolvido pela função quando o movimento é para baixo: desconto de 0.6 pontos
  5. erro no valor devolvido pela função quando há colisão: desconto de 0.6 pontos
  6. impressão da mensagem de colisão não é feita corretamenta: desconto de 0.3

    Obs.: O teste 6 só é executado se a função passou sem erros pelos 5 testes anteriores.

 

2. Descontos adicionais

  1. Entregou um arquivo sem extensão '.py': desconto de 1.0 ponto
  2. Não incluiu o cabeçalho definido nas instruções para entrega de EPs: desconto de 0.5 pontos
  3. Não assinou o EP (trabalho sem o nome do autor): desconto de 0.25 pontos
  4. Uso de comandos não ensinados em aula antes do EP1:
    1. uso da função len(): desconto de 1 ponto
    2. uso de listas e/ou matrizes: desconto de 5 pontos

Entendendo os resultados dos testes

Alguns dos testes listados acima foram realizados por meio de um programa (o testador automático) que verifica as saídas das funções obrigatórias implementadas pelos alunos. Quando uma função testada gera um resultado diferente do esperado para ela, o testador exibe uma mensagem de erro. Toda mensagem de erro do testador tem o seguinte formato:

[<pontos_descontados>]: <nome_do_teste> | <função_testada(lista_de_parâmetros)>
<Erro_identificado_na_execução> 

Todo aluno deve ter recebido (na Graúna) uma lista com os erros identificados em seu EP1 durante a correção, que incluirá mensagens do tipo acima.

É importante ressaltar aqui que o testador automático pode executar um mesmo teste mais de uma vez, cada vez chamando a função testada com valores diferentes de parâmetros. Entretanto, quando um EP falha no mesmo teste mais de uma vez, o testador automático aplica o desconto correspondente ao teste somente uma vez, embora ele liste uma mensagem de erro para cada vez em que o teste falhou.

Abaixo é mostrado um exemplo da saída do programa testador automático quando aplicado sobre uma implementação do EP1 que contém erros. Nesse exemplo, há duas mensagens de erro para o caso 2 de teste da função imprime_tabuleiro (nome_do_teste = "Teste da impressao do interior do tabuleiro feita pela funcao imprime_tabuleiro"); os dois erros juntos causam um desconto de apenas 2 na nota. O mesmo ocorre para o caso 5 de teste da função move (nome_do_teste = "Teste do valor devolvido pela funcao move quando ha colisao"); os dois erros juntos causam um desconto de apenas 0.6 na nota.

Nota:  6.2
Os testes aplicados sobre o programa identificaram os seguintes erros:

[2 pontos]: Teste da impressao do interior do tabuleiro feita pela funcao imprime_tabuleiro | imprime_tabuleiro(4, 8, 4, 1, 2322)
AssertionError: A impressao do interior do tabuleiro nao esta correta

[2 pontos]: Teste da impressao do interior do tabuleiro feita pela funcao imprime_tabuleiro | imprime_tabuleiro(8, 16, 9, 5, 24223222442)
AssertionError: A impressao do interior do tabuleiro nao esta correta

[0.6 pontos]: Teste do valor devolvido pela funcao move quando direcao = 2 | move(5, 5, 3, 0, 23, 2)
AssertionError: Expected (4, 0, 32) but got (3, 0, 23)

[0.6 pontos]: Teste do valor devolvido pela funcao move quando direcao = 3 | move(5, 5, 3, 1, 32, 3)
AssertionError: Expected (3, 0, 23) but got (3, 1, 32)

[0.6 pontos]: Teste do valor devolvido pela funcao move quando ha colisao | move(5, 5, 3, 0, 23, 2)
AssertionError: Expected (4, 0, 32) but got (3, 0, 23)

[0.6 pontos]: Teste do valor devolvido pela funcao move quando ha colisao | move(5, 5, 3, 1, 32, 3)
AssertionError: Expected (3, 0, 23) but got (3, 1, 32)