Vous pouvez mettre ce document en version imprimable (en haut à droite) pour avoir une vue d'ensemble de son contenu ou faire une recherche sur un mot (à l'aide de la fonction recherche de votre navigateur). Si vous programmez un exercice OEF en même temps, il est conseillé d'ouvrir cette documentation dans un autre signet de votre navigateur.
Les exemples commentés qui émaillent cette présentation sont aussi accessibles par le lienUne petite flèche bleue vous indique le lien vers un exemple d'exercice.
\title Encadrement de nombres décimaux } \language{ fr } \author{ Bernadette, Perrin-Riou } \email{ bpr@math.u-psud.fr} \computeanswer{ no }
\precision{ 10000 }
\integer{ n = randint(3..6) }
\integer{ p = random(randint(5..7),randint(1..3)) }
\real{ a = randint(10^( \n)..10^( \n + 1)-1) }
\real{ A = \a/10^(\p) } \real{ sol1 = \n-(\p) } \real{ sol2 = \n-(\p) + 1 }
\statement{ Donner un encadrement du nombre \( \A) par des puissances de 10 consécutives. <div class="wimscenter">10<sup><sup> \embed{ reply 1,4 } </sup></sup> \leq \A < 10 <sup><sup> \embed{ reply 2,4 } </sup></sup> </div> }
\answer{ exposant }{ \sol1 }{ type=numeric } \answer{ exposant }{ \sol2 }{ type=numeric }
\hint{ Vous pouvez d'abord écrire le nombre avec la notation scientifique. }
\title{ Encadrement de nombres décimaux } \language{ fr } \author{ Bernadette, Perrin-Riou } \email{ bpr@math.u-psud.fr } \computeanswer{ no } \precision{ 10000 } \integer{ n = randint(3..6) } \integer{ p = random(randint(5..7),randint(1..3)) } \real{ a = randint(10^(\n)..10^(\n + 1)-1) } \real{ A = \a/10^(\p) } \real{ sol1 = \n - (\p) } \real{ sol2 = \n - (\p) + 1 }
\statement{ Donner un encadrement du nombre \(\A) par des puissances de 10 consécutives. <div class="wimscenter">10<sup><sup> \embed{ reply 1,4 } </sup></sup> \leq \A < 10<sup><sup> \embed{ reply 2,4 } </sup> </sup> </div> } \hint{ Vous pouvez d'abord écrire le nombre avec la notation scientifique. }
\answer{ exposant }{ \sol1 }{ type=numeric } \answer{ exposant }{ \sol2 }{ type=numeric }
\title{ Le carré d'un entier } \computeanswer{ no } \integer{ n = randint(-50..50) } \integer{ N = \n^2 }Pendant :
Dans cette partie du programme on trouve en particulier :
\statement{ Enoncé de l'exercice } \help{ Aide en popup } \hint{ Indication}Dans cette partie, on peut utiliser
Attention :
\answer { Commentaire }{ \reponse }{ type = mot_reserve} \choice{ Commentaire }{ \bonchoix }{ \tousleschoix }Le type est donc quelque chose de très important, il détermine à la fois quel style de réponses est demandé (click, clickfill ou numeric) et comment elles vont être testées (voir les différences entre formal ou algexp ou function).
\title{ Spectre électromagnétique } \text{ liste = rayons \(\gamma\),rayons X, ultraviolet,lumière visible, infrarouge, micro-ondes, ondes radio}Pendant :
\statement{ Remettre les parties du spectre dans l'ordre croissant des longueurs d'onde :Après :
\embed{reply 1 }
}
\answer{ }{ \liste }{ type = reorder }
\text{ a=Paris,Moscou,Washington } \text{ b=France,Russie,Etat-Unis }
\statement{ \embed{ r1 } }
\answer{ blabla }{ \a;\b }{ type=correspond }
\answer{ blabla }{ \a;\b }{ type=correspond }{ option=split }
\text{ a = 1,2,3 } \text{ b = 1,1,1 }
\statement{ }
\answer{ }{ \a;\b }{ type=correspond }
\text{ a = 1,2,3 } \text{ b = 1,1,1 }
\statement{ }
\answer{ }{ \b;\a }{ type=correspond }
\rational{ x = 1/5 + 3/4 } \real{ y = 1/5 + 3/4 } \text{ z = 1/5 + 3/4 } \integer{ t = 2.6754 }
\text{ liste = 1,2, x, 3/4 } \text{ liste = \(\forall), \(\exists), \(\in) } \matrix{ A = 1,2,3 2,3,4 4,5,6 } \matrix{ A = la fonction est positive, oui la fonction est négative, non }
\text{liste = 1,2, x, 3/4} \matrix{A = la fonction est positive, oui la fonction est négative, non} \text{s = item(3,\liste)} ou \text{s = \liste[3]} \text{s = item(1,row(2,\A))} ou \text{s = \A[2;1]}
\real{ x = random(-5..5) } \integer{ y = random(-5..5) } \integer{ y = randint(-5..5) } \function{ f=random(x^2+1,sin(x),log(x)) } \rational{ z = randint(-5..5)/randint(1..7) } \text{ t = random(1,2,3,a,b,c) } \text{ t = randitem(1,2,3,a,b,c) } \text{ l = randomrow(1,2,3 2,3,4 4,5,6) }
\text{ A = slib(matrix/non0 5,10,100) }
\text{ A = slib(stat/binomial 100, 5,0.1) }
\text{ mot = randitem(aluminium, fer, bauxite) } \text{ A = slib(lang/frapostrophe de \mot) }
\text{ g = -x + y } \text{ f = x*\g } \text{ h = - \g } \statement{ h = \h; f = \f }
On peut utiliser des boucles et des branchements à la fois pour la définition des variables et dans la partie statement.
\if{ \a = 1 }{\text{ b = 2}}{\text{ b = 3 }}
\text{ b = \a = 1 ? 2 : 3 }
\for{ i = 1 to 10 }{ \text{ b = \b,\i } }
\integer{ k = 1 } \text{ b = \k } \while{ \k < 10 }{ \integer{ k = \k+1 } \text{ b = \b,\k } }
\text{ a = randint(1..2) } \statement{On tire \a \if{ \a = 1 }{ boule }{ boules}. }Un exemple :
Pour accéder à la liste des macros existant sur le serveur, cliquer sur WIMS technical documentation Si vous cliquez sur une des commandes, vous obtenez un tableau dans lequel sont indiqués le nom, la signification des paramètres et de temps en temps un exemple de même que la syntaxe à utiliser (Call from OEF / DOC) :
Pour l'utiliser dans un exercice, la syntaxe est la suivante :\text{ resultat = slib(nom parametre) }Voici quelques exemples, mais le mieux est que vous alliez voir.
\text{ horloge =slib( draw/clock 02:45:33, 120) } \statement{ \draw{ \horloge}}
\text{ cheval = slib( lang/frapostrophe de le cheval) } \text{ ane = slib( lang/frapostrophe de le âne) }Résultat : du cheval, de l'âne
Cela est commode si vous voulez faire des énoncés en français par exemple l'atome de chlore, d'oxygène où l'élément chimique est pris au hasard.
\text{ atome = randitem(chlore,oxygène,carbone,hydrogène) } \text{ datome = slib( lang/frapostrophe de ) }
\text{ a = slib(text/comblin [1,2,3] , [\vec{e_1}, \vec{e_3}, \vec{e_2}]) } \statement{ \(\a) }
stat/mean, stat/variance, stat/effectif, stat/histo ...
stat/???pdf stat/???cdf stat/???invoù ??? est à remplacer par le nom d'une loi classique.
\text{ res = slib(stat/binomialcdf 3,10,0.5) }
\text{ jeu = slib(stat/empiric 5,[2/3,1/3],[pile,face]) }
\text{ A = slib(stat/normal 10,0,2) }
\text{ proba = slib(stat/posdiscretelaw 7,10,Q) }
\text{ S = wims(values x^2 for x = 1 to 10) } \text{ S2 = wims(values exp(x) for x in \S) } \text{ S3 = wims(nospace a b ) } \statement{ S = \S; S2 = \S2 ; S3 = \S3 }
\text{ A = 3,6,8,9,2 } \text{ S = wims(replace internal item number 4 by z in \A) } \text{ T = wims(replace internal 3 by oui,non in \A) } \statement{ A = \A; S = \S; T = \T }
\text{ L = 1,3,7,8,9,10 } \text{ L= wims(replace item number 3 by non in \L) }
\text{ L = 1,3,7,8,9,10 } \text{ L= wims(replace item number 3 by in \L) } \text{ L= wims(nonempty items \L) }
\text{ L = 1,3,7,8,9,10 } \text{ L= wims(replace item number 3 by \L[3],oui in \L) }
\text{ L = wims(values x^2 for x = 1 to 20) } \text{ L = wims(makelist r x for x = 1 to 20) }
\text{ a = wims(exec povray ...) } \text{ a = wims(exec octave ...) }Ce qui remplace ... sont des commandes du logiciel.
\text{ a = pari( ...) } \text{ a = maxima(....) }En cas de commande existant à la fois dans wims et dans le logiciel (deux exemples classiques sont random et solve), c'est la commande wims qui a priorité, pour éviter d'y faire appel, il faut rajouter un \ devant la première parenthèse : random\( ... )
\text{ f = sin(x)/x^3 } \text{ f = maxima(diff(\f,x,2)) }
\real{ a = randint(1..10)/10 } \text{ fonct = \a*t*x } \text{ reponse = wims(exec octave f=@(x,t) \fonct; f(4,5))}Réponse : pour a=0.8.
\integer{ n = randint (20..23) } \text{ N = pari(factor(\n!+1)) }factor(23!+1) =
\text{ essai_pari = pari( (f(x) = my(t) ; t=x^2 ; t)) } \text{ data_pari = pari(a = 2 ; M = 3) \integer{ n = randint(2..8) } \text{ f1 = pari(f(\n)) } \text{ f2 = pari(f(M)) } \text{ a = pari(a) } \text{ b = \a^2 } \text{ c = pari(a^2) }Ici, \n appelle une variable définie par wims, M un entier défini dans Pari/GP et appelé par Pari/GP, a est à la fois une variable de WIMS et de Pari/GP et donc on l'appelle par \a dans WIMS et par a dans GP/Pari.
precision=10000, print_precision=8PARI/GP :
pari_precision=18Maxima :
maxima_precision=print_precision expon:0; expop:0; factlim:6; prederror: false; maxnegex:20; maxposex:20; ratfac:true; keepfloat:true;
\text{ A = [1,2,3;4,5,6] } \text{ Aoct = wims(exec octave [1,2,3;4,5,6]) } \matrix{ Aoct2 = wims(exec octave [1,2,3;4,5,6]) } \text{ Apari = pari( [1,2,3;4,5,6]) }
Aoct = Aoct2 = Apari =Octave passe des lignes et Aoct est formé de lignes et les éléments d'une ligne sont séparés par des espaces. On peut utiliser un slib pour la remettre sous forme "normalisée" (sans crochets quand même).
\text{ Boct = slib(text/octavematrix \Aoct) }
Boct =Autre exemple :
\text{ matrice = wims(exec octave [5^2 *4 + 5,2,3;5,6,7]) } \text{ matrice = slib(text/octavematrix ) }
matrice =
\answer{ }{ }{ type = xxx}ou
\choice{ }{ }{ }Pour \answer : la manière dont la réponse est analysée dépend du troisième argument qui est de la forme type = xxx. Voir Types de réponses pour la liste des types possibles.
\embed{ reply 2 } \embed{ choice 1 }Les mots reply 2, reply2 et r2 sont les seuls admis et sont équivalents (2 peut être remplacé par un entier et renvoie au numéro de la question déterminée par sa position dans les listes des \answer pour les reply ou dans les listes des \choice pour les "choices").
atext case nocase wlist
set | tel quel | |
aset | approximatif | expressions numériques |
fset | formal | expressions formelles |
chset | liste de caractères alphanumériques |
\function{ f = sin(x + 2 - 3) } \function{ g = sin(x - 1) } \function{ h = sin(x - 4 + 2) } \function{ t = simplify( \f) } \statement{ \f,\g,\h,\t } \answer{ }{ \f,\g,\h }{ type = fset } \answer{ }{ \f,\g,\h }{ type = aset } \answer{ }{ \t,\g,\h }{ type = fset }Si l'on répond sin(x - 1), sin(x - 1), sin(x - 2), les deux premières réponses sont fausses mais la troisième est juste. Un principe de sagesse : toujours faire simplifier les expressions ...
matrix vector equation units sigunits
\precision { 1000 } \computeanswer { yes } \real { a = sqrt(2) } \statement { rentrer a = \(sqrt(2)) } \answer { }{ \a }{ type=numeric }
menu
\text{ a=oui, non, pourquoi pas } \text{ rep=1 } \statement{ Répondre oui : <p class="wimscenter">\embed{ reply1 } </p> } \answer{ }{ \rep;\a }{ type=menu }
click
radio
checkbox
\text{ a = oui, non, pourquoi pas } \text{ rep = 1,2 } \statement{ Répondre oui ou pourquoi pas : <div class="wimscenter">\embed{ reply1 } </div> } \answer{ }{ \rep;\a }{ type=checkbox }
\text{ a = oui, non, pourquoi pas } \text{ rep = 1 } \statement{ Répondre oui : <ul> <li>\embed{ reply1,1 } </li> <li>\embed{ reply1,2 } </li> <li>\embedreply1,3 } </li> </ul> } \answer{ }{ \rep;\a }{ type=checkbox }
dragfill
clickfill
correspond
coord
compose (comparer à dragfill et clickfill)
\answer{ Réponse }{ \nouvelle_var }{ type=numeric}
\condition{ commentaire du test }{ \nouvelle_var = 1 or \nouvelle_var = 2 }
Pour une utilisation plus avancée (dans le cas d'un nombre variable de conditions), voir Condition .
\condition{ condition à cacher }{ \reply1 > 2 }{ option=hide }{ weight=1 } \condition{ condition à cacher }{ \reply1 > 3 }{ option=hide }{ weight=5 }
\feedback{ \reply1 = 3 }{ commentaires }
\solution{ texte expliquant la solution }Les mots \reply1 ... sont des mots réservés. Dans le cas de types de réponses compliqués, faites les afficher dans un feedback (ils ne contiennent pas toujours ce qu'on attend).
\feedback{ 1=1 }{ }
\text{ n = randint (3..5) } \text{ STEP = wims(makelist r x for x = 1 to \n) } \steps{ \STEP }Un exemple détaillé
\text{ var = r1, r2 } \nextstep{ \var }
\matrix{ ma_matrice=voici,voilà un chien, un chat, une porte }
\text{ a = \ma_matrice[2;3] }
\text{ a = \ma_matrice[1;] }
\text{ a = \ma_matrice[;2] }
voici,voilà;un chien, un chat, une porteIl faut donc faire attention aux virgules ou points-virgules qui seraient dans le texte et les remplacer préventivement par le code html ( , , et ; ;).
\matrix{ A = \vec{e_1}, \vec{e_2}, \vec{e_3} 2,3,4 } \text{ a = slib(text/matrixtex [\A] , lbrace,rvert) } \statement{ \(\a) }
\text{ a = slib(matrix/givenrank 4,5,2, 50) } \statement{ \(\a) }
\text{ a = slib(matrix/random 4,5,50) } \statement{ \(\a) }
\draw{ 200, 200 }{.
ligne1
iligne2
iligne3 }
\text{ url_dessin = draw(200,200 ligne1 ligne2 ligne3) }produit l'adresse html du dessin. Comme toutes les définitions de variables, cette définition de url_dessin doit se trouver en dehors de \statement. Pour faire apparaître le dessin, on écrit
\statement{ <img src="\url_dessin" /> }Les options html de src sont alors utilisables.
\text{ A = draw(200,200 xrange -1,1 yrange -1,1 hline 0,0,black fill 0,1,red) } \statement { <div class="wimscenter"> <img src = "\A" alt="" /> </div> }et voici l'url : \A :
\text{ url_dessin = draw(200,200 ligne1 ligne2 ligne3) } \text{ nom_image = slib(oef/insfilename) }La dernière ligne doit être juste après la définition du dessin (et en tout cas avant le dessin suivant).
\author : \author{ xxx } \title : \title{ xxx } \answer : \answer{ blablabla }{ }{ type=xxx }{ weight = yyy } \choice : \choice{ xxx }{ test }{ } \computeanswer : \computeanswer{ yes } \condition : \condition{ blablabla }{ test }{ option=hide } (dernier champ optionnel) \conditions : \conditions{ 1,2,3 } \email : \email{ xxx } \feedback : \feedback{ test }{ blablabla } \help : \help{ xxx } \hint : \hint{ xxx } \next : \next{ xxx } \nextstep : \nextstep{ xxx } \reply : \reply{ xxx }{ }{ }{ } = \answer{ }{ }{ } \solution : \solution{ xxx } \statement : \statement{ xxx } \steps : \steps{ reply1, reply2 reply3,reply4 } ou \steps{ r1, r2 r3, r4 }(pas d'autres lettres que r) \complex : \complex{ xxx = yyy } \function : \function{ f = x^2 } \language : \language{ fr } \precision : \precision{ 1000 } \range : \range{ -5,5 }
\for : \for{ i=1to 5 }{ } \if : \if{ test }{ }{ } Il n'y a pas d'évaluation préliminaire des deux membres de la condition ? : \text{ a = condition ? xx : yy } ici condition est évaluée. Sans troisième argument, la variable a n'est pas modifiée si condition est faux
\while : \while{ test }{ }
\integer : \integer{ a = yyy } \matrix : \matrix{ a = yyy } \rational : \rational{ r = 3/2 } \real : \real{ r = 3/2 } \text : \text{ xxx }Autres : permettent la définition des variables
*variable : \variable{ xxx } *mdef : \mdef{ { xxx } *parameter : \parameter{ xxx } *plot : \plot{ xxx }
column : \text{ a = column(1,xxx) } deriv : \text{ a = deriv(xxx,x) } derivative : \text{ a = derivative(xxx,x) } det : \text{ a = det(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) } randtow : \text{ a = randtow(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) } permet d'utiliser du code wims. yacas : \text{ a = yacas(xxx) }Noms ayant une signification imposée :
imagedir : \imagedir confparm1 : \confparm1 confparm2 : \confparm2 confparm3 : \confparm3 confparm4 : \confparm4 step : \step r1 : r1 pour reply1Gestion des tableaux :
\matrix{ A = x,y,z u,v,t } \statement{ \A[1;3] }solve
\text{ a = condition? resultat1:resultat2 }Vous devez écrire le code html correspondant au point d'interrogation. Codes utiles