As perguntas de programação são criadas da mesma forma que outros tipos de perguntas, mas existe uma ferramenta específica para facilitar a criação desses tipos de perguntas e colocar os valores específicos para perguntas de programação.
Para acessar esta ferramenta, vá ao menu “Ferramentas” e selecione “Construtor de Perguntas de Programação”. Após carregar a pergunta, serão exibidas as informações correspondentes a ela.
Do lado direito está um editor onde você pode testar como a pergunta avaliaria uma resposta, e do lado esquerdo estão as condições (cenários de validação) para validar a pergunta, que é composta por duas seções; o primeiro que serve para validar a pergunta quando o candidato estiver respondendo e os que serão usados ​​para validar e determinar a pontuação da pergunta. Essa diferença existe para evitar que o candidato insira uma resposta trivial como “Imprimir 5” em vez de um algoritmo para resolver o problema da pergunta. É por isso que é comum incluir um código pré-definido, um para validar durante o exame e outro para atribuir a pontuação (com outros valores) para que o candidato não possa inserir uma resposta trivial sem a lógica correspondente.
Tanto para validação durante o exame quanto para pontuação, você precisa inserir o valor esperado, que pode ser inserido diretamente ou pode escrever um programa para testar a pergunta e depois copiar a saída para as respostas. Você pode executar seu programa com qualquer uma das condições clicando no botão Executar correspondente. As condições a validar têm um peso pois é possível colocar várias condições diferentes, cada uma com um peso diferente que indica quanto pesa esta condição para calcular a pontuação obtida pelo candidato na questão.
Opcionalmente, você pode configurar uma avaliação da eficiência do código, com base no número de instruções (tokens) utilizadas pelo programa. Isso para dar menos pontuação a soluções que são mais longas do que o necessário. Para isso, você deve preencher os campos Min Token, Max Token e Peso Eficiência do Código. O peso da eficiência do código refere-se a qual porcentagem da pontuação da pergunta dependerá da eficiência do código. Por exemplo, se a questão tiver uma pontuação de 20 e um peso de 50 for colocado, então 50% da pontuação (10) dependerá da eficiência. O código é avaliado e se o número de tokens for menor ou igual ao Min token, ele obterá a pontuação máxima de eficiência. Por outro lado, se o número for maior que Max Token, você receberá 0. Para valores intermediários, a pontuação será proporcional. Recomenda-se definir isso apenas quando você já tiver uma amostra de várias respostas de candidatos, para identificar intervalos razoáveis ​​de Min e Max Token (ao executar a resposta do candidato no construtor retorna os valores de Min e Max Token para o código executado).
Finalmente, para perguntas que dão suporte à medição do desempenho do código, é possível indicar os intervalos e o peso do desempenho na pontuação da questão. Você deve marcar quais dos cenários de validação serão usados ​​para medir o desempenho. Atualmente, apenas as perguntas que utilizam o módulo TLang permitem medir o desempenho.