Programmation d exercices WIMS au format OEF I. Pour commencer 1) où créer ses exercices? Pour commencer, le plus simple est d utiliser les «Exercices de la classe». C est ce qu on va faire aujourd hui. Dès qu on voit qu on a un peu trop d exercices dans les «Exercices de la classe», il est fortement conseillé de demander un compte «Modtool» au gestionnaire du serveur qu on utilise. Avantages de Modtool : zone de stockage organisée en plusieurs modules (chaque module pouvant contenir un document ou des exercices OEF, ou d autres choses plus compliquées...) zone de stockage stable dans le temps ; elle ne disparait pas en fin d année. Les feuilles de travail ayant des liens vers des exercices dans Modtool sont réutilisables... à condition de ne pas avoir supprimé les exercices zone de stockage accessible depuis toutes les classes virtuelles du même serveur pour mettre les exercices dans les feuilles de travail exemple d adresse d un module d exercices dans Modtool : cgi?module=devel/causse/test~analysis~oefintegrale.fr http://wims.auto.u-psud.fr/wims/wims. exemple d adresse d un exercice de ce module : http://wims.auto.u-psud.fr/wims/wims.cgi?module=devel/ causse/test~analysis~oefintegrale.fr&cmd=new&exo=moyenne les modifications faites dans le script sont enregistrées avant de tester (avantage et inconvénient parfois) c est à partir de Modtool qu on peut publier les modules 2) Comment commencer? Dans la page d accueil de la classe où on veut créer l exercice, on trouve un lien pour ajouter un exercice. Ce lien envoie vers l utilitaire Createxo. On y trouve différents outils et modes de création d exercices. Le lien «Aide» est accessible à tout moment. ATTENTION : la fenêtre d aide s ouvre par défaut dans la fenêtre active. Il est fortement recommandé d ouvrir l aide dans un nouvel onglet (Ctrl dans Firefox), car les modifications non envoyées au serveur seraient perdues... Colloque WIMS 2012 Rennes 7-8 juin 2012
3) Interface Createxo Le mode brut est celui qui permet le mieux de comprendre la structure et le fonctionnement des exercices OEF. Pour faire rapidement un exercice simple, on peut aussi utiliser les modèles préparés, mais qui sont ensuite difficiles à modifier, s ils ne conviennent pas directement. 2 Colloque WIMS 2012 Rennes 7-8 juin 2012
II.Etapes de fabrication d un exercice avec Createxo en mode brut 1) En-tête et exercice minimum Fenêtre de saisie du code de l exercice «Envoyer le source» envoie le code sur le serveur WIMS, où certaines vérifications sont faites, mais ne l enregistre pas... on pourrait dire qu il passe de la mémoire vive du poste à la mémoire vive du serveur, où il restera jusqu à une nouvelle commande «Envoyer le source» ou jusqu à la fin de la session («Logout» ou fermeture du navigateur) «Vider» vide la fenêtre (= code en mémoire vive du poste) «Abandonner» remplace le contenu de la fenêtre par le dernier code envoyé par «Envoyer le source» L exercice minimum a comme code : \title{xxxxx} \statement{} IMPORTANT : le titre donné ici servira à nommer le fichier (visible par exemple dans le code source des feuilles de travail et les tableaux d importation de ressources entre classes voisines) Il est recommandé d éviter les caractères accentués ou spéciaux au départ. On pourra changer ensuite le titre qui apparaîtra aux élèves ; le nom du fichier ne sera pas modifié. Il est recommandé de mettre systématiquement un en-tête un peu plus complet : \title{xxxxx} \language{fr} \author{chantal Causse} \email{chantal.causse@ac-lyon.fr} \format{html} \range{-5..5} \computeanswer{no} \precision{10000} Lignes utiles en cas de publication ou d échanges entre collègues Paramètres utilisés pour l analyse de certaines réponses : ces valeurs conviennent le plus souvent \statement{} Un exercice contient obligatoirement une et une seule commande \statement{}. 2) Introduire des paramètres aléatoires But de l exercice : Utilisation des formules donnant le périmètre et l aire d un rectangle en fonction de sa longueur et sa largeur. Chaque paramètre est donné selon la syntaxe : \type{nom =...}. La valeur de ce paramètre sera ensuite rappelée par \nom Les différents types de paramètres disponibles sont : integer, real, rational, complex, function, text, matrix. Pour avoir un entier aléatoire entre 2 et 50, on écrira : \integer{a=randint(2..50)} Pour avoir un nombre aléatoire entre 2 et 50 avec une décimale, on écrira : \real{b=randint(20..500)/10} On pourra ensuite définir les paramètres P et A représentant le périmètre et l aire d un rectangle de côtés de longueurs a et b : \real{p = 2*(\a + \b)} \real{a = \a*\b} Le nom des paramètres est sensible à la casse et peut contenir plusieurs caractères (ordinaires, lettres et chiffres). Ne pas confondre a et \a. Quand un exercice ne fonctionne pas comme on le voudrait, commencer par vérifier si on n a pas oublié de \... Colloque WIMS 2012 Rennes 7-8 juin 2012
3) Structure d un exercice OEF En-tête \title{rectangles} \language{fr} \author{chantal Causse} \email{chantal.causse@ac-lyon.fr} \format{html} \range{-5..5} \computeanswer{no} \precision{10000} «Rectangles 01» et Electricite01» Définition et calcul de tous les paramètres utiles Enoncé : ce qui apparait quand l exercice est executé. \integer{a=randint(2..50)} \real{b=randint(20..500)/10} \real{p = 2*(\a + \b)} \real{a = \a*\b} \statement{un rectangle a comme dimensions \a cm et \b cm.<p> Calculer son périmètre et son aire.} Tout ce qui permettra de déterminer si la réponse donnée par l élève est juste ou fausse \answer{périmètre en cm}{\p}{type=numeric} \answer{aire en cm²}{\a}{type=numeric} Noter la balise html <p> pour changer de paragraphe (<br> pour passer à la ligne) \(...) pour indiquer l affichage d une formule mathématique ; \times est le code TeX du symbole 4) Les différents écrans de Createxo Cliquer sur «Envoyer le source». Il y a une vérification sur les parenthèses et accolades et sur la présence d un \statement{}: C est ce lien qui permet d enregistrer l exercice sur le serveur, dans les «Exercices de la classe». Quand l exercice a été enregistré au moins une fois, cette ligne devient : ce lien sert à sauvegarder l exercice sous forme de fichier texte, mais pas sur le serveur WIMS les deux options sont les équivalents de «Enregistrer» et «Enregistrer sous», mais les fichiers sont nommés automatiquement. Colloque WIMS 2012 Rennes 7-8 juin 2012
Test d un exercice qui n est pas dans les «Exercices de la classe» Un des «Exercices de la classe» on peut l insérer dans une feuille de travail on peut l effacer de cette liste Ne pas oublier! Colloque WIMS 2012 Rennes 7-8 juin 2012
5) Importance du type de réponse Si on teste l exercice précédent en donnant une réponse juste, tout fonctionne bien. Par contre, l analyse de certaines réponses fausses ne convient pas dans cet exercice : Ceci vient d un mauvais choix du type de réponse. Remarque : toujours tester aussi bien des réponses justes sous différentes formes que des réponses fausses. On trouve les différents types de réponses disponibles en cliquant sur Aide (quand on est dans un écran Createxo) puis Types de réponses. Ici, le type numexp peut convenir. Si on veut admettre des réponses du type 5*8 pour l aire, on prendrait le type formal. Pour cet exercice, il est plus intéressant d utiliser le type units pour demander l unité dans la réponse. \integer{a=randint(2..50)} \real{b=randint(20..500)/10} \real{p = 2*(\a + \b)} \text{pu = \P cm} \real{a = \a*\b} \text{au = \A cm^2} \statement{un rectangle a comme dimensions \a cm et \b cm.<p> Calculer son périmètre et son aire.<p> Vous pouvez utiliser l unité de votre choix pour donner le résultat, mais n oubliez pas l unité!} \answer{périmètre}{\pu}{type=units} \answer{aire}{\au}{type=units} Avec le type units, une réponse sans unité ne sera pas acceptée. Si la bonne réponse est 3 m², on pourra tout aussi bien donner 30 000 cm², ou 3 ca ou même 3 N/Pa! Pour plus d options (en particulier fixer le nombre de chiffres significatifs), utiliser le type sigunits. On peut profiter de la liberté de réponse du type units pour donner plus de variété aux énoncés. \real{a=randint(20..500)/10} \real{am = \a/100} \real{amm = 10*\a} \text{au = random(\a cm, \am m,\amm mm)} «Rectangles 02» et Electricite02» «Rectangles 03» \real{b=randint(20..500)/10} \real{bm = \b/100} \real{bmm = 10*\b} \text{bu = random(\b cm, \bm m,\bmm mm)} \real{p = 2*(\a + \b)} \text{pu = \P cm} \real{a = \a*\b} \text{au = \A cm^2} \statement{un rectangle a comme dimensions \au et \bu.<br> Calculer son périmètre et son aire. </p> Vous pouvez utiliser l unité de votre choix pour donner le résultat, mais n oubliez pas l unité!} \answer{périmètre}{\pu}{type=units} \answer{aire}{\au}{type=units} Colloque WIMS 2012 Rennes 7-8 juin 2012
Si on veut que les deux dimensions du rectangle soient données avec la même unité (aléatoire, mais plus souvent en cm), on utilisera la variante suivante: \integer{choix = random(1,1,2,3,4)} \real{a=randint(20..500)/10} \text{au = item(\choix,\a cm, \a m,\a mm,\a km)} \real{b=randint(20..500)/10} \text{bu = item(\choix,\b cm, \b m,\b mm,\b km)} \real{p = 2*(\a + \b)} \text{pu = item(\choix,\p cm, \P m,\p mm,\p km)} \real{a = \a*\b} \text{au = item(\choix,\a cm^2, \A m^2,\a mm^2,\a km^2)} La commande item(n, liste_séparée_par_des_virgules) donne le n ième élément de la liste qui suit. III. Enrichir les énoncés 1) Changer la présentation de l énoncé (couleurs, etc.) Pour mettre l énoncé sur un fond jaune, avec la consigne concernant les unités en caractères plus grands, en rouge, et une partie en gras. \statement{<p style="background-color : yellow" >Un rectangle a comme dimensions \au et \bu.<br> Calculer son périmètre et son aire. </p> <font color = red size = +1>Vous pouvez utiliser l unité de votre choix pour donner le résultat, mais<b> n oubliez pas l unité!</b></font>} \answer{périmètre}{\pu}{type=units} \answer{aire}{\au}{type=units} Les codes de couleurs peuvent être écrits soit en clair : red, green, lightblue... soit en code RVB : rgb(150,210,150), soit en code hexadécimal #dda4b2. Variante pour mettre l énoncé sur fond de couleur sur une partie moins large de l écran : <table width="90%" align="center"> <tr bgcolor=... ><td> ********** </td></tr></table> «Rectangles 04» «Rectangles 05» 2) Insérer les champs de réponse dans l énoncé \statement{un rectangle a comme dimensions \au et \bu.<p> Son périmètre mesure : \embed{reply1}<br> Son aire mesure : \embed{reply2} </p>} \answer{}{\pu}{type=units} \answer{}{\au}{type=units} Voir dans l aide les compléments sur la taille des champs, etc. «Rectangles 06» 3) Ajouter des indications et une solution détaillée Plusieurs types d indications sont possibles, qui se présentent différemment : \special{tooltip...} (apparaît au survol d un mot par la souris), \hint{...} (lien Indication ; apparaît sous l énoncé dans la même fenêtre) \help{...} (lien Aide ; apparaît à la place de l énoncé dans la même fenêtre). \statement{un rectangle a comme dimensions \au et \bu.<p> Son \special{tooltip périmètre,,le périmètre d un polygone est la somme des longueurs de ses côtés}mesure : \embed{reply1}<p> Son aire mesure : \embed{reply2} </p> \answer{}{\pu}{type=units} \answer{}{\au}{type=units} \hint{l aire d un rectangle est égale au produit de sa longueur par sa largeur.} \help{penser à convertir longueur et largeur dans la même unité avant de calculer périmètre et aire.} \solution{on commence par convertir les dimensions du rectangle dans la même unité, par exemple en cm : \a cm et \b cm. <br>périmètre = \(2 \times (\a + \b) = \P cm) <p> Aire = \(\a \times \b = \A cm^2) } «Rectangles 07» 7 Colloque WIMS 2012 Rennes 7-8 juin 2012
4) Ajouter un commentaire dépendant de la réponse donnée par l élève Les réponses données par l élève sont stockées dans des variables \reply1 etc. (ou \choice1 etc.) On peut, en plus de la soution, ajouter un feedback dépendant de l erreur commise. La syntaxe est \feedback{condition d affichage}{message} Avec une condition 1=1, on aura l affichage du feedback dans tous les cas. Par exemple : \feedback{\reply1 = \A and \reply2 = \P}{Vous avez interverti le périmètre et l aire} mais cela ne fonctionne pas avec le type units, car \reply1 est codée de manière complexe. 5) Faire varier le type de question Avec les mêmes paramètres, on peut faire varier les données et les questions. On peut avoir quatre types d énoncés possibles. Pour simplifier la formulation de l énoncé et des questions, on distinguera longueur et largeur. Les paramètres \donnees et \questions sont des listes dont les éléments sont séparés par des virgules. (si on a besoin d une virgule dans le texte, on utilisera le code html de la virgule, ) On appelle l élément \i de la liste \liste par \liste[\i] ou bien par item(\i,\liste). \integer{choix = random(1,2,3)} \real{a=randint(2..50)} \real{am = \a/100} \real{amm = 10*\a} \text{au = item(\choix,\a cm, \am m,\amm mm)} \real{b=\a+ randint(1..30)} \real{bm = \b/100} \real{bmm = 10*\b} \text{bu = item(\choix,\b cm, \bm m,\bmm mm)} «Rectangles 08» et «Electricite08» Ajout d une réponse littérale dans l exercice d électricité \real{p = 2*(\a + \b)} \text{pu = \P cm} \real{a = \a*\b} \text{au = \A cm^2} \text{donnees= Un rectangle a comme largeur \(\au) et comme longueur \(\bu), La largeur d un rectangle est \(\au). Le périmètre de ce rectangle est \(\Pu), La largeur d un rectangle est \(\au). L aire de ce rectangle est \(\Au), Un rectangle de périmètre \(\Pu) a comme aire \(\Au) } \text{question1 = Son périmètre est :, Sa longueur est :, Sa longueur est :,Sa largeur est : } \text{question2 = Son aire est :, Son aire est :, Son périmètre est :,Sa longueur est :} \text{reponse1 = \Pu,\bu,\bu,\au} \text{reponse2 = \Au,\Au,\Pu,\bu} \integer{i = randint(1..4)} \statement{<p>\donnees[\i].<br> \question1[\i] \embed{reply1} <br> \question2[\i] \embed{reply2} <p> <font color = red>vous pouvez utiliser l unité de votre choix pour donner le résultat, mais<b> n oubliez pas l unité!</b></font>} \answer{}{\reponse1[\i]}{type=units} \answer{}{\reponse2[\i]}{type=units} 6) Illustrer par un dessin La commande d insertion d un dessin dans l énoncé est :\draw{largeur en pixels,hauteur en pixels}{commandes de dessin}. Les commandes de dessin s écrivent en plusieurs lignes (une commande par ligne) ; il est souvent pratique d en faire une variable \dessin. 8 Colloque WIMS 2012 Rennes 7-8 juin 2012
Commencer par \xrange xmin,xmax et \yrange ymin,ymax permet d avoir des coordonnées simples à utiliser pour les commandes suivantes. On trouve les principales commandes de dessin dans l aide de Createxo (inclure des dessins dynamiques dans les exercices). Ici, on veut dessiner le rectangle avec les données de l énoncé, et des? pour les grandeurs à calculer. Les premières lignes correspondent à la définition des grandeurs (ou?) qui apparaîtront sur le dessin. \integer{i = randint(1..4)} \text{da = item(\i,\au,\au,?)} \text{db = item(\i,\bu,?,?)} \text{dp = item(\i,?,\pu, \Pu)} \text{da = item(\i,?,?, \Au)} \text{dessin = xrange 1,300 yrange 1,200 linewidth 3 rect 50,50,250,150,red linewidth 1 line 40,50,40,150,blue line 50,40,250,40,green text red,120,170,medium,p = \DP textup blue,20,50,medium,largeur = \Da text green,100,30,medium,longueur = \Db text black,110,100,medium,aire = \DA} «Rectangles 09» et «Rectangles 10» \statement{\draw{300,200}{\dessin} \donnees[\i].<p> \question1[\i] \embed{reply1} <br> \question2[\i] \embed{reply2}} 7) Utilisation de slibs Il existe de très nombreuses macros (ou slib) permettant d automatiser certaines opérations. Elles sont regroupés dans une «bibliothèque de macros». Pour l exercice d électricité, j ai utilisé celle qui trace un circuit électrique, pour l exercice sur les tangentes celle qui calcule les bornes d une fonction sur un intervalle. But de l exercice : faire évaluer à partir d un graphique le coefficient directeur de la tangente à une courbe, puis donner la fonction pour faire le calcul de manière exacte. Dans la première étape, on donne une courbe, sa tangente en un point A, plusieurs sécantes en A et on demande de déterminer graphiquement le coefficient directeur de la tangente en A. \rational{a=random(-1,1)*randint(1..3)/randint(1..4)} \rational{b=randint(-4..4)/randint(1..2)} \rational{c= randint(-3..3)} \function{f=random(\a*x^2+\b*x+\c,\a*x^3+\b*x^2+\c*x)} les deux lignes suivantes pour éviter d avoir les éventuels coefficients 0 et les fractions sous la forme a/b \function{f = pari(\f)} \text{tf = texmath(\f)} choix de l abscisse de A, calcul de la valeur de f puis de f \rational{x0 = randint(-3..3)/2} \real{y0 = evalue(\f,x=\x0)} \function{fp = diff(\f,x)} \real{p0 = evalue(\fp,x=\x0)} On va utiliser un slib qui donne les bornes d une fonction sur un intervalle (voir l aide pour les paramètres nécessaires des fonctions slib); on met \xmin et \xmax en variables pour pouvoir éventuellement les changer. \real{xmin = -2.5} \real{xmax = 2.5} \text{a=slib(function/bounds \f, x,\xmin,\xmax)} importance ici du \integer car les bornes ne sont a priori pas entières \integer{ymin = \A[1]-1} «Tangentes 01» et «Electricité 09» Colloque WIMS 2012 Rennes 7-8 juin 2012
\integer{ymax = \A[2]+1} commandes de dessin \text{dessin = xrange \xmin,\xmax yrange \ymin,\ymax la grille et le repère (on commence à \xmin +.5 car \xmin = - 2.5 ; floor(\xmin +1) aurait été mieux...) parallel \xmin+.5,\ymin,\xmin+.5,\ymax,1,0,\xmax - \xmin +1,grey parallel \xmin,\ymin,\xmax,\ymin,0,1,\ymax -\ymin +1,grey linewidth 2 hline 0,0,black vline 0,0,black arrow 0,0,1,0,6,black arrow 0,0,0,1,6,black la courbe de f plot blue, \f le point A fcircle \x0,\y0,7, green text black,\x0,\y0,medium,a la tangente et autres droites linewidth 1 plot green, \y0+(x-\x0)*\p0 plot green, \y0+(x-\x0)*(\p0+2) plot green, \y0+(x-\x0)*(\p0+4) plot green, \y0+(x-\x0)*(\p0-2) Dans un premier temps je ne m occupe pas des questions, mais seulement du dessin \statement{la fonction \(f) est définie par \(f(x)= \Tf ). \draw{600,400}{\dessin}} Quelques essais montrent que ça fonctionne bien sauf quand \ymax - \ymin est trop grand. J ai donc rectifié les bornes dans ce cas en utilisant la commande \if{condition}{si oui}{si non}. \if{\ymax-\ymin > 15}{ \integer{ymin = \y0-8} \integer{ymax = \y0+8}} «Tangentes 02» La lecture pouvant tout de même être approximative, on utilisera le type range pour l analyse de la réponse. Dans un premier temps, je ne donne que la courbe et pas la formule de la fonction. Le «tableau» sert à faire afficher le texte à droite du dessin et pas en dessous. \statement{<table><tr><td> \draw{600,400}{\dessin}</td><td></td><td> Une courbe est tracée en bleu.<br> Plusieurs droites sont tracées en vert. <p> Parmi ces droites, il y a la tangente à la courbe au point \(A).<p> Déterminer graphiquement une valeur approchée du coefficient directeur de cette tangente.<p> Vous vous aiderez pour cela du quadrillage : les lignes grises sont distantes les unes des autres d une unité. On ne demande pas une grande précision de lecture.</td></tr></table>} j accepte toute valeur qui diffère de moins de 1 du coefficient directeur exact. Il faudrait sans doute affiner cette tolérance... \answer{coefficient directeur de la tangente}{\p0-1,\p0+1}{type =range} «Tangentes 03» 8) Ajouter des étapes On va ajouter à l exercice précédent une deuxième étape demandant de calculer la dérivée, et le coefficient directeur exact de cette tangente. J ajoute pour cela la commande \steps{ } qui indique qu on aura une première étape avec une réponse libre, puis une seconde étape avec deux réponses libres. 10 Colloque WIMS 2012 Rennes 7-8 juin 2012
\steps{reply1 reply2,reply3} La variable \step indique ensuite à quelle étape de l exercice on est. Partie de l énoncé répétée aux deux étapes \statement{<table><tr><td> \draw{600,400}{\dessin}</td><td></td><td> Une courbe est tracée en bleu.<br> Plusieurs droites sont tracées en vert. <p> Parmi ces droites, il y a la tangente à la courbe au point \(A).<p> Partie spécifique à l étape 1 \if{\step = 1}{Déterminer graphiquement une valeur approchée du coefficient directeur de cette tangente.<p> Vous vous aiderez pour cela du quadrillage : les lignes grises sont distantes les unes des autres d une unité. On ne demande pas une grande précision de lecture.} Partie spécifique à l étape 2 : on rappelle à l élève ce qu il a donné comme réponse à la première étape \if{\step = 2}{<font color = green><b>vous avez trouvé comme valeur approchée du coefficient directeur de cette tangente : \reply1.</b><br> Vous allez maintenant en déterminer la valeur exacte.</font>}</td></tr></table> \if{\step = 2}{La courbe est la représentation graphique de la fonction \(f) définie par \(f(x) = \Tf)<br> Le point \(A) a comme abscisse \(\x0).<br> La dérivée de la fonction \(f) est définie par \(f (x) = )\embed{reply2}<p> Le coefficient directeur de la tangente à la courbe en \(A) est \embed{reply3} <b> Donner sa valeur exacte</b>}} Pour utiliser le type numexp, j ai modifié la définition de \p0 en \rational au lieu de \real \answer{coefficient directeur de la tangente}{\p0-1,\p0+1}{type =range } \answer{}{\fp}{type = formal} \answer{}{\p0}{type = numexp} 9) Ne pas bloquer à une étape ratée Dans cet exercice, on peut vouloir que l élève continue le calcul même s il a mal lu le coefficient directeur. Il faut pourtant lui dire que sa première réponse est fausse... On ajoute pour cela l option nonstop à la réponse 1 : «Tangentes 04» \answer{coefficient directeur de la tangente}{\p0-1,\p0+1}{type =range }{option = nonstop} et on utilise la variable \sc_reply1 qui vaut 1 si la réponse est juste, 0 si elle est fausse (ce serait 0.5 pour une réponse avec mauvaise précision dans un type numeric) \if{\step = 2 and \sc_reply1 = 1}{<font color = green><b> Vous avez trouvé comme valeur approchée du coefficient directeur de cette tangente : \reply1.<p><font size = +1> C est une valeur approchée correcte.</b> Vous allez maintenant en déterminer par le calcul la valeur exacte.</font>} \if{\step = 2 and \sc_reply1 = 0}{<font color = red><b> Vous avez trouvé comme valeur approchée du coefficient directeur de cette tangente : \reply1.<p><font size = +2> Cette valeur est FAUSSE.</b> Vous allez maintenant en déterminer par le calcul la valeur exacte.</font>} </td></tr></table> «Tangentes 05» 11 Colloque WIMS 2012 Rennes 7-8 juin 2012
IV. Les questions de type QCM ou à réponses prédéfinies Les exemples de cette partie sont tous les exercices dont le titre est QCMxxx. Ils n ont pas de contenu à proprement parler. Les réponses justes et fausses, qui dans un vrai exercice auraient été définies à partir de paramètres aléatoires, sont simplement ici les mots juste, faux, etc. Chaque énoncé comprend en premier lieu, sur fond blanc, le code de l exercice (+ commentaires éventuels), puis ce que donne en pratique ce code. La partie \statement{...} est parfois écrite dans le code, mais souvent sous-entendue. Cette série d exercices permet d observer les différents types de fonctionnement et d avoir la syntaxe correspondante sur le même écran. Pour faire des exercices de type QCM, on peut utiliser la commande \choice (spécifique aux QCM, plus simple d utilisation, mais moins souple) ou la commande \answer comme pour les autres exercices (qui offre beaucoup plus de possibilités). 1) Commande \choice L énoncé le plus simple possible avec la commande \choice : \statement{choisir la réponse juste :} \choice{question 1}{juste}{faux1,faux2,faux3} donne un résultat qui dépend de la configuration choisie (intro/config) : «QCMchoice1» par défaut, les réponses proposées sont en ordre alphabétique si la case «toujours afficher une bonne réponse» est décochée, il y a le choix «aucune réponse ci-dessus» Il peut y avoir plusieurs réponses justes ; une seule est à cocher : \statement{choisir la réponse juste :} \choice{question 1}{juste1,juste2}{faux1,faux2,faux3} Si la même réponse figure dans les deux listes, elle est considérée comme juste (il n est donc pas utile de les supprimer de la seconde liste). \statement{choisir la réponse juste :} \choice{question 1}{juste}{juste,faux1,faux2,faux3} Deux options sont disponibles : noidontknow et shuffle: \statement{choisir la réponse juste :} \choice{question 1}{juste1,juste2}{faux1,faux2,faux3}{option = noidontknow} \statement{choisir la réponse juste :} \choice{question 1}{juste1,juste2}{faux1,faux2,faux3}{option = shuffle} «QCMchoice2» «QCMchoice3» \statement{choisir la réponse juste :} \choice{question 1}{juste1,juste2}{faux1,faux2,faux3}{option = shuffle noidontknow} 12 Colloque WIMS 2012 Rennes 7-8 juin 2012
L énoncé se présente sous forme de menu déroulant dès que plusieurs questions sont posées dans l exercice ou que la zone de réponse est incluse dans l énoncé avec la commande \embed{choice}. \statement{choisir la réponse juste :} \choice{question 1}{juste}{faux1,faux2,faux3}{option = noidontknow} \choice{question 2}{juste}{faux1,faux2,faux3}{option = noidontknow} \statement{choisir la réponse juste :\embed{choice1}} \choice{question}{juste}{faux1,faux2,faux3} Pour avoir plus de souplesse, en particulier en ce qui concerne la présentation des questions, on choisira une commande \answer avec les types détaillés plus loin. Comment rendre le choix des questions aléatoire? Voici un exemple pour obtenir une question aléatoire parmi 3 questions, le nombre de réponses justes et fausses changeant selon les questions. \matrix{questions = question1 question2 question3} \matrix{justes = juste1,juste1 juste2 juste3,juste3,juste 3} \matrix{faux = faux1,faux1,très faux1 faux2, Faux2 faux3, Faux3} \integer{i = randint(1..3)} \statement{\questions[\i;] :\embed{choice1}} \choice{}{\justes[\i;]}{\faux[\i;]}{option = shuffle noidontknow} 2) Généralités sur les réponses de type QCM utilisant la commande \answer Il y a trois types de présentation des questions (menu, case à cocher et mots à cliquer) et deux options pour que la réponse soit considérée comme juste (soit on demande une seule réponse et elle doit faire partie de la liste des réponses justes, soit on peut donner plusieurs réponses et il faut donner exactement la liste de toutes les réponses justes). On obtient donc ainsi 6 types de QCM résumés dans le tableau ci-dessous. Ils ont en commun la syntaxe de définition des réponses justes et fausses : \answer{}{liste des numéros des bons choix;liste de tous les choix}{type =...} Dans la plupart des exemples, j ai utilisé : \answer{}{1,3;juste1,faux1,juste2,faux2,faux3} \answer{}{}{type =...} menu case à cocher mot à cliquer une seule réponse à donner (s il y a plusieurs réponses justes, il faut donner l une d elles) plusieurs réponses «QCMchoice5» menu radio click menu avec option multiple checkbox mark D autres types s apparentent aux QCM, ce sont les types : correspond, clickfill et dragfill, compose et reorder. 3) Commande \answer avec type click «QCMclick» Son usage est assez limité, car la réponse est envoyée dès qu on clique sur le mot voulu. Il ne peut donc y avoir qu une seule question par étape de l exercice. \statement{cliquer sur une réponse juste<p> \embed{reply1}} \answer{question 1}{1,3;juste1,faux1,très faux,juste2,faux2}{type = click} 13 Colloque WIMS 2012 Rennes 7-8 juin 2012
4) Commande \answer avec type mark «QCMmark1» 5) Commande \answer avec type menu «QCMmenu1» et «QCMmenu2» avec option = multiple utiliser la touche Ctrl pour sélectionner plusieurs réponses 6) Commande \answer avec type radio «QCMradio» 7) Commande \answer avec type checkbox «QCMcheckbox1» 8) Quelques possibilités complémentaires concernant ces types de QCM «QCMmark2» et «QCMcheckbox2» Les options shuffle (ordre aléatoire) et sort (ordre alphabétique) sont illustrées ci-dessus. Pour tous les types de réponses où on doit donner plusieurs réponses, option = split permet d attribuer des points aux réponses partielles, avec deux bons choix compensant un mauvais choix. Si on ajoute aussi option = eqweight, un bon choix compense un mauvais choix. Pour jouer sur la place des différentes propositions de réponses (par exemple à l intérieur d une phrase, d un tableau...), on utilise \embed{reply1,n} qui insère la proposition n de la liste des réponses. Dans une phrase \embed{reply1,1} ou \ embed{reply1,2} et puis \embed{reply1,5} ou encore \embed{reply1,3}, etc...\ embed{reply1,4} La plupart de ces possibilités sont valables pour les 6 types de QCM ci-dessus. 9) Commande \answer avec type correspond \statement{associer les deux listes : \embed{reply1}} \answer{}{a,b,c,d,e;a,b,c,d,e}{type=correspond} on peut utiliser option = split pour les réponses partiellement justes «QCMcorrespond1» 14 Colloque WIMS 2012 Rennes 7-8 juin 2012
Pour ajouter de l aléatoire... \matrix{data= a,a b,b c,c d,d e,e f,f g,g h,h} \text{mix = shuffle(rows(\data))} \matrix{data = \data[\mix[1..4];]} \statement{associer les deux listes : \embed{reply1}} \answer{}{\data[;1];\data[;2]}{type=correspond} «QCMcorrespond2» 10) Commande \answer avec types clickfill et dragfill Avec le type dragfill, chaque étiquette ne peut être utilisée qu une seule fois, alors qu avec le type clickfill, on peut l utiliser plusieurs fois. \statement{ecrire le mot angle : \embed{reply1},<p>et le mot cercle : \embed{reply2} } \answer{}{a,n,g,l,e;a,b,c,d,e}{type=clickfill}{option=sort} \answer{}{c,e,r,c,l,e}{type=clickfill} «QCMclickfill» \statement{ecrire le mot angle : \embed{reply1},<p>et le mot cercle : \embed{reply2} } \answer{}{a,n,g,l,e;a,b,c,d,e}{type=dragfill}{option=shuffle} \answer{}{c,e,r,c,l,e}{type=dragfill} «QCMdragfill» On ne peut pas mélanger clickfill et dragfill dans un même exercice. Les options sort et shuffle sont disponibles. 11) Commande \answer avec type compose A la différence des types précédents, l élève ne voit pas combien d éléments doivent figurer dans la réponse, et les éléments des réponses aux deux questions sont séparés. Les éléments sont donnés en ordre alphabétique. \statement{ecrire le mot angle : \embed{reply1}<p> Ecrire le mot cercle : \embed{reply2} } \answer{}{a,n,g,l,e;a,b,c,d,e}{type=compose} \answer{}{c,e,r,c,l,e;p,y,z}{type=compose} «QCMcompose» 12) Commande \answer avec type reorder Il ne peut pas y avoir deux fois le même élément dans la réponse. Tous les éléments de la réponse sont donnés en ordre aléatoire. \statement{ecrire le mot angle : \embed{reply1} } \answer{}{a,n,g,l,e}{type=reorder} «QCMreorder» 15 Colloque WIMS 2012 Rennes 7-8 juin 2012
Documents et liens utiles A la fois complet et simple : le document PDF «Introduction à la programmation d exercices interactifs» de Sophie Lemaire et Bernadette Perrin-Riou, téléchargeable dans la classe d exemple «Développement de ressources», ainsi que les différents exercices présentés dans le document (ce qui permet de les voir fonctionner). Sur la page d accueil du serveur WIMS d Orsay, le lien «Documents d aide» donne accès à plusieurs documents WIMS. Parmi ceux-ci : un document sur les exercices OEF, et un autre sur l utilisation de Modtool pour des modules d exercices OEF. 16 Colloque WIMS 2012 Rennes 7-8 juin 2012