OEF signifie Online Exercise Format
. C'est une interface simplifiant la
fabrication des énoncés. Elle aide les novices, mais ses possibilités et sa
souplesse en font aussi un outil de choix pour experts pressés.
De nombreux types d'exercices (gérant la présentation des questions et l'analyse
des réponses) sont proposés et faciles d'utilisation ().
Aide OEF. Si vous êtes en train de créer un exercice
OEF, vous trouverez aussi ce lien dans la barre de menu en haut (
Aide
). On peut aussi regarder
le document
DocAide Exercices OEF.
Createxo est une interface permettant de créer des exercices oef sur le serveur par une page web
Oui, en mode de programmation (développement)
ou lorsqu'on est enseignant dans une
classe, la plupart des réponses sont affichées. Elles ne le seront plus heureusement
lorsque c'est un élève d'une classe qui fait l'exercice. C'est ce que signifie
la phrase suivante :
Mode de développement : les bonnes réponses sont insérées
dans les champs de réponse par défaut.
Vous pouvez trouver des exercices commentés dans le document DocAide Exercices OEF et sur le site Poitou-Charentes.
On ne peut pas le faire dans une classe. Vous devez pour cela avoir un compte Modtool et créer un module d'exercices OEF (voir des explications dans le document Doc Modules d'exercices OEF
).
Dans une réponse à choix multiples, l'élève choisit parmi plusieurs réponses imposées (clic de souris). Dans une réponse libre, il tape lui-même sa réponse au clavier : cela peut être un nombre, un ensemble de nombres, un texte, une fonction, une matrice …
Vous n'avez pas le contrôle de la notation de l'exercice : le calcul des points est fait de manière opaque . Vous ne pouvez pas non plus gérer une progression dans la difficulté. Modtool est plus flexible mais demande beaucoup plus de travail.
Transmettez-les à votre gestionnaire de site, ou à Bernadette Perrin-Riou.
Si vous êtes utilisateur, vous pouvez régler la taille dans les préférences de WIMS par le navigateur.
Si vous programmez un exercice, vous pouvez utiliser les macros
LaTeX standard, comme \large
, \Large
, \huge
ou
\Huge
.
Oui, aussi bien dans la partie \statement
qu'en dehors, ainsi que dans les documents.
On peut utiliser
\if{test}{}{ } \while{test}{ } \for{i = 1 to 4}{ }
Ici test
est un test, par exemple \a issametext toto
,
à l'intérieur de {}
doivent être mises des commandes :
par exemple \text{a = 2}
.
C'est un bogue du compilateur. Pour l'éviter, mettez le code html
ou TeX: \text{ s = ]a, b[ }
ou \text{ s = \rbrack a, b \lbrack }
.
Il y a d'autres codes html qu'il est bon de connaître, par exemple
,
si on veut mettre une virgule dans un élément
d'une liste.
\text{ a = 1,2, 3 } \text{ b = item(1,\a) } \statement{ \b }
WIMS vérifie l'appariemment des crochets et des parenthèses, et qu'un crochet ouvrant doit précéder tout crochet fermant.
Il ne s'agit pas de remplacer l'aide et la documentation mais de parcourir rapidement les possibilités :
Variables prédéfinies
imagedir
: \imagedir
confparm1
: \confparm1
confparm2
: \confparm2
confparm3
: \confparm3
confparm4
: \confparm4
step
: \step
Commandes
answer
: \answer{mon_texte}{\reponse}{type= xxx}{option=xxx}
author
: \author{xxx}
choice
: \choice{xxx}{test}{}
complex
: \complex{xxx = yyy}
computeanswer
: \computeanswer{yes}
condition
: \condition{xxx}{test}
conditions
: \conditions{c1,c2}
email
: \email{xxx}
feedback
: \feedback{xxx}{test}
for
: \for{i=1 to 5}{ }
format
: \format{html}
function
: \function{f = x^2}
help
: \help{xxx}
hint
: \hint{xxx}
if
: \if{test}{}{}
int
: \int{a = yyy}
integer
: \integer{a = yyy}
language
: \language{fr}
matrix
: \matrix{a = yyy}
mdef
: \mdef{xxx}
next
: \next{xxx}
nextstep
: \nextstep{reply 2}
parameter
: \parameter{xxx}
plot
: \plot{xxx}
precision
: \precision{1000}
range
: \range{-5,5}
rational
: \rational{r = 3/2}
real
: \real{r = 3/2}
reply
: \reply{xxx}{}{}{}
voir \answer{}{}{}
solution
: \solution{xxx}
statement
: \statement{xxx}
steps
: \steps{xxx}
text
: \text{xxx}
title
: \title{xxx}
variable
: \variable{xxx}
while
: \while{test}{}
Autres :
column
: \text{ a = column(1,xxx)}
deriv
: \text{ a = deriv(xxx,x)}
derivative
: \text{ a = derivative(xxx,x)}
det
: \text{ a = det(xxx)}
determinant
: \text{ a = determinant(xxx)}
diff
: \text{ a = diff(xxx,x)}
draw
: \text{ a = draw(xxx)}
evaluate
: \text{ a = evaluate(x^2,x = 2)}
evalue
: \text{ a = evalue(x^2, x = 2)}
htmlmath
: \text{ a = htmlmath(xxx)}
int
: \text{ a = int(x^2,x= 0 .. 2)}
integral
: \text{ a = integral(xxx)}
integrate
: \text{ a = integrate(xxx,x=1 .. 2)}
item
: \text{ a = item(1,xxx)}
items
: \text{ a = items(xxx)}
mathexp_cut
: \text{ a = mathexp_cut(xxx)}
maxima
: \text{ a = maxima(xxx)}
pari
: \text{ a = pari(xxx)}
pickone
: \text{ a = pickone(xxx)}
position
: \text{ a = position(xxx)}
positionof
: \text{ a = positionof(xxx)}
randint
: \text{ a = randint(xxx)}
randitem
: \text{ a = randitem(xxx)}
random
: \text{ a = random(xxx)}
randomitem
: \text{ a = randomitem(xxx)}
randomrow
: \text{ a = randomrow(xxx)}
randrow
: \text{ a = randrow(xxx)}
row
: \text{ a = row(2,xxx)}
rows
: \text{ a = rows(xxx)}
shuffle
: \text{ a = shuffle(xxx)}
simplify
: \text{ a = simplify(xxx)}
slib
: \text{ a = slib(xxx)}
solve
: \text{ a = solve(xxx)}
texmath
: \text{ a = texmath(xxx)}
wims
: \text{ a = wims(xxx)}
yacas
: \text{ a = yacas(xxx)}
Pour les manipulations de texte avancées, vous pouvez utiliser les commandes wims (doc tech). Par exemple,
\text{a =wims(wordcnt toto tata titi)}
Pour tirer un mot au hasard,
\text{a=wims(randword toto tata titi)}
Remplacer les caractères par leur code html,
par exemple ]
pour un crochet et ,
pour une virgule.
L'évaluation remplace littéralement les variables par leurs
valeurs, sans parenthésage implicite. Dans cet exemple, WIMS calcule
x + y * x + y
.
Utiliser
\text{ a = (x + y) } \text{ b = \a * \a } \statement{\b}
ou mieux
\text{ a = x + y } \text{ b = (\a) * (\a) } \statement{\b}
s'il n'est pas garanti que
a
soit de type numérique.
Il semble que pour l'instant lorsque vous testez votre exercice avec Createxo, le score ne tient pas compte des poids. Par contre, il en tiendra compte lorsque l'exercice sera utilisé. Exemple de tests avec un niveau de sévérité 3 (menu intro):
\statement{} \answer{}{1}{type=numeric}{weight=8} \answer{}{1}{type=numeric}{weight=2}
sous Createxo :
- les réponses 1, 0 donnent une note de 7.2, - les réponses 0, 1 donne une note de 0.9
directement :
- les réponses 1, 0 donnent une note de 7.9, - les réponses 0, 1 donnent une note de 0.4
\statement{} \answer{}{1}{type=numeric}{weight=2} \answer{}{1}{type=numeric}{weight=8}
sous Createxo :
- les réponses 1, 0 donnent une note de 7.2, - les réponses 0, 1 donnent une note de 0.9
directement :
- les réponses 1, 0 donnent une note de 0.4, - les réponses 0, 1 donnent une note de 6.4
Pour avoir exactement les proportions 2 et 8 demandées, il faudra ensuite configurer le niveau de sévérité de l'exercice (menu d'introduction du module) à 1. Mais cela est indépendant du développement de l'exercice.
C'est un bogue. [ 1, 2 ]
fonctionne, mais il
faut écrire
[ \(x_2), \(x_3) ]
et non
\([ x_2, x_3 ])
L'expression \(…)
interprète <tt classe= c >…</tt> en
mode mathématique, comme une matrice ligne dans le deuxième cas.
WIMS affiche donc une matrice et non un intervalle : la
virgule est supprimée.
Pour une précision relative 1/M où M est
donnée dans le champ \precision{M}
, la
réponse numérique r est acceptée pour la solution demandée
s si et seulement si:
<center> (|s-r|)/Max(|s+r| ,1/M)) < 1/M </center>
en d'autres termes,
- si |s+r| < 1/M, il est vérifié que |s-r| < 1/M^2 ;
- si |s+r| > 1/M, il est vérifié que |s-r|/|s+r| < 1/M
Pour afficher la racine carrée de 2, vous avez deux possibilités :
\( sqrt(2) )
ou \( \sqrt{2} )
(attention aux parenthèses, accolades, backslash ou non). La première utilisation
\( 2 * sqrt(2) )
fera disparaître *
car c'est WIMS qui réinterprète la racine carrée.
La deuxième utilisation
\( 2 * \sqrt{2} )
ne fera pas disparaître *
car il n'y a pas d'interprétation par WIMS qui
l'envoie directement à latex. Il ne faut pas non plus écrire
\(\frac{sqrt(2)}{2} )
car WIMS voyant la commande latex
\frac
l'envoie directement à latex qui écrira donc
sqrt(2)
.
Par exemple, le code suivant prétend que la bonne réponse n'est pas 0, mais -7.4503762e-11 :
\function{f = x} \text{S = solve(\f=0, x = -3.5 .. 4.5)} \statement{\S} \answer{solution}{\S}{type = set}
Les racines sont approximatives, donc il faut remplacer le type set
(ensemble) de la réponse par aset
(ensemble de nombres approchés).
Il faut utiliser la fonction \embed
\statement { <br>Calculer 2 + 2 : \embed{reply 1} } \answer { 2 + 2 = }{ 4 }
Pour cela, vous devez passer par un compte Modtool.
Mettez le contenu de votre aide dans le fichier
help.html
au dessus de la ligne
!changeto
. Le texte sera commun à tous les exercices.
\title{Essai étapes} \language{fr} \range{-5..5} \author{MARKEY Benoît} \computeanswer{no} \format{html} \precision{100} \integer{a = randint(0..10)} \integer{b = randint(0..10)} \steps{reply1 reply2} \statement{
\if{\step=1}{ Calculer la somme : \a + \b } \if{\step=2}{ Calculer le produit : \(\a*\b)} }
\answer{\a + \b =}{\a+\b}{type=numeric}
\answer{\(\a * \b }{\a*\b}{type=numeric}
Si la réponse à la première question est analysée à
travers quelque chose comme \condition{}
, on peut
passer la première étape sans avoir juste à cette étape. C'est
délicat, donc à manier avec précaution.
On utilise nextstep
, par exemple
\text{ nstep = reply 1 } \nextstep{ \nstep } \statement{ \if {\step = 1} { Ecrire 1 ou 2 : \embed{ reply 1 } \exit{} } <br>Vous avez écrit à l'étape 1 : \test1 <br> \if {\step = 2 and \test1 = 1} { Ecrire le plus grand de 3 ou 4 : \embed{reply 2} } \if {\step = 2 and \test1 = 2} { Cliquer sur le plus petit de 8 ou 9 \embed{reply 3} \exit{} } <br> \if {\step = 3 and \test1 = 2}{ Donner le carré de 4 } } \answer{Etape 1} {\test1}{type = numeric} \answer{Etape 2-1}{\test2}{type = numeric} \answer{Etape 2-2}{1;8,9} {type = click} \answer{Etape 3} {16} {type = numeric}
<br>
\text{nstep = \step = 2 and \test1 = 1 ? reply 2} \text{nstep = \step = 2 and \test1 = 2 ? reply 3} \text{nstep = \step = 3 and \test1 = 2 ? reply 4}
<br>
\condition{}{(\test1=1 and (\test2=4)) or (\test1=2 and (\reply3=8))}
\title{Essai clickfill} \language{fr} \range{-5..5} \author{MARKEY Benoît} \format{html} \precision{100} \text{phrase1 = le,chat,mange,la,souris; le,nuage,cache,le,soleil; quelle,heure,est,il} \text{phrase = randomrow(\phrase1)} \integer{i = items(\phrase)} \statement{Ecrire la phrase ci-dessous dans le bon ordre
<center>\embed{reply 1,50x70x\i}</center>
} \reply{reponse}{\phrase}{type=clickfill}
On peut mais les colonnes de droite et de gauche n'ont pas le même comportement. Un exemple :
\text{a= 1,2,3} \text{b=1,1,1} \statement{} \answer{}{\a;\b}{type = correspond}
est mieux que
\text{a= 1,2,3} \text{b=1,1,1} \statement{} \answer{}{\b;\a}{type = correspond}
S'il peut y avoir des répétitions dans une des colonnes, il faut donc que ce soit celle de droite.
\title{Essai de création de courbe} \language{fr} \author{M. Markey} \computeanswer{no} \format{html} \precision{10000}
\text{f1 = x^2-4,sin(x),log(x),cos(x)} \text{f2 = shuffle(\f1)} \function{f = \f2[1]} \text{f3 = \f2[2..4]} \text{texte = } \for{i = -5 to 5}{
\text{texte = \texte text green,\i,0,small,\i text green,0,\i,small,\i}
}
\statement{Voici un tracé de courbe<p>
<center>
\draw{500,500}{xrange -5,5
yrange -5,5 parallel -5,-5,-5,5,1,0,11,blue parallel -5,-5,5,-5,0,1,11,blue text black,4.5,0,medium,x text black,0,5,medium,y \texte plot black,\f} </center> <p>Quelle la fonction tracée?}
\choice{la courbe est}{\f}{\f3}
animstep
permet d'avoir un paramètre
entier
dans l'animation d'un dessin. Un exemple :
\text{n = animstep^2} \statement{ \draw{200,200}{ animate 20,0.2,1 xrange -2,20 yrange -2,20 hline 0,animstep, blue vline \n, 0, red } }
PARI/GP par exemple. Il est pratique et de syntaxe légère pour tous les calculs de matrices : le produit de deux matrices <em>A</em> et <em>B</em>est <em>A*B</em>.
On peut utiliser le logiciel PARI/GP, exemple :
\text{n = randint(3..5)} \matrix{A = pari(matrix(\n,\n,i,j, (-1)^(i+j)*x^i*j))}
Ecrivez
\matrix{A = \reply1}
Ainsi, wims transformera les passages à la ligne en points-virgules, ce qui est la manière standard d'écrire une matrice dans PARI/GP.
Le mieux est d'utiliser PARI/GP, par exemple :
\matrix{A = slib(matrix/random 3,4)} \text{k = randint(1..3)} \text{l = randint(1..4)} \matrix{B = pari (A = Mat([\A]); A[\k,\l]=x; A)}
En effet, si une fonction qui a un sens pour WIMS est insérée dans un
programme PARI/GP (ou Maxima, etc.), elle est interprétée par
WIMS avant d'être envoyée au logiciel correspondant. Pour éviter cela,
WIMS définit l'alias RANDOM
de random
dans PARI/GP.
slib : Il s'agit de scripts pouvant être utilisés dans la programmation d'un exercice OEF ou dans un module WIMS. Cette bibliothèque est en constante évolution.
Il prend les éléments de 3 au dernier de la liste \S