Attention : vous consultez actuellement la documentation dédiée aux versions 1.x de Moodle. La documentation pour les versions 2.x de Moodle est consultable ici : question/type/regexp, celle pour les versions 3.x de Moodle est consultable ici : question/type/regexp et celle pour Moodle 4.x est consultable là : question/type/regexp.

question/type/regexp

De MoodleDocs
Aller à :navigation, rechercher

Questions à réponse courte avec expressions régulières

Tout comme la question à réponse courte, la question à réponse courte de type "expression régulière" attend de la part de l'élève une réponse à une question "ouverte", consistant en un ou plusieurs mots ou une courte phrase. Cependant, l'utilisation des expressions régulières vous donne accès à un puissant système d'analyse de la réponse des élèves.

Réponse correcte correspondant à une expression régulière

Il est impossible de fournir des exemples complets des vastes possibilités offertes par ce système, mais voici quelques possibilités.

Exemple 1. Supposons que votre question soit "Donnez les couleurs du drapeau français".

Dans le champ Solution 1 vous pourriez saisir la "meilleure réponse" attendue, par exemple "il est bleu, blanc, rouge". Pour plus de détails voir Première réponse correcte plus loin.

Dans le champ Solution 2 vous pourriez saisir cette expression régulière : "(il est |)bleu, blanc(,| et) rouge/i" (il ne faut pas taper les guillements, bien sûr ). Cette expression acceptera n'importe laquelle des réponses suivantes:

  • il est bleu, blanc, rouge
  • il est bleu, blanc et rouge
  • Il est bleu, blanc, rouge
  • Il est bleu, blanc et rouge
  • bleu, blanc, rouge
  • bleu, blanc et rouge

Notez que par défaut une expression régulière est sensible à la casse (minuscules/majuscules). Pour rendre l'expression insensible à la casse, vous ajouterez le paramètre /i tout à la fin de l'expression.

Example 2. (en anglais) Question : "What is blue, or red, or yellow?". Réponse : "(|it's )a colou?r". Cette expression acceptera n'importe laquelle des réponses suivantes :

  • a colour
  • a color
  • it's a colour
  • it's a color

Note.- Le début de cette expression régulière "(|it's )" acceptera comme réponse soit rien soit "it's " (attention : it's suivi d'une espace). Le point d'interrogation signifie : le caractère qui précède, employé zéro ou une fois ; nous l'utilisons ici pour accepter aussi bien l'orthographe anglaise (colour) qu'américaine (color).

Exemple 3. (en anglais encore) Question: "Donnez en anglais le nom d'un animal qui fait 3 lettres et dont la lettreu du milieu ets la voyelle a". Réponse : "[bcr]at". Ce qui acceptera les 3 réponses : bat, cat et rat.

Détection des mots ou chaînes de caractères manquants

Les expressions régulières seules ne permettent pas de détecter des mots ou groupes de lettres absents de la réponse d'un élève, il faudra donc ajouter un petit code pour y arriver. Toute réponse prévue par le professeur qui commencera par un double tiret analysera la réponse de l'élève pour voir si la chaîne de caractères qui suit est présente ou absente. Si cette chaîne est présente, l'analyse continuera jusqu'à la réponse prévue suivante ; si la chaîne est absente, l'analyse s'arrêtera et le mesage de feedback prévu s'affichera.

Exemple 4. Question sur les couleurs du drapeau français.

  • Réponse 2: --.*bleu.*/i
  • réponse de l'élève : "il est blanc et rouge "
  • Feedback 2: Il manque la couleur du ciel !

Ici, le point signifie "n'importe quel caractère, et l'astérisque signifie "le caractère qui précède, répété un nombre quelconque de fois". La réponse prévue n° 2 ci-dessus signifie : vérifier si la chaîne de caractères "bleu", précédée de n'importe quoi et suivie de n'importe quoi est absente de la réponse de l'élève. Notez que l'usage de l'astérisque est légèrement différent dans les questions de type Réponse Courte et dans les questions de type Réponse Courte avec expressions régulières.

Exemple 5. Question: "Donnez en anglais le nom d'un animal qui fait 3 lettres et dont la lettreu du milieu ets la voyelle a". Réponse prévue : "--[b|c|r]". Feedback: "Votre réponse devrait commencer par l'une de ces 3 lettres : b, c ou r".

Échapper les caractères spéciaux

Si vous avez besoin dans vos réponses prévues de caractères qui font partie de la liste des caractères spéciaux utilisés dans la syntaxe des expressions régulières, vous devrez les "échapper", c-a-d les faire précéder d'une barre oblique inverse. Par exemple si vous voulez accepter la réponse "Cet ordinateur vaut 1 000$", vous écrirez ainsi l'expression régulière: "Cet ordinateur vaut 1 000\$". Voici la liste complète des caractères spéciaux qui doivent être échappés : ^ $ * ( ) [ ] + ? | { }

Edition des Réponses en mode professeur

Affichage du bouton Indice

Il est possible d'afficher un bouton Indice pour permettre à l'étudiant d'acheter une lettre. Le bouton Indice ne sera disponible pour l'étudiant que si dans le Test le paramètre Mode adaptatif a été réglé sur Oui. Si le paramètre Appliquer les pénalités a été activé dans les réglages du test, une pénalité correspondant au Facteur de pénalité sera appliquée à chaque "achat" de lettre par l'étudiant. Lorsque l'étudiant fait le test et qu'un bouton Indice est présent, en passant la souris sur ce bouton il verra s'afficher la pénalité que lui coûtera l'achat d'une lettre.

Chaque fois que l'étudiant clique sur le bouton Indice pour acheter une lettre, un caractère paragraphe invisible ( ¶ ) est ajouté au texte de sa réponse. Plus tard, lorsque le professeur visualise les résultats du test pour chaque étudiant, il peut voir ce caractère paragraphe à la fin de chaque réponse pour laquelle l'étudiant a demandé de l'aide.

Première réponse correcte

Pour un certain nombre de raisons, la façon d'entrer les solutions dans Solution 1 a changé depuis la version de février 2007. Pour la Solution 1 vous devez maintenant entrer un texte qui a) est la "meilleure" réponse attendue possible; b) n'est pas une expression régulière ou - plus exactement - ne sera pas interprété comme telle mais comme du texte normal et c) à laquelle vous affectez une Note de 100%. Vous remarquerez que lors de la création d'une nouvelle question de type regexp, la Note attribuée à la Solution 1 est automatiquement mise sur 100%. Vous ne devez pas modifier ceci. Si par hasard vous le faisiez, un message d'erreur vous le signalerait lors de l'enregistrement de votre question, et vous donnerait la possibilité de faire marche arrière pour corriger l'erreur. Message: "La Solution 1 doit être correcte et avoir un score de 100%. Voulez-vous retourner modifier ceci ?"

Note.- Il y a deux manières d'entrer une solution contenant des méta caractères (^ $ * ( ) [ ] + ? | { }), selon qu'il s'agit de la Solution 1 ou de l'une des solutions suivantes. Exemple: combien coûte cet ordinateur américain?

Solution 1: Il vaut 1 000$.

Solution 2: Il (m')?a couté 1 000\$\.

Dans Solution 1 vous tapez la réponse attendue telle quelle. Dans la Solution 2 en revanche vous devez "échapper" les méta-caractères $ et point final.

Autres Solutions (Solution 2, 3, etc.)

Toute solution avec une Note supérieure à 0% doit être entrée sous forme d'une expression régulière qui peut générer des réponses alternatives acceptables (que la note soit de 100% ou inférieure). Ceci veut dire que vous ne pouvez pas entrer une solution ayant une Note supérieure à 0% et commençant par un double tiret --, syntaxe utilisée pour détecter l'absence de mots, comme expliqué plus haut.

Prévisualisation des questions dans une fenêtre popup (pour le professeur seulement)

Lorsque le professeur prévisualise une question dans la fenêtre popup il peut désormais également voir la liste complète des solutions alternatives acceptables. Ces solutions alternatives sont automatiquement générées à partir des expressions régulières que vous avez entrées en créant la question et auxquelles vous avez attribué une note supérieure à 0%. La toute première solution (Solution 1) est affichée en tête de liste. Elle est suivie des autres solutions acceptables, sous la forme suivante: a) la note attribuée; b) un rappel de votre expression régulière et c) la liste des solutions générées par cette expression régulière.

Actuellement le seul mécanisme de vérification de la validité des expressions régulières entrées par le professeur consiste à vérifier que les parenthèses ouvertes sont bien toutes refermées (ainsi que les crochets carrés, si vous les utilisez). Si le nombre de parenthèses (ou de crochets carrés) ouvertes ne correspond pas au nombre de parenthèses fermées, un message d'erreur vous en avertira, qui précisera l'expression régulière où l'erreur a été détectée ainsi que la nature de l'erreur (mais pas l'emplacement exact). Vous devrez immédiatement corriger l'expression régulière fautive dans la question en cours de prévisualisation.

Toute autre erreur dans une expression régulière déclenchera l'un ou l'autre des comportements suivants lors de l'ouverture de la fenêtre popup de prévisualisation : a) une erreur de PHP du genre [Fatal error: Maximum execution time of 30 seconds exceeded etc. ] ou bien b) pas de message d'erreur mais, en cliquant sur le bouton Afficher les réponses alternatives, vous pourrez constater que certaines des solutions générées par l'expression régulière fautive sont en fait inacceptables. Il vous faudra alors immédiatement revenir en mode édition pour essayer de repérer l'expression régulière fautive et la corriger.

Insertion de sous-questions de type regexp dans une question de type Close

Note importante

La question de type RegExp n'est pas reconnue par la question de type Close de Moodle. Si vous souhaitez inclure des questions de type RegExp dans une question de type Close, vous devrez remplacer le fichier question/type/multianswer/questiontype.php de la distribution standard de Moodle par une version modifiée. Voir les détails sur le site Modules and Plugins de Moodle.

Voici 2 exemples de syntaxe à utiliser pour ce type d'insertion:

  • Les couleurs du drapeau français sont : {:REGEXP:=bleu, blanc, rouge#Correct!~=le bleu, le blanc(,| et) le rouge #Correct!~--.*bleu.*#Il manque la couleur du ciel.}
  • Les couleurs du drapeau français sont : {:REGEXP:%100%bleu, blanc, rouge#Correct!~%100%le bleu, le blanc(,| et) le rouge #Correct!~%0%--.*bleu.*#Il manque la couleur du ciel.}

Veuiller noter que, comme expliqué ci-dessus, la toute première solution doit avoir une note de 100% et ne doit pas être une expression régulière. Dans la syntaxe du type de question Cloze, une note de 100% s'écrit soit = soit %100%. Comme indiqué plus haut, si vous oubliez par hasard d'attribuer la note de 100% à la toute première solution de votre liste, au moment d'enregistrer votre question Cloze un message d'erreur vous en avertira. Toutefois, si vous voyez le message "La Solution 1 doit être correcte et avoir un score de 100%. Voulez-vous retourner modifier ceci ?" vous ne devez pas cliquer sur le bouton Oui, mais sur le bouton Non, puis retourner dans votre question Cloze et faire la correction nécessaire.

Veuillez noter que la syntaxe des sous-questions insérées dans une question de type Cloze doit être suivie à la lettre et qu'il ne faut jamais copier-coller du texte depuis votre traitement de texte vers le texte d'une question de type Cloze sous peine d'en empêcher le bon fonctionnement.

Malheureusement le bouton Indice n'est pas disponible pour une sous-question de type regexp insérée dans une question de type Cloze.

Voir aussi