Ir para o conteúdo principal
Paca
  • Página inicial
  • Mais
Você acessou como visitante
Acessar
Página inicial
  1. Semestres anteriores
  2. MAC0122 2017
  3. EP13
Tarefa

EP13

Condições de conclusão
Aberto: segunda-feira, 6 nov. 2017, 01:00
Vencimento: domingo, 19 nov. 2017, 23:55

Decteção de Plágio

Esqueletos e suas comparações


Objetivo:

O objetivo do EP13 é definir e implementar uma forma de representação de programas através de um esqueleto, ou forma canônica, que contenha a sua essência e simplifique a comparação de arquivos.

   

Descrição:

Assim como no EP12, vamos nos basear em parte nos resultados da 1a oficina de programação. No EP12 começamos com

  • leitura de vários arquivos;
  • teste de igualdade de dois arquivos;
  • teste de igualdade de dois programas em Pyhton após a remoção de comentários;

Agora vamos continuar o nosso caminho na dectecção de casos de plagiarismo ou grau de similaridade. Esse grau de similaridade é o valor que, já no EP12, estava sendo armazenado em uma posição da matriz M: M[lin][col] é o grau de similaridade entre o programa representado pela linha lin e o programa representado pela coluna col. A remoção de comentários foi um primeiro passo no sentido de obtermos o que vocês chamaram durante a 1a oficina de programação de esqueleto de um programa. A ideia é que o esqueleto de um programa contenha a sua essência para que o detector de similaridade não seja iludido por eventuais disfarces.

O EP13 acrescentará funcionalidades ao seu EP12. O seu EP13 deve:

  1. [30%] Tratar programas disfarçados através de um número diferente de brancos (espaços, tabs, newlines, etc) entre seus elementos.
    Como fazer isso?
    . Considere que o programa está sem comentários (vide EP12).
    . Implemente funções ou métodos para tratar esse caso.
    . Marque esses casos de plágio como 3 na correspondente posição da matriz M.
    . Compartilhe as suas dúvidas, ideias ou sugestões no fórum ou no wiki.
  2. [30%] Tratar programas disfarçados por troca de nomes variáveis. Como fazer isso?
    . Considere que o programa está sem comentários (vide EP12) e sem brancos desnecessários (item 0).
    . Implemente funções ou métodos para tratar esse caso.
    . Marque esses casos de plágio como 4 na correspondente posição da matriz M.
    . Compartilhe as suas ideias ou sugestṍes no fórum ou no wiki.
  3. [30%] Modifique a função main() do EP12 para incluir os 2 casos de similaridade acima.
  4. [10%] Documente o seu programa de tal forma que outro programador ou monitor ou professor entenda a sua estratégia de solução de cada caso.
    Programadores, monitores e professores sabem Python, assim evite comentários descrevendo o que um comando faz.
    Comentários devem dizer o que trechos de código fazem. Veja, por exemplo, as documentações de funções e comentários de MAC0110 e MAC0122. Cada função recebe algo e faz ou retorna alguma coisa.

Passo-a-passo:

  1. Apresente e discuta suas ideias e de seus colegas na seção de comentários do Wiki do Projeto Final e nas oficinas de programação.
  2. Copie o arquivo que você entregou como NUSP_EP12.py para NUSP_EP13.py.
  3. Escreva as funções e métodos auxiliares que desejar para incluir os novos casos de plágio, edite a main() e coloque comentários e docstrings.
  4. Teste o seu programa para entradas simples.
  5. Depois de funcionar para entradas simples, teste o seu programa com entradas mais reais.
  6. Entregue o seu programa.

Você acessou como visitante (Acessar)
Resumo de retenção de dados
Baixar o aplicativo móvel.
Fornecido por Moodle