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