===== Patrón de funciones de evaluación ===== Las funciones de evaluación son pequeños programas escritos en un lenguaje de script propio de Siette denominado [[es:manual:ssl|lenguaje SSL]] que sirven para determinar si la respuesta de un alumno cumple una determinada condición, asignándole en cada caso un valor como correcta o no. Al igual que pasa con los demás patrones, puede haber condiciones que si se cumplen indican que la respuesta es correcta, (o al menos parcialmente correcta), y otras condiciones que indiquen lo contrario, es decir, que si se cumplen la respuesta es incorrecta (o parcialmente incorrecta, en el caso de varias respuestas). A continuación se presentan algunos ejemplos sencillos para aclarar esta idea. ((Con los ejemplos se busca claridad en la exposición del funcionamiento de las funciones de evaluación, no tanto calidad de la pregunta, que en algunos casos podrían mejorarse acotando mas las posibles respuestas o simplemente haciendo una pregunta diferente para evaluar el mismo conocimiento)) === Ejemplo 1 === Por ejemplo, supongamos que se quiere evaluar la siguiente pregunta: {{ es:manual:items:item-feval-1-1.png?400 }} {{ es:manual:items:item-feval-1-2.png?400 }} En este caso no sirven los patrones de evaluación anteriores, ya que habría que introducir uno a uno todas las posibles respuestas. El patrón correcto en este caso sería una única función de evaluación: if (answer <100 || answer>=1000) { return false; } for(i=2; i Esta a función devuelve ''false'' en caso de que consiga hallar un divisor de la respuesta dada por el alumno y ''true'' en caso contrario. También devolvería ''false'' en caso de que se produzca cualquier error o excepción de programación al evaluar el código. Nótese que para acceder a la respuesta del alumno se utiliza una [[es:manual:ssl#identificadores|variable predefinida]] denominada ''answer''. ((Tambien podría utilizarse la variable ''respuesta'' que tiene exactamente la misma función.)) === Ejemplo 2 === Supongamos ahora que se usan dos campos de respuesta, que deben indicarse en el campo [[es:help_items_content_pattern#Número de respuestas]] de la pestaña [[es:help_items_content_pattern#|Contenido]]. {{ es:manual:items:item-feval-2-1.png?400 }} En este caso, Siette requiere que haya al menos dos [[es:help_items_content_pattern|patrones de respuesta]] que sean correctos, así que la pregunta se formula pensando en la evaluación de dos restricciones y se escriben dos funciones de evaluación, una para el producto y otra para la suma: {{ es:manual:items:item-feval-2-patrones.png?400 }} Además se han añadido sendos mensajes de [[es:manual:test:refuerzos|refuerzo]] para que quede claro al presentar la evaluación, cuales han sido los patrones que se han aplicado En este caso ambas funciones de evaluación se han satisfecho y consiguientemente las dos respuestas se han considerado correctas: {{ es:manual:items:item-feval-2-2.png?400 }} Nótese que para acceder ahora a las respuestas del alumno se utilizan independientemente las variables ''answer[0]'' y ''answer[1]'', en el ejemplo ''6'' y ''7'' respectivamente. La variable ''answer'' contiene una combinación de ambas respuestas, exactamente la secuencia: ''{6,7}''. A diferencia de otros patrones que evalúan cada una de las respuestas de forma separada comparándolas con cada uno de los patrones, las funciones de evaluación componen siempre las respuestas del alumno en una sola, y ésta se compara con las funciones de evaluación tantas veces como respuestas se hayan declarado. (El siguiente ejemplo mostrará una mejora en este sentido.) En este caso solo una de las restricciones se satisface. La otra restricción no se llega a cumplir por lo que el segundo patrón que se aplica es el [[es:manual:items:patrones#Algoritmo de evaluación mediante patrones|patrón por defecto]]. ((La corrección por defecto que hace Siette resulta un tanto inadecuada en este caso, ya que la marca aparece asociada a la segunda respuesta)) {{ es:manual:items:item-feval-2-5.png?400 }} {{ es:manual:items:item-feval-2-4.png?400 }} Finalmente en este caso no se cumple ninguna de las dos restricciones, por lo que el [[es:manual:items:patrones#Algoritmo de evaluación mediante patrones|patrón por defecto]] se utiliza dos veces, no asignando ninguna puntuación a esta pregunta: {{ es:manual:items:item-feval-2-3.png?400 }} === Ejemplo 3 === El ejemplo es el mismo que el anterior, con dos opciones de respuesta, y dos patrones de respuesta correctos mediante dos funciones de evaluación. La diferencia en esta caso es que se han añadido otros tres patrones de respuesta, mediante otras tres funciones de evaluación que recogen casos de error específicos con el objeto de poder presentar [[es:manual:test:refuerzos|refuerzos]] mas informativos: {{ es:manual:items:item-feval-3-patrones.png?400 }} En los siguientes casos se dispara en cada caso un patrón de respuesta correcta y un patrón de respuesta incorrecta correspondiente a la negación del segundo patrón. Nótese que hay que diferenciar dos cosas: (1) Que el patrón (en este caso la función de evaluación) se cumpla o no se cumpla. Se cumplirá solo si devuelve ''true''.; (2) Que el patrón (función de evaluación) sea correcto o incorrecto, lo que tendrá implicaciones para la evaluación de la pregunta. Téngase en cuenta que como se vio en el ejemplo anterior si Siette no consigue satisfacer ninguno de los patrones propuestos por el profesor, escogerá como identificador de respuesta un patrón por defecto [[#Ejemplo 2| Ver ejemplo anterior]]. {{ es:manual:items:item-feval-3-4.png?400 }} {{ es:manual:items:item-feval-3-5.png?400 }} En el siguiente caso no se dispara ninguno de los patrones de respuesta correcta, pero si que se dispara un patrón de respuesta incorrecta, dando como resultado un refuerzo. (Estos [[es:manual:test:refuerzos|refuerzos]] deben introducirse en el [[es:help_items_content_mcq_sa#editor intermedio]] que aparece al pulsar el botón ''Completar'', junto a cada una de las funciones de evaluación). {{ es:manual:items:item-feval-3-3.png?400 }} === Ejemplo 4 === Por coherencia interna, Siette impone la restricción de que el número de respuestas que da el alumno a una pregunta de respuesta libre debe ser siempre inferior al número de patrones declarados como correctos, de manera que pueda haber al menos un patrón correcto por cada campo de respuesta. Una alternativa que permite sortear esta restricción es forzar a que Siette utilice [[es:help_items_presentation#Mostrar un único campo de respuesta|un único campo de respuesta]]. En este caso, la respuesta debe venir compuesta en esta forma: ;#; '{' respuesta0 , respuesta1 , respuesta2 , .... '}' ;#; Aunque Siette presenta [[es:help_items_presentation#Mostrar un único campo de respuesta|un único campo de respuesta]] , en el interfaz se puede indicar que el [[es:help_items_content_pattern#número de respuestas]] es mayor que uno (Dos en el ejemplo anterior), así que Siette presentará un solo campo de respuesta y probará si se verifican los patrones dos veces con la misma respuesta dada por el alumno. Por ejemplo: {{ es:manual:items:item-feval-4-1.png?400 }} La respuesta del alumno ha sido ''{6,7}''; de la cual Siette extrae los dos valores ''answer[0]'' y ''answer[1]'', de la misma manera que lo hizo anteriormente. Las funciones de evaluación son las mismas, y como puede verse, con esta respuesta se han verificado las dos. === Ejemplo 5 === Evidentemente hay una crítica al ítem anterior, y es que el alumno no tiene porque saber cómo escribir la respuesta, podría haber escrito simplemente ''6 y 7'', en vez de ''{6,7}''. Si hubiera hecho esto, el ítem anterior habría fallado en su evaluación, al no poder diferencias cada uno de los componentes de la respuesta. La solución a este problema son los [[es:manual:items:interactivos#ítems interactivos]] mediante [[es:manual:items:interactivos:evaluacion|javascript]], mediante los cuales podemos modificar libremente el enunciado, componer la respuesta y enviarla a Siette. ((Para que esto funcione, recuerde activar la opción ''javascript'' en el campo [[es:help_items_advanced#Autocorreccion]] de la pestaña [[es:help_items_advanced|Avanzado]] del menú de [[es:help_items|Preguntas]])) {{ es:manual:items:item-feval-5-1.png?400 }} que contiene en el enunciado el siguiente código en //html + javascript//: Escriba dos números mayores que 1, cuyo producto sea exactamente 42 y su suma 13.

× = 42
+ = 13
Aunque aparecen cuatro casillas de respuesta, los valores de cada columna se copian automáticamente al escribir en una de ellas. El evento ''onKeyUp'' llama a la función ''set(id1,id2)'' que se encarga de pasar los valores de uno a otro campo de respuesta. La funcion javascript [[es:manual:items:interactivos:evaluacion#funcion evaluacion|evaluacion()]], es llamada por Siette al finalizar el ejercicio, compone la cadena de respuesta, en esta caso ''{6,7}'' y la devuelve como respuesta del alumno. En el campo [[es:help_items_content_pattern#Número de respuestas]] de la pestaña [[es:help_items_content_pattern#|Contenido]] se ha escrito un ''2'' y en la pestaña [[es:help_items_presentation|Presentacion]] se ha seleccionado la opción [[es:help_items_presentation#Mostrar un único campo de respuesta|Utilizar un solo campo de respuesta]], al igual que en el [[#Ejemplo 4|ejemplo anterior]]. Las funciones de evaluación son las mismas, la respuesta la misma, y consiguientemente el ítem se comporta del mismo modo que en el [[#Ejemplo 4|ejemplo anterior]], aunque eso si, no presenta [[wp>Cognitive_load|sobrecarga cognitiva]] para responder como ocurría en el ítem anterior. {{ es:manual:items:item-feval-5-2.png?400 }} El ítem podría mejorarse incluso utilizando la función [[es:manual:items:interactivos:evaluacion#funcion resolver|resolver()]] para colocar otra vez en su sitio las respuestas del alumno y corregirlas sobre el propio enunciado, pero eso es ya otro problema, que nada tiene que ver con los patrones de funciones de evaluación.