Le wiki de WIMS EDU

L'association WIMS EDU a ouvert ce wiki afin de favoriser les collaborations entre utilisateurs de WIMS.

Outils pour utilisateurs

Outils du site


faq:oef

Table des matières

Exercices OEF

Qu'est-ce que OEF ?

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 ().

Où est la documentation du langage OEF ?

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.

Qu'est-ce que Createxo ?

Createxo est une interface permettant de créer des exercices oef sur le serveur par une page web

J'ai fait mon premier exercice OEF et les réponses s'affichent. Est-ce normal ?

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.

Y a-t-il des exemples commentés d'exercices ?

Vous pouvez trouver des exercices commentés dans le document DocAide Exercices OEF et sur le site Poitou-Charentes.

Je voudrais appeler dans un exercice OEF un fichier de données par exemple en utilisant ''slib(data/randline)''.

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

).

Createxo distingue réponses libres et à choix multiples. Quid ?

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 …

Qu'est-ce qu'on ne peut pas faire avec OEF?

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.

J'ai de bons exercices OEF ou Modtool, comment les intégrer à la distribution ?

Transmettez-les à votre gestionnaire de site, ou à Bernadette Perrin-Riou.

Les formules TeX ne sont pas lisibles. Comment augmenter leur taille ?

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.

Peut-on mettre des boucles et des branchements conditionnels dans un exercice OEF?

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

''\text{ s = ]a, b[ }'' est refusé par le compilateur.

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.

Quelles sont les commandes de programmation accessibles dans les exercices OEF ?

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

Comment compter les mots d'une phrase ou le nombre de caractères ?

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

J'ai des problèmes pour manier des textes contenant des virgules, ou des \ !

Remplacer les caractères par leur code html, par exemple ] pour un crochet et , pour une virgule.

''\a * \a'' est faux ! (après ''\text{ a = x + y }'')

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.

Je veux faire un exercice avec des poids aux questions et cela ne marche pas.

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.

Je n'arrive pas à écrire un intervalle, WIMS enlève la virgule.

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.

Que signifie la précision et comment est calculée l'erreur dans les exercices numériques ?

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

J'affiche une racine carrée et il reste des parenthèses.

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

La commande ''solve'' ne renvoie pas la racine exacte ?

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

Comment insérer la réponse dans le texte d'un énoncé ?

Il faut utiliser la fonction \embed

 
  \statement {
    <br>Calculer 2 + 2 : \embed{reply 1}
  }
  \answer { 2 + 2 = }{ 4 }

Je désirerai mettre une aide commune à plusieurs exercices d'un module OEF.

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.

\text{monaide=wims(record 0 of aide)} \help{\monaide}

Avez-vous un exemple d'exercice à étapes ?

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

Dans un exercice à étapes, une réponse fausse au premier ''step'' entraîne-t-elle nécessairement l'arrêt de l'exercice ?

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.

Comment faire des exercices dont la deuxième question dépend de ce qu'a répondu l'élève à la première ?

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

Avez-vous un exemple d'exercice demandant de reconstituer des phrases ( ''clickfill'')?

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

Dans un exercice utilisant le type de réponse ''correspond'', peut-on gérer les ambiguïtés ?

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.

Avez-vous un exemple de dessin ?

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

Comment se sert-on de ''animstep''

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

Je voudrais utiliser des matrices et faire des produits. Que dois-je utiliser ?

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

Je voudrais créer une matrice avec certaines propriétés ...

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

J'ai récupéré la réponse reply1 sous forme de matrice et pourtant PARI/GP ne l'interprète pas comme une matrice?

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.

J'ai obtenu une matrice avec ''slib(matrix/random)'' et je voudrais changer un coefficient.

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

La fonction ''random'' semble interférer entre PARI/GP et WIMS ?

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.

Je me souviens avoir vu une liste de scripts, mais je ne retrouve pas la documentation ?

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.

Que fait l'instruction ''\text{S1=item(3..-1,\S)}''.

Il prend les éléments de 3 au dernier de la liste \S

Vous pourriez laisser un commentaire si vous étiez connecté.
faq/oef.txt · Dernière modification : 22/11/2011 21:07 de 127.0.0.1