Rev 17348 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
196 | bpr | 1 | |
15208 | lemaire | 2 | <h2 class="wimscenter">Exercices avec plusieurs questions et autres possibilités avancées</h2> |
196 | bpr | 3 | |
15208 | lemaire | 4 | <h3>Exercices ayant plusieurs questions</h3> |
5 | La commande <span class="tt wims_code_variable">\steps</span> permet de définir des exercices ayant un nombre variable de champs de réponses présentés toutes en même temps ou en plusieurs fois (exercice à étapes). |
||
6 | Par exemple, si vous définissez (parmi d'autres paramètres) |
||
196 | bpr | 7 | |
8 | <pre>\steps{choice 1, reply 1 |
||
9 | choice 2, reply 2, reply 3 |
||
10 | choice 3 |
||
11 | }</pre> |
||
8367 | bpr | 12 | l'exercice sera présenté en trois étapes, la première proposant |
11241 | bpr | 13 | un choix multiple (choice 1) et une réponse de type <span class="tt wims_code_words">reply</span> (reply 1), |
5903 | bpr | 14 | la seconde proposant un choix multiple et deux réponses de type <span class="tt wims_code_words">reply</span>, etc. |
15208 | lemaire | 15 | <div> |
5903 | bpr | 16 | L'argument de <span class="tt wims_code_variable">\steps</span> accepte des paramètres définis auparavant aussi bien que des définitions |
196 | bpr | 17 | conditionnelles de la même manière que pour la définition de paramètres. Cela permet |
2663 | reyssat | 18 | de présenter des champs de réponses sélectivement selon des variations aléatoires de |
15209 | bpr | 19 | paramètres, même dans le cas où il n'y a qu'une seule étape. |
15208 | lemaire | 20 | |
21 | Par exemple, |
||
22 | <pre> |
||
15209 | bpr | 23 | \integer{n=randint(1..4)} |
15625 | bpr | 24 | \text{listerep=reply1,reply2,reply3,reply4} |
25 | \text{listerep=\listerep[1..\n]} |
||
15208 | lemaire | 26 | \steps{\listerep} |
27 | </pre> |
||
17348 | bpr | 28 | permettra de définir un énoncé comportant de 1 à 4 champs de réponses. <br> |
15209 | bpr | 29 | Le nombre d'instructions <span class="tt wims_code_variable">\answer</span> |
30 | que l'exercice comporte est fixe lui. Dans cet exemple, le fichier aura 4 commandes |
||
31 | <span class="tt wims_code_variable">\answer</span>. |
||
32 | Celles utilisées pour analyser l'exercice seront les <span class="tt wims_code_words">\n</span> |
||
33 | premières. |
||
15208 | lemaire | 34 | </div><div> |
35 | Il faut noter que par défaut si une erreur est faite à une étape, les étapes suivantes ne sont pas |
||
15209 | bpr | 36 | proposées et sont donc considérées comme fausses |
37 | (l'option <span class="tt wims_code_words">nonstop</span> peut être ajoutée dans |
||
38 | les commandes <span class="tt wims_code_variable">\answer</span> pour que l'exercice |
||
39 | continue même en cas d'erreur). |
||
15208 | lemaire | 40 | </div><div> |
5903 | bpr | 41 | Le numéro de l'étape en cours est accessible dans le champ <span class="tt wims_code_words">statement</span> |
196 | bpr | 42 | dans la variable |
8367 | bpr | 43 | <span class="tt wims_code_variable">\step</span> qui prend donc successivement les valeurs |
15208 | lemaire | 44 | 1,2,... à mesure que l'utilisateur avance dans ses réponses. |
45 | </div><div> |
||
8367 | bpr | 46 | Pour faire des exercices dynamiques à plusieurs étapes |
196 | bpr | 47 | (étapes variant selon les réponses de l'étudiant), vous pouvez utiliser |
8367 | bpr | 48 | la commande <span class="tt wims_code_variable">\nextstep{...}</span>. L'argument de |
15209 | bpr | 49 | <span class="tt wims_code_variable">\nextstep</span> est semblable à celui |
50 | de <span class="tt wims_code_variable">\steps</span> mais seule la première |
||
196 | bpr | 51 | ligne est effective. Elle n'est utile que si cet argument est une variable qui change |
8367 | bpr | 52 | après avec les définitions de paramètres après soumission. |
11241 | bpr | 53 | L'exercice s'arrête quand le contenu de <span class="tt wims_code_variable">\nextstep</span> est vide. |
15208 | lemaire | 54 | </div><div> |
15625 | bpr | 55 | Dans tous les cas, une seule déclaration parmi <span class="tt wims_code_variable">\steps</span> |
56 | ou <span class="tt wims_code_variable">\nextstep</span> doit apparaître dans un source OEF. |
||
15208 | lemaire | 57 | </div> |
58 | <div> |
||
15209 | bpr | 59 | La commande <span class="tt wims_code_variable">\conditions</span> peut être utilisée |
15625 | bpr | 60 | en même temps que <span class="tt wims_code_variable">\steps</span> ou |
61 | <span class="tt wims_code_variable">\nextstep</span> pour définir la liste des numéros |
||
62 | des commandes <span class="tt wims_code_variable">\condition</span> qui seront utilisées |
||
63 | pour l'analyse des réponses. |
||
15209 | bpr | 64 | </div> |
14040 | bpr | 65 | |
196 | bpr | 66 | <h3>Branchements conditionnels et boucles</h3> |
67 | |||
68 | Commandes disponibles: |
||
69 | |||
70 | <pre> |
||
71 | \if{condition}{contenu conditionnel} |
||
72 | \if{condition}{contenu_conditionnel}{autre_contenu_conditionnel} |
||
8367 | bpr | 73 | \ifval{condition}{contenu conditionnel} |
74 | \ifval{condition}{contenu_conditionnel}{autre_contenu_conditionnel} |
||
196 | bpr | 75 | \for{var=n1 to n2}{contenu_de_la_boucle} |
8367 | bpr | 76 | \while{condition}{contenu_de_la_boucle} (uniquement dans l'environnement principal) |
196 | bpr | 77 | </pre> |
8367 | bpr | 78 | Les commandes de branchements conditionnels et de boucles peuvent être utilisées |
5903 | bpr | 79 | dans l'environnement principal ou (sauf pour <span class="tt wims_code_words">while</span>) |
15209 | bpr | 80 | à l'intérieur de l'énoncé (<span class="tt wims_code_words">statement</span>), |
81 | d'une aide (<span class="tt wims_code_words">hint</span>), |
||
82 | d'une solution (<span class="tt wims_code_words">solution</span>), |
||
83 | d'un feedback (<span class="tt wims_code_words">feedback</span>). |
||
3337 | bpr | 84 | Lorsque ces commandes sont dans l'environnement principal, elles n'affectent |
196 | bpr | 85 | que la définition de paramètres. |
13759 | bpr | 86 | <p> |
87 | Attention, dans les commandes <span class="tt wims_code_words">statement</span>, |
||
88 | <span class="tt wims_code_words">feedback</span> ..., la variable utilisée |
||
89 | pour faire une boucle (ici <span class="tt wims_code_words">var</span>) ne doit pas |
||
90 | avoir été déjà définie avant la commande |
||
91 | <span class="tt wims_code_words">statement</span>. |
||
92 | </p> |
||
15208 | lemaire | 93 | <h3>Cacher le nom d'images</h3> |
94 | Si l'exercice demande de reconnaître une image prise au hasard, le nom de l'image peut donner |
||
95 | une indication à l'exercice. Pour cacher ce nom d'image, vous pouvez écrire dans les parties |
||
96 | <span class="tt wims_code_variable">statement</span>, |
||
97 | <span class="tt wims_code_variable">feedback</span>, etc |
||
196 | bpr | 98 | |
15208 | lemaire | 99 | <pre>\img{\imagedir/picture.jpg alt="picture"}</pre> |
100 | |||
101 | Ainsi dans le source de la page html, l'étudiant pourra voir |
||
102 | |||
17347 | bpr | 103 | <pre><img src="a_random_unrelated_file_name" alt="picture"></pre> |
15208 | lemaire | 104 | |
105 | Le vrai nom de l'image est ainsi caché. |
||
106 | |||
107 | <p><b>Remarque</b>. N'utilisez pas directement la commande WIMS <em>rename</em> pour |
||
108 | traiter le nom de fichier, sinon l'exercice ne fonctionnera pas correctement dans |
||
109 | l'environnement sauvegardé. D'autre part, le nom sera changé uniquement dans le |
||
110 | cas où l'exercice est sauvé dans un module et non dans une classe. |
||
111 | </p> |
||
112 | |||
2663 | reyssat | 113 | <h3>Fichiers source prétraités</h3> |
196 | bpr | 114 | |
8367 | bpr | 115 | Cette fonctionnalité n'est pas disponible pour Createxo. Vous pouvez |
2663 | reyssat | 116 | l'utiliser si vous écrivez des exercices OEF (et Deductio) sous Modtool. |
196 | bpr | 117 | <p> |
2663 | reyssat | 118 | Elle vous permet d'inclure des parties de codes communes dans plusieurs fichiers OEF. |
119 | Vous pouvez également l'utiliser pour fabriquer par lots plusieurs oef à partir d'un |
||
120 | pré-source, chacun différant des autres par quelques définitions de macros. |
||
7423 | bpr | 121 | </p><p> |
2663 | reyssat | 122 | Pour utiliser cette possibilité, un sous-répertoire cpp/ doit être créée sous src. Y mettre |
123 | les fichiers de pré-source d'extension .cpp. Dans ces fichiers, vous pouvez ajouter |
||
7423 | bpr | 124 | des directives cpp comme <span class="tt wims_code_words">#include</span>, |
8367 | bpr | 125 | <span class="tt wims_code_words">#define</span> ou |
126 | <span class="tt wims_code_words">#if</span>. (Veuillez vous référer aux |
||
2663 | reyssat | 127 | manuels cpp et aux spécifications c pour les détails de la syntaxe.) |
7423 | bpr | 128 | </p><p> |
2663 | reyssat | 129 | La première ligne du fichier cpp doit définir une liste de cibles (targets), dans le format |
11272 | bpr | 130 | </p><pre> |
196 | bpr | 131 | target=targ1 targ2 targ3 ... |
132 | </pre> |
||
2663 | reyssat | 133 | Cette ligne indique que ce fichier cpp doit fabriquer targ1.oef, targ2.oef, etc |
8367 | bpr | 134 | (l'extension .oef sera donc ajoutée aux noms de sortie). Lors de la génération du fichier |
7423 | bpr | 135 | cible <em>targ1.oef</em>, une macro <em>TARGET_targ1</em> est définie. |
2663 | reyssat | 136 | Par conséquent, dans le source cpp, vous pouvez ajouter des lignes comme |
196 | bpr | 137 | <pre> |
8367 | bpr | 138 | #if defined TARGET_targ1 |
196 | bpr | 139 | \title{Exercise 1} |
140 | \integer{v1=3} |
||
141 | \text{t1=this is target 1} |
||
142 | #endif |
||
8367 | bpr | 143 | #if defined TARGET_targ2 |
196 | bpr | 144 | \title{Exercise 2} |
145 | \integer{v1=5} |
||
146 | \text{t1=this is target 2} |
||
147 | #endif |
||
148 | </pre> |
||
2663 | reyssat | 149 | afin de rendre le contenu dépendant de la cible. |
196 | bpr | 150 | <p> |
8559 | bpr | 151 | Le nom du fichier (dans l'exemple |
152 | <span class="tt wims_code_words">targ1</span>, ...) est accessible par la variable |
||
153 | <span class="tt wims_code_words">OEFFILE</span>. |
||
11272 | bpr | 154 | </p><p> |
11063 | bpr | 155 | Dans l'exemple suivant, le titre de l'exercice sera |
8559 | bpr | 156 | <span class="tt wims_code_words">targ1</span> |
157 | </p> |
||
158 | <pre> |
||
159 | #if defined TARGET_targ1 |
||
160 | \title{OEFFILE} |
||
161 | \integer{v1=3} |
||
162 | \text{t1=dit is target 1} |
||
163 | #endif |
||
164 | </pre> |
||
165 | <p> |
||
15625 | bpr | 166 | Les fichiers <span class="tt wims_code_words">include</span> doivent également être |
167 | placés dans le répertoire src/cpp, avec extension |
||
4892 | bpr | 168 | .inc. Une ligne |
11272 | bpr | 169 | </p><pre> |
196 | bpr | 170 | #include "common.inc" |
171 | </pre> |
||
2663 | reyssat | 172 | va insérer le contenu de common.inc dans le fichier généré OEF. |
8367 | bpr | 173 | Veuillez noter que pour des raisons de sécurité, il est interdit de |
2663 | reyssat | 174 | spécifier des répertoires de fichiers include. |
196 | bpr | 175 | <p> |
2663 | reyssat | 176 | Une remarque spéciale: cpp s'embrouille lorsque votre fichier contient dans le texte |
6978 | bpr | 177 | des apostrophes ou guillemets qui ne sont pas fermés. Dans ce cas, vous pouvez protéger |
15209 | bpr | 178 | les commandes contenant ces textes par des commentaires C |
179 | (<span class="tt wims_code_words">/* ... */</span>). |
||
7423 | bpr | 180 | </p> |
196 | bpr | 181 | |
4892 | bpr | 182 | <div class="wims_warning"> |
8367 | bpr | 183 | <span class="wims_warning">$wims_name_warning</span> : Dans les commandes commençant par # comme dans |
184 | <span class="tt">#include</span>, le caractère <span class="tt">#</span> doit être le |
||
7423 | bpr | 185 | premier caractère de la ligne. Il ne faut pas non plus utiliser |
8367 | bpr | 186 | <span class="tt">#</span> comme caractère de commentaires. |
4892 | bpr | 187 | </div> |
188 | |||
196 | bpr | 189 | <h3>Environnement dans un exercice</h3> |
15190 | bpr | 190 | <h4>Variable de débogage</h4> |
191 | La variable spéciale <span class="tt wims_code_variable">\oefenv</span> |
||
192 | est utilisée pour tester un exercice |
||
196 | bpr | 193 | (si elle n'est pas redéfinie dans l'exercice). |
194 | <p> |
||
195 | Pour l'instant, le seul contenu possible de cette variable est le mot |
||
15190 | bpr | 196 | <span class="tt wims_code_variable">debug</span>. |
197 | Ce mot apparaît à l'intérieur de <span class="tt wims_code_variable">\oefenv</span> |
||
7423 | bpr | 198 | dans les situations suivantes. |
199 | </p> |
||
196 | bpr | 200 | <ol> |
787 | bpr | 201 | <li>quand l'exercice est exécuté à l'intérieur de Createxo ;</li> |
15190 | bpr | 202 | <li>quand il est testé dans Modtool par le développeur lui-même ;</li> |
787 | bpr | 203 | <li>quand l'exercice est dans une classe et exécuté par l'administrateur de la classe. |
196 | bpr | 204 | </li> |
205 | </ol> |
||
787 | bpr | 206 | Dans ces cas, la bonne réponse apparaît par défaut dans les champs de réponse |
8367 | bpr | 207 | si vous le demandez, vous permettant de voir ce que l'exercice attend comme |
196 | bpr | 208 | réponse sans avoir besoin de remplir vous-même les champs. |
209 | <p> |
||
210 | Vous pouvez ajouter des informations de débogage à l'intérieur de votre exercice |
||
8367 | bpr | 211 | en utilisant des conditions comme |
7423 | bpr | 212 | </p> |
196 | bpr | 213 | <pre> |
214 | \if{debug iswordof \oefenv}{informations de débogage à ajouter ici} |
||
215 | </pre> |
||
787 | bpr | 216 | Ces informations sont alors automatiquement montrées quand l'exercice |
217 | est sous test et automatiquement cachées quand les étudiants y travaillent. |
||
15190 | bpr | 218 | |
219 | <h4>Autres variables</h4> |
||
220 | Deux autres variables d'environnement sont prédéfinies : |
||
221 | <span class="tt wims_code_variable">lang</span> |
||
222 | et <span class="tt wims_code_variable">presentgood</span>. |
||
15209 | bpr | 223 | On peut récupérer leur valeur à l'aide de la slib <span class="tt wims_code"> oef/env</span>. |
15208 | lemaire | 224 | <p> |
15190 | bpr | 225 | La variable <span class="tt wims_code_variable">lang</span> peut être utilisée |
226 | pour l'internationalisation des modules. |
||
15209 | bpr | 227 | </p><div> |
17514 | bpr | 228 | La variable <span class="tt wims_code_variable">presentgood</span> permet de tenir compte, |
15209 | bpr | 229 | dans la présentation des textes d'un exercice, de la valeur que l'utilisateur choisira |
230 | pour le paramétrage "Afficher la bonne réponse" proposé dans l'introduction d'un module oef. |
||
231 | Cette variable vaut 0 lorsque la bonne réponse ne doit pas être affichée et 1 sinon. |
||
15190 | bpr | 232 | |
233 | Pour l'utiliser, écrire avant le <span class="tt wims_code_variable">\statement</span> |
||
234 | <pre> |
||
235 | \text{presentgood=} |
||
236 | </pre> |
||
237 | et après le <span class="tt wims_code_variable">\statement</span> |
||
238 | <pre> |
||
239 | \text{presentgood=slib(oef/env presentgood)} |
||
240 | </pre> |
||
241 | Il est alors possible de tester la valeur de cette variable |
||
242 | et d'afficher des textes différents selon sa valeur. |
||
243 | Attention, sa valeur est vide lors de l'affichage du premier "écran" de l'exercice, |
||
244 | puisqu'elle n'est utile que pour l'affichage de textes analysant la réponse |
||
245 | de l'élève. |
||
15209 | bpr | 246 | </div> |