Don't talk, if you can read; don't read if you can write; don't write if you can think. HANNA ARENDT, Diario filosófico

jueves, 12 de noviembre de 2015

Implementación del condicional en el calificador de Moodle (2ª parte)

El calificador de Moodle no dispone de un condicional para incorporarlo en las fórmulas de cálculo. Hace algunos años, describía en esta entrada una manera de implementar el condicional utilizando las funciones min() y round() y, en ciertos casos, sólo con round().
Como vamos a ver, también puede hacerse utilizando sólo la función max() -o alternativamente, la función min()-. A cambio, la fórmula que se obtiene es más larga.
Consideremos el siguiente ejemplo real:
A lo largo de los últimos años mis compañeros que imparten clase en la ESA, han seguido el siguiente criterio de calificación:
La nota de un trimestre se obtiene haciendo una media ponderada de la nota de examen, la nota de tareas y la de tutorización, con pesos respectivos del 50%, 30% y 20%, siempre que la nota de examen sea de al menos un 3. En caso contrario, la nota del trimestre es simplemente la nota de examen.
Llamemos Exa1, Tar1 y Tut1, respectivamente a las notas de examen, de tareas y de tutorización del primer trimestre, ya multiplicadas por sus correspondientes pesos.
Y supongamos –como así es en este caso- que en las notas que introducimos en el calificador la cifra de las centésimas es siempre cero, con lo cual Exa1 nunca puede tomar el valor 1,49 (puede tomar los valores …, 1,40, 1,45, 1,50, …).

Entonces la nota del primer trimestre puede ser expresada así:


Utilizando la función max(), podemos expresarla de este modo:


 Escrita tal como debería ser introducida en Moodle, queda así:


Una fórmula equivalente, aunque algo más larga, es la que han venido usando mis compañeros. Es ésta:


Pero el criterio de calificación descrito arriba tiene algunos inconvenientes: puede darse el caso de un alumno que con sólo un 3,5 en el examen llegue a obtener un 6,75 (un 7, redondeando) en la nota de evaluación.
Por el contrario, un alumno con un 6 en el examen podría llegar a suspender el trimestre.
Para evitar estos inconvenientes, se planteó entonces modificar el criterio de calificación en el sentido siguiente:
-Si la nota del examen es menor que un 3, la nota del trimestre será dicha nota.
-Si la nota del examen mayor o igual que 3 y menor que 4, la nota del trimestre será la nota ponderada de examen, tareas y tutorización, siempre que ésta no supere el 5, en cuyo caso será un 5.
-Si la nota de examen es mayor o igual que 4 y menor que 5, la nota del trimestre será la nota ponderada.
-Por último, si la nota de examen es mayor o igual que 5, la nota del trimestre será la mayor de las notas ponderada y de examen.
Entonces, bajo los mismos supuestos que antes, la nota del trimestre vendría dada por la función:


Utilizando la función max(), podemos expresarla así:


Esta fórmula, escrita tal como debería introducirse en el calificador de Moodle, queda de esta forma:


Transcribo aquí la ecuación como texto para facilitar su copiado:

=max(0;1,49-[[Exa]])*2*[[Exa1]]/(1,49-[[Exa1]])+max(0;[[Exa1]]-1,49)*max(0;1,99-[[Exa1]])*min([[Exa1]]+[[Tar1]]+[[Tut1]];5)/(([[Exa1]]-1,49)*(1,99-[[Exa1]]))+max(0;[[Exa1]]-1,99)*max(0;2,49-[[Exa1]])*([[Exa1]]+[[Tar1]]+[[Tut1]])/(([[Exa1]]-1,99)*(2,49-[[Exa1]]))+max(0;[[Exa1]]-2,49)*max([[Exa1]]+[[Tar1]]+[[Tut1]];2*[[Exa1]])/([[Exa1]]-2,49)