Aplicar penalizaciones a respuestas de un cuestionario - Ayuda!!!

Aplicar penalizaciones a respuestas de un cuestionario - Ayuda!!!

de Albert Navarro -
Número de respuestas: 4

Hola a todos,

por favor no consigo que las respuestas incorrectas en un cuestionario resten. Tengo un cuestionario con preguntas de elección múltiple, 4 posibles respuestas. A la pregunta correcta le asigno 100% de la puntuación y a las erróneas -33.33%. Pero cuando me calcula el resultado final no aplica las puntuaciones negativas!!! Sé que no tiene nada que ver con la especificación de "Penalizaciones", pues eso es para el modo adaptativo.

Me puede ayudar alguine, por favor? Me estoy volviendo loco!

Por cierto, uso la versión 1.8.2

Gracias!

Albert

 

Promedio de valoraciones: -
En respuesta a Albert Navarro

Re: Aplicar penalizaciones a respuestas de un cuestionario - Ayuda!!!

de Raul Garcia Canet -
Hola Albert,

Para hacer lo que pides debes modificar
Concretamente en cuatro ficheros, aunque pone que es para versión 1.8.6,
debería servir para la 1.8.2

NOTA: ANTES DE MODIFICAR LOS FICHEROS, REALIZA UNA COPIA DE CADA UNO DE ELLOS, POR SEGURIDAD

Fichero 1: moodle/lib/questionlib.php

Hacia la línea 768, busca el código:

$states[$i]->last_graded = clone($states[$i]);
}
}
Y a continuación escribe:

// make sure sumgrades are non-negative
$attempt->sumgrades = max($attempt->sumgrades, 0.0);

El código que va después es:

return $states;
}

En este mismo fichero, hacia la línea 1280-84 , busca el el código:

// Ensure that the grade does not go down
$state->grade = max($state->grade, $state->last_graded->grade);

Y cámbialo por:

// This is specific to penalties/timelimit/closing time, so it should not run always!

if ($cmoptions->penaltyscheme or $cmoptions->timelimit or $cmoptions->timeclose) {
// The structures are initialized to zero, so on the first time it will reset any negative value to zero.
if ($state->last_graded->seq_number != 0) {
$state->grade = max($state->grade, $state->last_graded->grade);
}
}

Fichero 2: moodle/mod/quiz/attempt.php

Busca las líneas (hacia la 343)

save_question_session($questions[$i], $states[$i]);
}

Y a continuación pon:
// make sure sumgrades are non-negative
$attempt->sumgrades = max($attempt->sumgrades, 0.0);

En el mismo fichero busca la línea (hacia la 383):

add_to_log($course->id, 'quiz', 'close attempt',
"review.php?attempt=$attempt->id",
"$quiz->id", $cm->id);

Y ANTES de ella pon:
// make sure sumgrades are non-negative
$attempt->sumgrades = max($attempt->sumgrades, 0.0);


Fichero 3:moodle/question/type/multianswer/questiontype.php

Bsuca la línea (hacia la 482)

$state->raw_grade = min(max((float) $state->raw_grade, 0.0), 1.0)
* $question->maxgrade;

Y cámbiala por:

$state->raw_grade = min(max((float) $state->raw_grade, -1.0), 1.0)
* $question->maxgrade;

Fichero 4: moodle/question/type/multichoice/questiontype.php

Busca la línea (hacia la 368):

$state->raw_grade = min(max((float) $state->raw_grade,
0.0), 1.0) * $question->maxgrade;

Y cámbiala por:
$state->raw_grade = min(max((float) $state->raw_grade,
-1.0), 1.0) * $question->maxgrade;

Más información en el Tracker de moodle:

MDL-1647" target="_blank" title="http://tracker.moodle.org/browse/MDL-1647" rel="noreferrer noopener">Allowing Negative Marks for Questions MDL-1647

Hasta pronto,
Salu2
J. Raul (juagarc4) guay



En respuesta a Raul Garcia Canet

Re: Aplicar penalizaciones a respuestas de un cuestionario - Ayuda!!!

de Francisco Alcolea -

Hola Juan, en primer lugar felicitarte por tu buen hacer y claridad de ideas en la exposición, efectivamente para la versión 1.9.6+ funciona para las preguntas de respuesta múltiple pero yo también utilizo preguntas de verdadero falso y he estado mirando el código para ver si soy capaz de intuir el cambio (no se programar en php) pero no lo veo...¿tu sabes que hay que modificar para que la respuestas erróneas de verdadero/falso resten cuando la respuesta sea incorrecta?

Un saludo y gracias de antemano.

En respuesta a Albert Navarro

Re: Aplicar penalizaciones a respuestas de un cuestionario - Ayuda!!!

de Wenceslao Fernández -
Hola Albert sonrisa

Me temo que tengo malas noticias... No es posible hacerlo. Para la mentalidad anglosajona no es adecuado que una pregunta descuente, lo mínimo que puede valer una pregunta errónea es 0 puntos, nunca un valor negativo. La penalización que puedes poner en las preguntas de los cuestionarios se refiere sólo a preguntas con varias respuestas posibles o al uso del modo adaptativo, pero siempre el resultado de una pregunta será 0, o un valor positivo.

Después de las malas noticias, vienen las buenas, ya que es posible modificar el código de Moodle para que se comporte tal y como quieres. El problema es que deberás hacer estas modificaciones siempre que actualices la plataforma.

Mi primer mensaje en estos foros se refería precisamente a este tema:

http://moodle.org/mod/forum/discuss.php?d=67662


http://moodle.org/mod/forum/discuss.php?d=109031#p494392


Allí se enlaza una solución de modificación de código para la versión 1.6, que no será complicado adaptarlo a la 1.8.

Creo que tengo una modificación para la 1.9.2 que fue la última vez que hicimos algo así, actualmente prefiero usar otros procedimientos de calificación, vamos, que ya no me parece tan importante que los cuestionarios descuenten. Con lo que se comenta en ambos hilos no te será difícil hacer las modificaciones:

http://moodle.org/mod/forum/discuss.php?d=127450#p558566


Salu2

W

P.D. Mientras respondía se me ha adelantado Juan Raul, que como siempre nos da una solución de lo más completa y eficaz sonrisa. Muchas gracias.