Subversion Repositories wimsdev

Rev

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>&lt;img src="a_random_unrelated_file_name" alt="picture" /&gt;</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>