Subversion Repositories wimsdev

Rev

Rev 14972 | Rev 15209 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14972 Rev 15107
Line 1... Line -...
1
<h2>Advanced features of OEF</h2>
-
 
2
 
1
 
-
 
2
<h2 class="wimscenter">Possibilités avancées de OEF</h2>
-
 
3
 
3
<h3>Hiding image names</h3>
4
<h3>Cacher le nom d'images</h3>
4
If your exercise requires recognition of a randomly picked picture, the file
5
Si l'exercice demande de reconnaître une image prise au hasard, le nom de l'image peut donner
5
name of the picture might give clue to the exercise. In order to hide this
6
une indication à l'exercice. Pour cacher ce nom d'image, vous pouvez écrire dans les parties
6
file name, you can write in parts
-
 
7
<span class="tt wims_code_variable">statement</span>,
7
<span class="tt wims_code_variable">statement</span>,
8
<span class="tt wims_code_variable">feedback</span>, etc
8
<span class="tt wims_code_variable">feedback</span>, etc
9
 
9
 
10
<pre>\img{\imagedir/picture.jpg alt="picture"}</pre>
10
<pre>\img{\imagedir/picture.jpg alt="picture"}</pre>
11
 
11
 
12
Then on the browser, the student will see
12
Ainsi dans le source de la page html, l'étudiant pourra voir
13
 
13
 
14
<pre>&lt;img src="a_random_unrelated_file_name" alt="picture" /&gt;</pre>
14
<pre>&lt;img src="a_random_unrelated_file_name" alt="picture" /&gt;</pre>
15
 
15
 
16
The true file name is thus hidden to the student.
16
Le vrai nom de l'image est ainsi caché.
17
 
17
 
18
<p><b>Note</b>. Do not use directly the WIMS command <span class="tt wims_code_words">rename</span> to
18
<p><b>Remarque</b>. N'utilisez pas directement la commande WIMS <em>rename</em> pour
19
process the file name, or the exercise would not work correctly under saved
19
traiter le nom de fichier, sinon l'exercice ne fonctionnera pas correctement dans
20
environment.
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.
21
</p>
22
</p>
22
<h3>Multi-step exercises</h3>
23
<h3>Exercices à plusieurs étapes</h3>
23
Multi-step exercises can be defined via the command <span class="tt wims_code_variable">\steps</span>. For
24
Des exercices à plusieurs étapes peuvent être conçus grâce à la commande
24
example, if you define (among parameters)
25
 <span class="tt wims_code_variable">\steps</span>. Par exemple, si vous définissez (parmi d'autres paramètres)
25
 
26
 
26
<pre>\steps{choice 1, reply 1
27
<pre>\steps{choice 1, reply 1
27
choice 2, reply 2, reply 3
28
choice 2, reply 2, reply 3
28
choice 3
29
choice 3
29
}</pre>
30
}</pre>
30
<p>
-
 
31
the exercise will be presented with 3 steps, the first asks for a multiple
31
l'exercice sera présenté en trois étapes, la première proposant
32
choice (choice 1) and a freestyle reply (reply 1), the second a multiple
32
un choix multiple (choice 1) et une réponse de type <span class="tt wims_code_words">reply</span> (reply 1),
33
choice and two freestyle replies, etc.
33
la seconde proposant un choix multiple et deux réponses de type <span class="tt wims_code_words">reply</span>, etc.
34
</p><p>
34
<p>
35
The content of <span class="tt wims_code_variable">\steps</span> accepts (earlier-defined) parameters as well as
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
conditional definitions, in the same way as the definition of parameters.
36
conditionnelles de la même manière que pour la définition de paramètres. Cela permet
37
This allows you to selectively present response
-
 
38
fields (according to random variations of parameters), even in the case
37
de présenter des champs de réponses sélectivement selon des variations aléatoires de
39
where there is only one step.
38
paramètres, même dans le cas où il n'y a qu'une seule étape.
40
</p><p>
39
</p><p>
41
It is to be noted that if a user makes a mistake in
40
Il faut noter que si une erreur est faite à une étape, les étapes suivantes ne sont pas
42
an early step, subsequent steps will not be presented (and will be
41
proposées et sont donc considérées comme fausses.
43
considered all wrong).
-
 
44
</p><p>
42
</p><p>
45
The current step number is available to the statement of the exercise,
43
Le numéro de l'étape en cours est accessible dans le champ <span class="tt wims_code_words">statement</span>
46
via the variable
44
dans la variable
47
<span class="tt wims_code_variable">\step</span> which takes successively the values of 1,2,... when the user
45
<span class="tt wims_code_variable">\step</span> qui prend donc successivement les valeurs
48
advances in his/her answering.
46
 1,2,... à mesure que l'utilisateur avances dans ses réponses.
49
</p><p>
47
</p><p>
-
 
48
Pour faire des exercices dynamiques à plusieurs étapes
50
To make dynamic multi-step exercises (steps varying with student answers), you
49
(étapes variant selon les réponses de l'étudiant), vous pouvez utiliser
51
can use the command <span class="tt wims_code_words">\nextstep{...}</span>. The content of
50
la commande <span class="tt wims_code_variable">\nextstep{...}</span>. L'argument de
52
<span class="tt wims_code_variable">\nextstep</span> is the similar to <span class="tt wims_code_variable">\steps</span> but only the first line
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
53
is effective. It is useful only when the content is given by a variable
52
ligne est effective. Elle n'est utile que si cet argument est une variable qui change
54
which is changed by post-reply parameter definitions. The exercise stops when
53
après avec les définitions de paramètres après soumission.
55
the content of <span class="tt wims_code_variable">\nextstep</span> is empty at some step.
54
L'exercice s'arrête quand le contenu de <span class="tt wims_code_variable">\nextstep</span> est vide.
56
</p><p>
55
</p><p>
57
In any case, at most one declaration <span class="tt wims_code_variable">\steps</span> or <span class="tt wims_code_variable">\nextstep</span>
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>
58
should appear in an OEF source.
57
doit apparaître dans un source OEF.
-
 
58
</p>
-
 
59
 
-
 
60
<h3>Branchements conditionnels et boucles</h3>
-
 
61
 
-
 
62
Commandes disponibles:
-
 
63
 
-
 
64
<pre>
-
 
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)
-
 
71
</pre>
-
 
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>.
59
</p>
84
</p>
60
<h3>Conditional branching and loops</h3>
-
 
61
 
85
 
62
Available commands:
-
 
63
 
-
 
64
<pre>
-
 
65
\if{condition}{if_content}
-
 
66
\if{condition}{if_content}{otherwise_content}
-
 
67
\ifval{condition}{if_content}
-
 
68
\ifval{condition}{if_content}{otherwise_content}
-
 
69
\for{var=n1 to n2}{loop_content}
-
 
70
\while{condition}{loop_content}     (main environment only)
-
 
71
</pre>
-
 
72
 
-
 
73
These commands can be used either within statement, hint, solution or
-
 
74
feedback, or in the main environment. In the latter case, the conditional
-
 
75
execution only affects parameter definitions.
-
 
76
 
-
 
77
<h3>Preprocessed sources</h3>
86
<h3>Fichiers source prétraités</h3>
78
 
87
 
79
This feature is not available for Createxo. You can use it if you write OEF
88
Cette fonctionnalité n'est pas disponible pour Createxo. Vous pouvez
80
(and Deductio) exercises under Modtool.
89
l'utiliser si vous écrivez des exercices OEF (et Deductio) sous Modtool.
81
<p>
90
<p>
82
It allows you to include common portions of codes into several oef files.
91
Elle vous permet d'inclure des parties de codes communes dans plusieurs fichiers OEF.
83
You can also use it to make batch generation of several oefs from one
92
Vous pouvez également l'utiliser pour fabriquer par lots plusieurs oef à partir d'un
84
pre-source, each differing from the others by some macro definitions.
93
pré-source, chacun différant des autres par quelques définitions de macros.
85
</p><p>
94
</p><p>
86
To use this feature, a subdirectory cpp/ should be created under src. Put
95
Pour utiliser cette possibilité, un sous-répertoire cpp/ doit être créée sous src. Y mettre
87
into it pre-source files with extension .cpp. In these files, you can add
96
les fichiers de pré-source d'extension .cpp. Dans ces fichiers, vous pouvez ajouter
88
cpp directives like <span class="tt wims_code_words">#include</span>, <span class="tt wims_code_words">#define</span>
97
des directives cpp comme <span class="tt wims_code_words">#include</span>,
89
or <span class="tt wims_code_words">#if</span>.
98
<span class="tt wims_code_words">#define</span> ou
90
(Please refer to cpp
99
<span class="tt wims_code_words">#if</span>. (Veuillez vous référer aux
91
manual and c specification for details of the syntax.)
100
manuels cpp et aux spécifications c pour les détails de la syntaxe.)
92
</p><p>
101
</p><p>
93
The first line of the cpp file must define a list of targets, in the format
102
La première ligne du fichier cpp doit définir une liste de cibles (targets), dans le format
94
</p>
-
 
95
<pre>
103
</p><pre>
96
target=targ1 targ2 targ3 ...
104
target=targ1 targ2 targ3 ...
97
</pre>
105
</pre>
98
This line means that this cpp file should generate targ1.oef, targ2.oef, etc.
106
Cette ligne indique que ce fichier cpp doit fabriquer targ1.oef, targ2.oef, etc
99
(the extension .oef will be
-
 
100
appended to the output names). When generating the target file <em>targ1</em>, a macro
107
(l'extension .oef sera donc ajoutée aux noms de sortie). Lors de la génération du fichier
101
<em>TARGET_targ1</em> is defined.
108
cible <em>targ1.oef</em>, une macro <em>TARGET_targ1</em> est définie.
102
Therefore in the cpp source file, you can add lines like
109
Par conséquent, dans le source cpp, vous pouvez ajouter des lignes comme
103
<pre>
110
<pre>
104
#if defined TARGET_targ1
111
#if defined TARGET_targ1
105
 \title{Exercise 1}
112
 \title{Exercise 1}
106
 \integer{v1=3}
113
 \integer{v1=3}
107
 \text{t1=this is target 1}
114
 \text{t1=this is target 1}
108
#endif
115
#endif
Line 110... Line 117...
110
 \title{Exercise 2}
117
 \title{Exercise 2}
111
 \integer{v1=5}
118
 \integer{v1=5}
112
 \text{t1=this is target 2}
119
 \text{t1=this is target 2}
113
#endif
120
#endif
114
</pre>
121
</pre>
115
in order to make the contents target-dependent.
122
afin de rendre le contenu dépendant de la cible.
116
<p>
123
<p>
117
The name of the file (in the example,
124
Le nom du fichier (dans l'exemple
118
<span class="tt wims_code_words">targ1</span>, ...)
125
<span class="tt wims_code_words">targ1</span>, ...) est accessible par la variable
119
is available by the variable
-
 
120
<span class="tt wims_code_words">OEFFILE</span>.
126
<span class="tt wims_code_words">OEFFILE</span>.
-
 
127
</p><p>
121
In the following example, the title of the exercise will be
128
Dans l'exemple suivant, le titre de l'exercice sera
122
<span class="tt wims_code_words">targ1</span>
129
<span class="tt wims_code_words">targ1</span>
123
</p>
130
</p>
124
<pre>
131
<pre>
125
#if defined TARGET_targ1
132
#if defined TARGET_targ1
126
 \title{OEFFILE}
133
 \title{OEFFILE}
127
 \integer{v1=3}
134
 \integer{v1=3}
128
 \text{t1=dit is target 1}
135
 \text{t1=dit is target 1}
129
#endif
136
#endif
130
</pre>
137
</pre>
131
 
-
 
132
<p>
138
<p>
133
Include files should also be put into the src/cpp directory, with extension
139
Les fichiers <span class="tt wims_code_words">include</span> doivent également être placés dans le répertoire src/cpp, avec extension
134
.inc. A line
140
.inc. Une ligne
135
</p>
-
 
136
<pre>
141
</p><pre>
137
#include "common.inc"
142
#include "common.inc"
138
</pre>
143
</pre>
139
will insert the content of common.inc into the generated oef file.
144
va insérer le contenu de common.inc dans le fichier généré OEF.
140
Please note that for security reasons, it is prohibited to specify
145
Veuillez noter que pour des raisons de sécurité, il est interdit de
141
directories of include files.
146
spécifier des répertoires de fichiers include.
142
<p>
147
<p>
143
A special remark: cpp gets confused when your file contains single or double
148
Une remarque spéciale: cpp s'embrouille lorsque votre fichier contient dans le texte
144
quotes in the text that are not closed. In this case, you can protect the
149
des apostrophes ou guillemets qui ne sont pas fermés. Dans ce cas, vous pouvez protéger
145
commands containing such texts by c comments (<span class="tt">/* ... */</span>).
150
les commandes contenant ces textes par des commentaires C (<span class="tt wims_code_words">/* ... */</span>).
146
</p>
151
</p>
-
 
152
 
147
<div class="wims_warning">
153
<div class="wims_warning">
148
<span class="wims_warning">$wims_name_warning</span> : In the commands beginning by # as in
154
<span class="wims_warning">$wims_name_warning</span> : Dans les commandes commençant par # comme dans
149
<span class="tt">#include</span>, the character <span class="tt">#</span> must be the
155
<span class="tt">#include</span>, le caractère <span class="tt">#</span> doit être le
150
first character of the line. You must not
156
premier caractère de la ligne. Il ne faut pas non plus utiliser
151
use <span class="tt">#</span> as a character comment.
157
<span class="tt">#</span> comme caractère de commentaires.
152
</div>
158
</div>
153
 
159
 
154
 
-
 
155
<h3>Exercise environment</h3>
160
<h3>Environnement dans un exercice</h3>
156
A special variable <span class="tt wims_code_variable">\oefenv</span> can be used to test the environment of
161
La variable spéciale <span class="tt wims_code_variable">\oefenv</span> est utilisée pour tester un exercice
157
an exercise (if it is not redefined within the exercise).
162
(si elle n'est pas redéfinie dans l'exercice).
158
<p>
163
<p>
159
For the time being, the only testable content of the variable is the word
164
Pour l'instant, le seul contenu possible de cette variable est le mot
160
``debug''. This word appears within <span class="tt wims_code_variable">\oefenv</span> in the following
165
``debug''. Ce mot apparaît à l'intérieur de <span class="tt wims_code_variable">\oefenv</span>
161
situations:
166
dans les situations suivantes.
-
 
167
</p>
162
</p><ol>
168
<ol>
163
<li>When it is executed within Createxo.</li>
169
<li>quand l'exercice est exécuté à l'intérieur de Createxo ;</li>
164
<li>When it is under test in Modtool, by the developer himself.</li>
170
<li>quand il est testé dans Modtool par le développeur lui-même</li>
165
<li>When it is a class exercise and is executed by the supervisor.</li>
171
<li>quand l'exercice est dans une classe et exécuté par l'administrateur de la classe.
-
 
172
</li>
166
</ol>
173
</ol>
167
<p>Note that in these cases, the good reply will appear as default in the input
174
Dans ces cas, la bonne réponse apparaît par défaut dans les champs de réponse
168
fields of many types, allowing you to see what the exercise expects without
175
si vous le demandez, vous permettant de voir ce que l'exercice attend comme
169
typing into the fields.
176
réponse sans avoir besoin de remplir vous-même les champs.
170
</p><p>
177
<p>
171
You may add debugging informations into your exercise using things like
178
Vous pouvez ajouter des informations de débogage à l'intérieur de votre exercice
-
 
179
en utilisant des conditions comme
172
</p>
180
</p>
173
<pre>
181
<pre>
174
\if{debug iswordof \oefenv}{debugging informations to add into}
182
\if{debug iswordof \oefenv}{informations de débogage à ajouter ici}
175
</pre>
183
</pre>
176
These debugging informations will be automatically shown when the exercise
184
Ces informations sont alors automatiquement montrées quand l'exercice
177
is under test, and automatically hidden when students work on it.
185
est sous test et automatiquement cachées quand les étudiants y travaillent.