Création d'exercices
Composants visuels
Sous la barre de menus, on trouve :
- une boîte de paramètres qui contient les choix suivants :
- Les définitions globales valables pour tous les exercices. C'est là que
l'on définit les fonctions utilisateurs.
- Les définitions nécessaires pour la partie en cours de l'exercice.
- Le titre, pour pouvoir le changer
- Le nombre total de points de l'exercice
- L'énoncé, pour pouvoir changer un énoncé, il faut sélectionner cet item.
- deux boutons radios pour basculer du mode création au mode exécution de
l'exercice.
- en dessous, une boîte de règles donnant le corps de la définition dont le
nom se trouve dans la boîte de droite.
- l'applet comportant la zone de l'énoncé, un ou deux panneaux centraux,
pour afficher les expressions mathématiques et les dessins, et sur la
dernière ligne, la note, la boîte de réponse et la boîte de sélection de
l'exercice.
- la boîte d'entrée des définitions
- l'historique des entrées validées.
Fonctions
Fonctions prédéfinies :
- calcule(<expr>) : calcule ce qui est possible sous forme de fraction
simplifiée. (ALT+c)
exemple : dans la boîte d'entrée des définitions, taper calcule(3/6+1),
puis aller dans le menu
Actions->Appliquer->les définitions des variables (ou taper CTRL+D)
- sépare(<séquence ou ensemble>,<entier>) : sépare une séquence (ou un
ensemble) en deux séquences
exemple : sépare((2,5,6,7,9),2) donne (2,5,6),(7,9)
- joint(<séquence>,<séquence>) : regroupe en une seule séquence
exemple : joint((2,3),(4,5,6)) donne (2,3,4,5,6)
- euclide(<entier>,<entier>) : écrit la division euclidienne
exemple : euclide(9,4) donne 4×2+1
- pgcd(<entier>,<entier>) : donne le plus grand commun diviseur
- arrondi(<num>, [<entier>]) donne l'arrondi à l'entier près s'il n'y a
qu'un argument, le second argument indique le nombre de décimales
<num> peut être un nombre ou l'image d'un nombre par une fonction scientifique
(cos,sin,tan,exp,ln)
- compare(<expression1>,<expression2>) : comparaison d'expressions
quelconques, le résultat est -1, 0 ou 1 (plus petit, égal, plus grand)
Fonctions utilisateur :
Vérifier que la boîte de paramètres contient "définitions globales".
Quelques exemples :
- Fonction carré : dans la boîte d'entrée des définitions,
taper carré->carré(x) puis taper CTRL+d (ou aller dans le menu
Définitions->Ajouter->une définition), le nom de la fonction apparaît dans la
boîte des noms.
Entrer x^2 , puis taper CTRL+r (ou aller dans le menu
Définitions->Ajouter->une règle) pour ajouter cette règle qui doit
apparaître dans la boîte des règles.
Si on écrit carré(2+3) dans la boîte d'entrée en appuyant ensuite sur CTRL+D,
on obtient (2+3)^2.
On va corriger la définition pour obtenir le calcul complet, appuyer sur
CTRL+t (ou aller dans le menu Définitions->Extraire une règle), remplacer x^2
par calcule(x^2) et taper CTRL+r. Aller dans la boîte des règles et
sélectionner x^2, puis appuyer sur la touche Suppr. Il ne reste que la
nouvelle définition.
(2+3)^2 donne maintenant 25.
- Fonction factorielle : dans la boîte d'entrée des définitions,
taper fact->fact(x) puis CTRL+d.
Pour l'instant, si on écrit fact(5) et on tape CTRL+D, on obtient la même
expression.
Entrer la ligne : {0->x : 1} , (ce qui veut dire que fact(0) vaut 1), puis
taper CTRL+r pour ajouter cette règle qui doit apparaître dans la boîte des
règles.
Si maintenant on tape CTRL+D après avoir entré fact(0), on obtient bien 1.
Appuyer sur CTRL+t (Extraire une règle) , changer {0->x : 1} en {1->x : 1}, (ce qui veut dire que fact(1) vaut 1), puis
taper CTRL+r pour ajouter cette règle qui doit apparaître dans la boîte des
règles.
Appuyer sur CTRL+r après avoir écrit : {x>1:fact(calcule(x-1))×x} (définition
récursive de la fonction).
Essayer maintenant fact(9) ou un autre.
- Calcul d'un barycentre : on cherche le barycentre du système
pondéré (point(x1,y1),a1,..,point(xn,yn),an).
Entrer : bary->bary(s) puis CTRL+d. La première règle s'écrit :
{(point(x,y),a)->s : STOP(s)}, ce qui signifie que si la séquence s est formée
d'un point et de son coefficient, on arrête le calcul (break) et on sort s.
La seconde règle calcule le barycentre de deux points :
{(point(x,y),a,point(x',y'),a')->s :
STOP(point(calcule((a×x+a'×x')/(a+a')),calcule((a×y+a'×y')/(a+a'))),calcule(a+a'))}
La règle 3 définit la variable qui sépare la séquence en deux : t->sépare(s,2)
.
La règle 4 est récursive, elle calcule d'abord le barycentre de la première
séquence (bary(a)), regroupe le résultat avec le dernier point (joint(bary(a),b))
et calcule le barycentre de ces deux points :
{(a,b)->t,non(compare(sépare(a,2),a)=0) : bary(joint(bary(a),b))}
On peut maintenant essayer bary(point(0,0),1,point(1,1),1,point(1,0),2)
- Suite de points formant le graphe d'une fonction : on cherche une
suite de points (x,y) où y est l'image de x par une fonction x-><expr>
Entrer : graphe->graphe(expr,a,b,p) puis CTRL+d (a et b sont les bornes de
l'intervalle et p le pas de calcul).
Entrer : t->calcule(transforme(exp,x->a)) puis CTRL+r (t est l'image de a)
Entrer : {non(a<b) : STOP(point(a,t))} puis CTRL+r (arrêter si a est plus
grand que b)
Entrer : joint(point(a,t),graphe(exp,calcule(a+p),b,p)) puis CTRL+r (récursion)
Essayer maintenant avec une fonction quelconque, par exemple graphe(x^2,0,4,1)
CTRL+D
- Règles d'écriture : une fonction est définie par une suite de
règles, chaque règle pouvant être :
- une expression quelconque <expr>, par exemple, calcule(x+2).
- la substitution d'une variable x par une expression <subst>,
transforme(<expr1>,<var>-><subst>)
- une variable locale t, de la forme t-><expr>. On peut utiliser la variable
locale image qui donne le résultat courant de l'évaluation.
- une expression conditionnelle, de la forme {<cond1>,..,<condn> : <expr>},
ou chaque condition peut être l'évaluation d'une relation :
non(compare(x,y)=0), le type d'une expression : a->var (a est une variable),
a->num (a est un nombre), a->entier, a->décimal, a->ensemble, a->vec (a est un
vecteur), a->seq (séquence), a->ensemble, ou la forme d'une expression :
a+b->x (x est une somme).
- On peut enregistrer ces définitions globales dans un fichier avec
l'extension ".math" (Fichiers->Exporter des définitions). On peut évidemment
les importer.
Ecriture d'un exercice
- Choix des expressions
Appuyer sur CTRL+X (ou aller dans le menu Définitions->Ajouter->un exercice),
puis écrire l'énoncé de la première question : "Mettre le coefficient de
x^2 en facteur avec les termes en x (s'il est différent de 1),
exemple : 3×x^2 - 5×x + 1 = 3×(x^2 -51/3×x) + 1"
Dans la boîte de paramètres, choisir "définitions".
Ecrire : choix(a€[1,3],b€[1,3],c€[1,3]) et valider avec CTRL+d pour choisir 3
entiers au hasard entre 1 et 3.
Si maintenant, on clique sur exercice 1 puis sur le bouton Exécuter, en
sélectionnant les noms a, b, c de la boîte de noms, la boîte de gauche affiche
les valeurs.
Cliquer sur le bouton Créer et entrer : choix(sa€{-1,1},sb€{-1,1},sc€{-1,1})
pour choisir les signes.
Entrer : f->calcule(sc×c×x^2+2×sc×sa×a×c×x)+calcule(sc×c×a^2+sb×b) , relancer
l'exercice 1, en mode exécution, la valeur de f est toujours une somme, par
exemple (-1)×x^2+2×x+(-2), il faut donc arranger les signes.
Importer le fichier signes.math qui ajoute les fonctions norm(x) pour simplifier
les signes et test(b,x,y) qui donne x par défaut et y si la condition b est
vraie.
Entrer question->f(x)=norm(f) et valider avec CTRL+d. Si on relance l'exercice,
la fonction s'affiche avec les signes corrects.
Entrer solution->norm(calcule(sc×c×(x^2+2×sa×a×x))+calcule(sc×c×a^2+sb×b)), (ALT+s
pour solution).
Il est plus agréable de se mettre en mode test (menu Actions->Mode test ou
CTRL+F1), la solution apparaît dans le champ réponse.
- Figures
On va ajouter une figure, entrer : figure, valider avec CTRL+d.
Entrer : {droite(point(-8,0),point(8,0)),graduations(16),couleur(rouge)} et
taper CTRL+r pour ajouter l'axe des abscisses puis
{droite(point(0,-8),point(0,8)),graduations(16),couleur(rouge)} pour l'axe des
ordonnées.
Pour faire apparaître cette figure, il faut une aire de dessin, on crée une
zone texte et une zone dessin en ajoutant aux définitions :
plan->vertical(2,3). Relancer l'exercice, les axes apparaissent.
Sélectionner "figure" dans la boîte des noms, on ajoute le graphe de la
fonction sur l'intervalle [2,4] :
{ligne(graphe(f,-2,2,1/4)),couleur(bleu)} et CTRL+r
Si on relance, le tracé de la courbe est souvent décevant, la zone de tracé
n'est pas celle que l'on voudrait. On va chercher un intervalle centré à
l'extremum. Dans le boîte de noms, sélectionner "solution" puis entrer la
définition des bornes : x0->calcule(-2-sa×a) , valider, puis
x1->calcule(2-sa×a) , valider.
Sélectionner "figure", et "{ligne(graphe(f,-2,2,1/4)),couleur(bleu)}" de la
boîte de règle. Extraire cette règle avec CTRL+t, changer en
"{ligne(graphe(f,x0,x1,1/4)),couleur(bleu)}" et valider avec CTRL+r. La ligne
précédente "{ligne(graphe(f,-2,2,1/4)),couleur(bleu)}" ne sert plus à rien,
sélectionner là et appuyer sur Suppr.
L'intervalle de tracé est maintenant correct, mais il faut ajuster la fenêtre.
Entrer recadre->10 puis CTRL+d et relancer l'exercice. Le dessin est plus
visible, mais l'axe Oy a parfois besoin d'être réajusté.
Sélectionner "x0" et ajouter la définition : y0->vabs(calcule(transforme(f,x->x0))).
Dans la figure, on extrait l'élément
{droite(point(-8,0),point(8,0)),graduations(16),couleur(rouge)}, changer -8, 8
et 16 en -y0, y0 et 2*y0, on peut aussi prolonger la droite avec sepA et sepB
:
{droite(point(0,-y0),point(0,y0)),graduations(2×y0),couleur(rouge),sepA(1),sepB(1)}
Supprimer l'élément inutile.
- Changer le titre
Dans la boîte des paramètres, sélectionner "titre", entrer : forme canonique,
valider avec CTRL+d. Relancer l'exercice pour vérifier le fonctionnement,
enregistrer (CTRL+s) sous forme de fichier html.
- Evaluation
Dans la boîte des paramètres, sélectionner "vérifications", entrer :
correct->compare(entrée,solution)=0, valider avec CTRL+d. Cela signifie que la
réponse (entrée) est correcte si elle coïncide avec la solution proposée.
Relancer l'exercice pour voir la différence.
- Nouvelle question
Pour continuer l'exercice, on ajoute une question avec CTRL+q (ou
Définitions->Ajouter->une question). Ecrivons l'énoncé : "Les termes en x
forment les deux premiers termes du développement de (x+b)^2,
par exemple x^2 - 6×x = (x - 3)^2 - 3^2. En déduire la forme canonique de
f(x)", puis sélectionner "définitions" dans la boîte de paramètres.
Ajouter : question->f(x)=solution (la solution précédente va s'afficher), puis
:
solution->norm(calcule(sc×c)×(x+sa×a)^2+sb×b)
Ajouter : format->?×(x+?)^2+? pour indiquer à l'élève la forme recherchée.
Relancer l'exercice pour vérifier que tout fonctionne, sauver.
Sélectionner "vérifications" et entrer : correct->compare(entrée,solution)=0.
Valider et vérifier l'exercice, enregistrer.