Subversion Repositories wimsdev

Rev

Rev 17347 | Details | Compare with Previous | Last modification | View Log | RSS feed

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