Funciones de calificación

Al editar una pregunta, Wiris Quizzes ofrece una amplia gama de opciones para comparar la respuesta del estudiante con la respuesta correcta. Entre otras opciones, podemos encontrar decimales, unidades, simplificación, etc. (todo lo que figura en la pestaña Validación). Sin embargo, a veces tenemos que crear una regla propia para determinar si una respuesta es correcta. Esto puede hacerse mediante funciones de calificación. Dicho brevemente, una función de calificación es una fórmula definida por el creador de la pregunta que toma la respuesta del estudiante y decide si es correcta o no. Esto permite una especificidad aún mayor que con las opciones disponibles en la pestaña Validación.

Una función de calificación es una función de una o más variables (consulta función de calificación y respuesta compuesta) definidas en la pestaña Variables que devuelve un número entre 0 y 1. El número devuelto por la función para cada entrada corresponde a la puntuación sobre 1,00 que se recibirá para esa respuesta. En el primer ejemplo, los valores devueltos eran cierto o falso, lo que equivale a 0 (cero puntos) o 1 (máxima puntuación). Para ver un ejemplo donde se utilizan más valores entre 0 y 1, consulta puntuación personalizada.

Cada vez que deseemos utilizar una función de calificación, debemos seleccionarla como opción en la pestaña Validación y escribir el nombre de la función en el espacio en blanco. Desplázate hacia abajo para ver más ejemplos.

Supongamos que queremos hacer la pregunta Indica un número primo. Para ello necesitamos usar una función de calificación.

En primer lugar, vamos a crear la función de calificación. Esto se hace en la pestaña Variables. En este ejemplo, la función de calificación se llamará f c</html>.

Wiris CAS CalcMe

La función que hemos definido, f c left parenthesis x right parenthesis</html>, devuelve cierto si x</html> es primo y falso en caso contrario. Para usar esto como método de validación, selecciona "función de calificación" en la pestaña Validación. Luego escribe el nombre de la función de calificación en el espacio en blanco, en este caso, "fc".

En cuanto a la pestaña Respuesta correcta, se puede usar cualquier valor. Dado que hemos seleccionado "función de calificación" como método de validación, la salida de la función de calificación es lo único que determina las respuestas correctas. En este caso, podríamos introducir un número primo, por ejemplo.

Mostraremos un ejemplo sencillo de una función de calificación con varias salidas. La idea será otorgar más puntos por cada nivel de corrección que consigue la respuesta.

Queremos hacer la siguiente pregunta de aritmética básica:

otorgando puntuación parcial por cada propiedad correcta de la respuesta. Supongamos que los estudiantes son niños pequeños y consideramos que la parte más difícil es indicar correctamente un número cuyo resto sea 2 al dividirse por 7. Daremos 0,4 puntos para eso, y 0,3 puntos para cada una de las otras propiedades. Además, queremos dar solo la mitad de la puntuación para el resto de las propiedades si la respuesta de la primera es incorrecta (este es el propósito de disminuir_nota).

Wiris CAS CalcMe

Observa que para hacer una función de calificación más larga con múltiples condicionales y cálculos, debemos encapsularla con las cláusulas inicio..fin y usar devolver para definir la salida de la función.

La pregunta ya está completada. Asegúrate de marcar la opción "función de calificación" en la pestaña Validación, tal como se describió anteriormente, y proporciona un valor correcto en la pestaña Respuesta correcta. Vemos que estas dos respuestas son correctas:

Hemos utilizado una pregunta bastante simple como ejemplo, pero ya podemos ver que es posible crear funciones de calificación con un diseño muy personalizado y complejo.

DEMO INTERACTIVA

También podemos crear funciones de calificación para preguntas de respuesta compuesta. La forma de hacerlo es utilizar un argumento nuevo para cada respuesta. Por lo tanto, si hay tres espacios en blanco para rellenar, la función de calificación debe ser algo así como gf(x,y,z). El primer argumento corresponde al primer espacio en blanco; el segundo argumento, al segundo espacio en blanco, y así sucesivamente. Veamos un ejemplo sencillo.

La pregunta será un ejercicio estándar de cálculo básico:

Para ello, se podría utilizar la siguiente función de calificación:

Wiris CAS CalcMe

La ventaja en este caso, contrariamente a la respuesta compuesta ordinaria, es que dejamos de preocuparnos por el orden en que el estudiante responde. También permite prácticamente infinitas respuestas (aquí cualquier respuesta de la forma 8 k plus 1 con k como número entero era válida). No obstante, es obvio que se puede programar un comportamiento mucho más complejo.

DEMO INTERACTIVA

Imagina que estamos trabajando con una respuesta compuesta, como en respuesta compuesta. Puede ocurrir que el estudiante deje una casilla vacía y solo responda a una pregunta. Para calificar la respuesta enviada, hay que modificar el algoritmo y comprobar que la casilla no esté vacía con el comando not_null?. Por ejemplo, siguiendo el mismo ejemplo de antes

Recuerda que en la pestaña Respuesta correcta es necesario distribuir la calificación del modo deseado.

Es importante leer esta sección si queremos crear preguntas con vectores. La clave es que los puntos y vectores se pasan a la función de calificación como matrices, por lo que debemos desindexarlos en el cuerpo de la función para poder hacer operaciones normales con ellos. Quedará claro con los siguientes ejemplos básicos.

Lo que esto significa esencialmente es que si pasamos [...] a una función de calificación, se tomará como [ [...] ] (una lista con el vector original como único elemento). Como resultado, no podemos hacer operaciones vectoriales con ella. Por ejemplo, el vector

Wiris CAS CalcMe

se convertirá en

Wiris CAS CalcMe

¿Cómo se accede al vector original? Es el primer (y único) elemento de una lista, por lo que, al igual que en cualquier lista, podemos acceder al primer elemento con el subíndice "1":

Wiris CAS CalcMe

Así, si "v" es el vector original especificado por el estudiante y que se pasa a la función de calificación, para considerarlo como un vector simplemente debemos escribir "v1" en todos los sitios donde queramos usar "v". Veamos esto con unos ejemplos.

Ejemplo 1

La matriz tiene rango 2, por lo que habrá infinitas soluciones. Esto significa que debemos usar una función de calificación si queremos permitir cualquier solución posible. La función en sí es bastante simple, pero observa que usamos el subíndice como se describe arriba:

Wiris CAS CalcMe

También debemos permitir que los estudiantes respondan con vectores fila o columna (hasta ahora solo estábamos trabajando con vectores fila). Vamos a ilustrar lo que hay que hacer con un ejemplo. Usando la misma pregunta de antes, digamos que el estudiante responde así:

Este es un vector columna, de modo que se trata de otra manera. Lo único que debemos hacer es transponerlo para volver al caso anterior. Es probable que queramos admitir ambos tipos de respuesta, por lo que al principio de la función de calificación original podríamos añadir lo siguiente:

Wiris CAS CalcMe

Hemos añadido una cláusula if que simplemente detecta si la entrada es un vector columna (comprobando si el número de columnas es 1) y, si es así, lo transpone. Si no, no se hace nada a "v". El resultado es que "v" tendrá la forma [ [...] ] en todos los casos; después, podemos usar subíndices tal como se ha descrito anteriormente.

DEMO INTERACTIVA

Ejemplo 2

Imagina que queremos hacer la siguiente pregunta a nuestros estudiantes:

En este ejemplo, necesitamos claramente una función de calificación ya que hay infinitas respuestas correctas.

La primera respuesta es un punto pero sin embargo se entiende como una matriz de una fila y dos columnas: open parentheses table row 3 7 end table close parentheses</html>. Entonces, si queremos trabajar con el punto, tenemos que obtener la primera fila. Además, tenemos que decirle a CalcMe que es un punto (sinó pensará que es un vector). Así, la primera parte de la función de calificación sería

Wiris CAS CalcMe

La segunda respuesta es un vector, pero como antes se entiende como una matriz. De forma similar tenemos que acceder a la primera fila, obteniendo una función de calificación como la siguiente:

Wiris CAS CalcMe

Supongamos ahora que, dada una fracción irreducible, queremos que el estudiante responda con una fracción equivalente cualquiera. Para ello también necesitaremos una función de calificación.

En este caso, puesto que queremos que la respuesta del estudiante sea interpretada tal y como está escrita y sin simplificar, deberemos seleccionar la opción Mantener los argumentos sin evaluar. Por ejemplo, seleccionando dicha opción, el sistema de evaluación considerará la fracción6 over 21 sin simplificar mientras que, en caso contrario, considerará la fracción 2 over 7.

La función de calificación correspondiente se llamará fc y otorgará puntuación si la fracción dada por el estudiante es matemáticamente igual a la fracción inicial f y sus denominadores son distintos.

Wiris CAS CalcMe
Fíjate que se debe acceder al denominador utilizando x subscript 2 en lugar de con la función denominador(x). Es importante tener en mente esta notación.

De este modo, podremos introducir cualquier fracción equivalente y será aceptada como respuesta correcta.