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><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> |