Skip to content

Instantly share code, notes, and snippets.

@senapk
Last active July 18, 2020 17:01
Show Gist options
  • Save senapk/390b09459d8bcb5166b0fcf7d93cb070 to your computer and use it in GitHub Desktop.
Save senapk/390b09459d8bcb5166b0fcf7d93cb070 to your computer and use it in GitHub Desktop.
Como contribuir com os repositórios de questões

Guia para facilitar a criação de questões de programação para o Moodle

1. Contribuindo com os respositórios

  • Se você quer contribuir com nosso banco de questões de FUP ou ED basta enviar sua questão para [email protected]
  • Cada questão deve conter.
    • Tema: strings, árvores, vetores, ...
    • Descrição: Markdown, .doc ou .odt ou no corpo do email
    • Testes: formato VPL, formato TIO ou formato OBI
    • Código de resposta: qualquer linguagem, desde que faça os testes passarem

2. Técnicas e Ferramentas auxiliares

2.1. Formatando a descrição com Markdown

  • Mais fácil de manter e hospedar no github
  • Insira imagens hospedadas remotamente, porque não precisará importá-las para o moodle.

![](https://pbs.twimg.com/profile_images/686637239514824704/MueLpS6z_400x400.png)
  • Na conversão de Markdown para Html, a sintaxe em códigos permanece com highlight.
int main(){
    double x = 4.5;
    char * text = "bacon";
    return 0;
}
  • Para inserir códigos códigos latex, utilize essa URL que vai fazer a renderização remota. Para gerar essa "figura"

Basta inserir esse código no seu Markdown:

<img src="https://render.githubusercontent.com/render/math?math=d_{AB}=\sqrt{(X_B-X_A)^2+(Y_B-Y_A)^2}">
  • Para gerar o html, utilize o comando pandoc.
pandoc Readme.md -o arquivo.html --standalone 
  • Então basta abrir o Moodle, criar a questão, Clicar no "<>" do editor do Moodle para abrir o modo html e colar o conteúdo do arquivo.html gerado pelo pandoc.

  • Pronto, sua questão terá imagens, equações e códigos com sintaxe.

2.2. Criando os casos de testes

  • Use o próprio arquivo de descrição do problema para descrever a entrada e saída esperada usando o formato TIO. Assim, você garante que até os próprios exemplos da descrição estarão corretos.
  • Utilize um arquivo extra para colocar testes que não quer que estejam no Readme.md.

Modelo de formatação TIO

>>>>>>>>
aqui temos a
entrada do
teste
========
aqui você coloca
a saída do
teste
<<<<<<<<

2.3. Exemplo de problema

--------------- Arquivo Readme.md --------------

  • Problema:

Dados dois números inteiros de entrada, um por linha, mostre o resultado da divisão. Se o resultado for inteiro, mostre o valor inteiro, se for flutuante, mostre com duas casas decimais.

  • Entrada e Saída no formato TIO:
>>>>>>>>
4
2
========
2
<<<<<<<<

>>>>>>>>
3
2
========
1.50
<<<<<<<<

--------------- Arquivo t.tio --------------

>>>>>>>>
5
4
========
1.25
<<<<<<<<

>>>>>>>>
1
3
========
0.33
<<<<<<<<

2.4. Criando o código de solução

  • Para verificar se os testes estão corretos, crie o código em alguma linguagem que resolva o problema.
  • Se estiver fazendo diretamente no Moodle, você pode rodar os testes no moodle.
  • Se preferir rodar no seu computador, você esse script em Python TK
  • Aqui um tutorial relâmpago do TK em vídeo:

Para compilar e rodar seu código contra os testes que você escreveu basta usar o comando:

tk run solver.c Readme.md t.tio

A saída se houver erros, será apresentado o diff entre o texto esperado e o obtido e a informação de quais testes passaram e quais falharam.

2.5. Conversões entre formatos de testes

  • Para utilizar no Moodle, você precisa dos testes no formato vpl.
  • A ferramenta TK também serve para converter entre formatos de testes. Os testes serão extraídos tanto do arquivo Readme.md de descrição quantos do t.tio para gerar o arquivo t.vpl.
tk build t.vpl t.tio Readme.md
  • Para outros modelos de conversão, como converter os formatos de teste da obi para o formato do vpl, veja o vídeo de tutorial da ferramenta.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment