Subversion Repositories wimsdev

Rev

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>&lt;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>