DocAide Documents II
Sommaire
Ce document détaille et complète la partie "Insertion d'exemples à données aléatoires"
du
DocAide Documents
.
Il présente aussi des exemples de dessins dynamiques et d'insertion de figures GeoGebra. Il donne des indications pour l'utilisation de Latex2wims.
Exemples aléatoires
-
Bases de la programmation des exemples aléatoires
-
Boucles et branchements
-
Formulaire d'entrée de variables
-
Formulaire outil
-
Exemples créés à partir d'un exercice
.
-
Exemples aléatoires à solution cachée
(avancé)
Dessins dynamiques
- Aide pour les figures
-
Exemples de dessins dynamiques
-
Interprétation des signes dans une équation de droite
et son
code
-
Interprétation graphique pour une équation du second degré
et son
code
-
Fractions de segment
et son
code
-
Barycentre
et son
code
-
Exemples avec GeoGebra
-
Equation d'une droite
avec son
code
-
Equation d'une tangente
-
Construction d'une médiatrice
Composer un DocWims à partir d'un fichier LateX : latex2wims
Latex2wims est une moulinette qui transforme un fichier LateX bien préparé en document WIMS ; on obtient aussi une version pdf :
Démarrer avec Latex2wims
Bases de la programmation des exemples aléatoires
Pour les questions traitées ici, voyez aussi l'Aide 7 et 8
ou la partie "Insertion d'exemples à données aléatoires" dans DocAide Documents.
La définition des variables et l'aléatoire
Les variables utilisées dans les exemples sont les mêmes que celles
des exercices :
text, integer, rational, matrix..., seule la syntaxe de définition change.
Pour la liste des paramètres aléatoires, consulter l'
Aide de Createxo
.
- \def{text p=pomme} donne à la variable
la valeur pomme.
Par la suite, quand on écrit \p dans le document (noter le signe \ devant le nom de la variable lors de son utilisation), \p est remplacé par pomme à l'affichage.
- \def{text p=random(pomme, poire)} écrit aléatoirement pomme ou poire quand on écrit \p dans la page. Il suffit de recharger la page.
- \def{integer n=4} définit un entier
, qu'on appelle avec la commande \n et qui vaut
.
- \def{integer n=random(1..4)} définit un entier
qu'on appelle avec la commande \n et qui vaut aléatoirement
,
,
ou
.
- On peut définir une liste et en récupérer les éléments :
\def{text liste = 1,2, x, 3/4}
\def{text s = item(3,\liste)} ou \def{text s = \liste[3]}
- On peut définir toute sorte de
matrice, les lignes sont écrites les unes en dessous des autres et les éléments sont séparés par une virgule,
et en récupérer les éléments :
\def{matrix A = la fonction est positive, oui
la fonction est négative, non}
\def{text s = item(1,row(2,\A))} ou \def{text s = \A[2;1]}
Renouveler les données
L'intérêt d'un exemple aléatoire est ses données ou questions aléatoires. Celles-ci sont à nouveau tirées au hasard à chaque chargement de la page.
On obtient le chargement de la page et donc de nouvelles données en cliquant sur le lien
Recharger du bandeau. On obtient le même effet
en cliquant sur un lien
Nouvel exemple défini par
\reload{Nouvel exemple} (
toute la page est rechargée).
-
Le double de 7 est 14.
-
Un kilogramme de pommes vaut 2 euros. Le prix des pommes est proportionnel à la masse de pommes et le coefficient de proportionnalité est 2.
Pour la suite, utilisez le lien Suiv. dans le bandeau ou une flèche latérale.
Boucles et branchements
La syntaxe des boucles et embranchements dans les exercices se trouve
dans le
DocAide Exercices
.
On peut aussi consulter l'aide de Createxo et celle des documents (
Utilisation de Variables dans un Document).
Boucle
La boucle \for{i=1 to 10}{\i, } permet d'afficher les entiers de 1 à 10.
Compte de 3 en 3 de 3 à 18. Solution : 3, 6, 9, 12, 15, 18
Voir cet exemple avec solution cachée
Un branchement
Ce premier exemple utilise la commande \if.
Le code :
\def{ text mot = randitem( exercice, exercices) }
\if{\mot issametext exercice}{un}{des}\mot
donne
Voici
un
exercice .
Dans cet exemple, il y a peu d'aléatoire (deux cas) donc le renouvellement ne produit pas nécessairement de changement.
Un autre branchement
Ce deuxième exemple utilise une forme plus synthétique en cas d'alternative.
Noter le point d'interrogation pour la condition et les deux points qui séparent les deux alternatives.
Le code :
\def{ integer p = random(-1,+1)*random(1..10) }
\def{ text signe = \p>0? positif:négatif }
L'entier \n est strictement \signe.
donne
L'entier -7 est strictement négatif.
Formulaire d'entrée de variables
On peut demander au lecteur d'entrer une valeur
Le code :
\form{.}{expform}{
Entrez une expression numérique à calculer :
<input size = "30" name = "parm1" value = "\parm1">
<input type = "submit" value = "OK">
}
\def{real N = \parm1}
L'expression vaut \N.
donne
L'expression vaut 0.
ou plusieurs valeurs
La somme des entiers
et
vaut
.
Voir le code
\def{integer parm2=randint(0 .. 9)}
\def{integer parm3=randint(0 .. 9)}
\form{.}{expform}{
Entrez deux entiers :
<input size = "10" name = "parm2" value = "\parm2">
et
<input size = "10" name = parm3 value = "\parm3">
<input type = "submit" value = "OK">
}
\def{integer N = \parm3 + \parm2 : 0}
La somme des entiers \(\parm2\) et \(\parm3\) vaut \(\N\).
Formulaire outil
WIMS propose différents outils rapides qu'on peut insérer dans une page html donc dans un DocWims.
En voici un exemple avec une question à données aléatoires.
Factorisation
Factorisez l'expression suivante
et utilisez l'outil pour vérifier votre résultat.
Exemples créés à partir d'un exercice
Vous pouvez transformer un exercice en exemple aléatoire à l'aide de quelques modifications simples.
On peut ainsi récupérer des dessins intéressants.
C'est un moyen pour présenter une solution rédigée d'un exercice proposé dans une feuille.
- Commencez par importer le source de l'exercice dans votre classe et copiez-le dans un fichier texte, par exemple gedit.
- Les lignes qui ne commencent pas par \ sont des commentaires,
vous pouvez les effacer ou les inclure dans un \comment{}.
- L'énoncé est dans \statement.
Vous supprimez la commande \statement{ ainsi que le } à la fin de l'énoncé.
- Les commandes qui définissent les variables doivent être modifiées
ainsi : \text{a=...} est remplacé par \def{text a=...}.
On peut le faire automatiquement en utilisant rechercher et remplacer.
Tous les détails sont dans l'aide des documents, rubrique Utilisation de Variables dans un Document.
Exemples
Exemples aléatoires à solution cachée
Si on veut cacher la solution d'un exemple et ne l'afficher qu'à la demande, il est impossible de la mettre dans un pli car à l'ouverture du pli,
les données sont renouvelées.
C'est pourquoi, on utilise la commande \link pour transmettre les paramètres.
Voici trois exemples avec leur code. Le code du premier est commenté en détail pour vous permettre de comprendre la méthode.
Commentaire du code de l'exemple pour compter
Quand on crée un pli avec \fold, on crée automatiquement un lien vers une deuxième version
de la page qui contient le texte du pli ; alors les paramètres aléatoires de la page sont rechargés
et donc différents. La solution contenue dans le pli ne correspond donc pas à la
question posée.
Pour éviter cela, on utilise la commande \link
qui permet de recharger la même page dans une version différente
et de transmettre les paramètres nécessaires au calcul de la solution.
Voici comment faire :
- On met un point dans la première paire d'accolades de la commande \link pour
signifier qu'on envoie sur la même page.
- Le paramètre N repère les versions de la page :
- La version \N=1 de la page ne contient que la question ;
le lien vers l'autre version est Solution.
- La version \N=2 de la page contient la question et la solution ;
le lien vers l'autre version est
Nouvelle question.
- Le mot \lien dans la deuxième accolade de la commande
\link{.}{\lien}{exemple}{parm1=\N&parm2=\p&parm3=\q}
est le lien qui permet de changer de version ; sa définition dépend donc de N :
\def{text lien=\N=1 ? Solution:Nouvelle question}
- La troisième accolade de la commande contient l'ancre de l'exemple car la page est longue. Sinon au rechargement,
la page revient en haut.
- La quatrième accolade de la commande contient les paramètres transmis lors du rechargement.
-
Le paramètre N est transmis et conditionne la version affichée : une nouvelle question est affichée
(N = 1) ou la solution est calculée avec les paramètres conservées puis affichée (N = 2).
La commande \def{integer N = \parm1 = 1 ? 2 : 1} donne la valeur 2 à N si parm1=1
et la valeur 1 sinon. On change de version à chaque rechargement.
- Les paramètres aléatoires de l'exemple, ici p, q, sont transmis par les paramètres ajoutés
(parm2=\p&parm3=\q) dans cette commande (voir l'aide).
- Dans la version \N=1 de la page, on pose une nouvelle question, donc les paramètres,
ici
et
, sont pris au hasard (random). Dans la version \N=2 de la page,
la solution est calculée (puis affichée) avec les valeurs de
et
transmises par la commande
\link{.}{\lien}{exemple}{parm1=\N&parm2=\p&parm3=\q}
.
On définit donc
et
selon la valeur de N par les lignes suivantes :
\def{integer p=\N=1 ? random(2..10):\parm2}
\def{integer q=\N=1 ? random(1..5):\parm3}
- La variable reponse dépend de N
dans sa définition : \def{text reponse=\N=2 ? La solution est \liste: }.
Quand N=1, elle est vide sinon elle donne la solution.
Exemple pour compter
Voici l'exemple aléatoire en action
Voici le code complet :
\def{integer N = \parm1 = 1 ? 2 : 1}
\def{text lien=\N=1 ? Solution:Nouvelle question}
\def{integer p=\N=1 ? random(2..10):\parm2}
\def{integer q=\N=1 ? random(1..5):\parm3}
\def{text liste=\q}
\for{i=2 to \p}{
\def{integer r=\i*\q}
\def{text liste=\liste, \r}
}
\def{text reponse=\N=2 ? La solution est \liste: }
Compte de \q en \q de \q à \r. \reponse
\link{.}{\lien}{exemple}{parm1=\N&parm2=\p&parm3=\q}
Dessins dynamiques
Pour les dessins dynamiques à l'aide de commandes WIMS, consultez
- l'aide des DocWims (§7),
- le paragraphe
dessin
dans le DocAide Exercices OEF,
- l'aide de Createxo
- le polycopié pdf "Introduction à la programmation" dans la classe d'exemple Autre / Développement de ressources.
Exemples de dessins dynamiques
-
Interprétation des signes dans une équation de droite
et son
code
-
Interprétation graphique pour une équation du second degré
et son
code
-
Fractions de segment
et son
code
-
Barycentre
et son
code
Insertion de figures GeoGebra
Pour l'insertion de figures GeoGebra, deux méthodes sont possibles
(chaque lien envoie vers les détails de la méthode)
-
Aide pour les dessins
. Elle utilise le GeoGebra de WIMS et le fichier GeoGebra que
vous avez créé pour des figures 2D.
Cette méthode permet d'utiliser les paramètres aléatoires de WIMS et/ou
de construire la figure avec des lignes de commande.
-
Affichage d'une figure 3D avec un slib
-
Afficher une figure depuis geogebratube
. Vous pouvez téléverser la figure dans geogebratube et l'appeler depuis
la page de votre document.
Si vous avez plusieurs figures GeoGebra dans votre DocWIMS,
vous devez les numéroter pour éviter des problèmes d'affichage.
Ajoutez number=1; à la liste des commandes dans le slib
de la figure 1. Voyez sur le code des exemples.
Les slib doivent être dans des div et non dans
des p.
Exemples avec GeoGebra
-
Equation d'une droite
avec son
code
-
Equation d'une tangente
-
Construction d'une médiatrice
Afficher une figure depuis geogebratube
Le site geogebratube est un site de partage de ressources GeoGebra.
Pour l'utiliser, vous devez créer un compte. Une figure déposée peut être privée, partagée ou publique.
Les figures partagées peuvent être affichées dans un document WIMS. Cet affichage dépend du serveur geogebratube.
Ces méthodes permettent l'affichage des figures 3D.
- Téléverser une figure dans geogebratube.
- Afficher une figure dans geogebratube.
L'URL de partage (dans Partager) permet d'établir un lien vers la figure.
Exemple de figure en ligne.
- Afficher une figure dans une page depuis geogebratube.
Dans l'onglet Imbriquer, choisir les options, copier dans le presse-papier le code html est fourni, puis
le coller dans la source de la page du DocWims concernée. La figure est alors affichée dans la page du DocWims.
Exemple de code
,
exemple d'affichage
.
Code pour imbriquer
Voici le code qui a servi à afficher cette
figure
.
Les retours à la ligne permettent de le visualiser complétement mais sont inutiles.
<iframe scrolling="no" src="https://www.geogebra.org/material/iframe/id/GzEhvN2j/width/655/height/460/
border/888888/smb/false/stb/false/stbh/false/ai/false/asb/false/sri/false/rc/false/ld/false/sdz/false/ctl/false"
width="655" height="460" style="border:0;"> </iframe>
Le nombre après id est utilisé pour afficher la figure avec le slib.
Le reste code les options choisies avant de copier le code, en particulier la taille de la figure qu'on peut modifier directement dans ce code.
Figure affichée avec le code fourni par geogebratube
Code du choix d'une droite
Transmettre les paramètres pour l'affichage de la solution
\def{integer P = \parm1 = 1 ? 2 : 1}
\def{text lien=\P=1 ? Réponse:Nouvelle droite}
Définition de paramètres
\def{integer a=\P=1 ?randint(1..4):\parm2}
\def{integer b=\P=1 ?randint(1..6):\parm3}
Equations possibles avec les différentes propriétés
\def{matrix M=\a*x + \b, positive, positif, croît, positif
- \a*x +\b, positive, positif, décroît, négatif
\a*x - \b, négative, négatif, croît, positif
- \a*x - \b, négative, négatif, décroît, négatif}
Construction de la liste d'équations
\def{integer r=rows(\M)}
\def{text liste=y = texmath(pari(\M[1;1]))}
\for{j=2 to \r}{
\def{text liste=\liste,y = texmath(pari(\M[\j;1]))}}
Choix de la droite dessinée avec transfert du choix.
\def{integer n=\P=1?randint(1..\r):\parm4}
\def{function f=maxima(\M[\n;1])}
Figure
\def{text dessin =
xrange -7.2,7.2
yrange -7.2,7.2
hline 0,0,black
arrow 0,0,1,0,8, black
arrow 0,0,0,1,8, black
text black,0.2,-0.2,medium,0
text black,6.8,-0.2,medium,x
text black,0.2,7,medium,y
vline 0,0,black }
\def{text graphe=plot red, \f}
Solution
\def{text solution=
Soit \(y=ax+b) une équation de la droite représentée.
<ul><li>
Comme la droite rencontre l'axe des y en un point d'ordonnée \M[\n;2],
le nombre \(b) est \M[\n;3].</li>
<li>
Comme sur la droite, \(y) \M[\n;4] avec \(x),
le nombre \(a) est \M[\n;5].</li></ul>
Une équation de la droite est donc \liste[\n].}
Définition des deux valeurs de la variable
solution affichée à la fin de l'énoncé.
\def{text solution=\P=2? \solution:}
Enoncé
<div class="flaot_right">
\draw{ 200,200 }{
\dessin
\graphe} </div>
Quelle est l'équation de la droite représentée ci-contre ?
<ul>
<li>\liste[1]</li>
<li>\liste[2]</li>
<li>\liste[3]</li>
<li>\liste[4]</li></ul>
\solution
Lien pour accéder à la solution (les paramètres sont transmis} ou obtenir une nouvelle droite
\link{.}{\lien}{exemple}{parm1=\P&parm2=\a&parm3=\b&parm4=\n}
Interprétation graphique pour une équation du second degré
Voici la parabole d'équation
:
Les points rouges ont pour abscisse les solutions
et
de l'équation
.
Le point vert est le sommet de la parabole. Ses coordonnées
sont
, soit dans notre exemple
.
Voir le code
.
Exercice :
Allure d'une parabole
Code de la parabole
\def{integer e = random(1..4)}
\def{integer f = random(-2..5)}
\def{integer b = -(\e + (\f))}
\def{integer c = \e*\f}
\def{integer d = (\b)^2 - 4*(\c)}
\def{text E=maxima(x^2 + \b*x + \c)}
\def{real s1=-\b/2}
\def{real s2=-\d/4}
Voici la parabole d'équation \(y = \E) :
\draw{300,300}{xrange -10.2,10.2
yrange -10.2,10.2
parallel -10,-10,10,-10,0,1,21, grey
parallel -10,-10,-10,10,1,0,21, grey
hline 0,0,black
arrow 0,0,1,0,8, black
arrow 0,0,0,1,8, black
vline 0,0,black
plot blue , \E
fcircle \e,0,6,red
fcircle \f,0,6,red
fcircle \s1,\s2,6,green}
Les points rouges ont pour abscisse les solutions \(\e) et \(\f) de l'équation \(\E = 0).
Le point vert est le sommet de la parabole. Ses coordonnées
sont \((-\frac{b}{2},-\frac{\Delta}{4})), soit dans notre exemple \((\s1, \s2)).
\reload{Autre dessin}
Barycentre
Voici un exemple construit à partir du source de
l'
exercice
.
Voici le barycentre
de {
} :
Voir le code
.
Placer un point sur une droite
Code de l'exercice de la page précédente
Choix paramètre entier ou rationnel mais on ne veut pas c=1.
\def{integer choix=random(1,2)}
\def{integer b=random(1..5)}
\def{rational c=\choix=1?random(-1,-2,2):random(-1,-2,-3,2,3)/\b}
\def{rational c=\c=1?2}
\def{rational ca=1-\c}
Définitions pour l'énoncé :
\def{text s1=\c>0?+:-}
\def{rational mc=-1*(\c)}
\def{text tc=\c>0?\c:\mc}
\def{text tc=wims(replace internal / by , in \tc)}
\def{text tc=items(\tc)>1?\frac{\tc[1]}{\tc[2]}}
\def{text tca=\ca}
\def{text tca=wims(replace internal / by , in \tca)}
\def{text tca=items(\tca)>1?\frac{\tca[1]}{\tca[2]}}
Définitions pour le dessin :
\def{integer fx=\c*(\b)}
\def{integer fy=0}
\def{integer Ox=403}
\def{integer ex=31}
\def{integer \fxx=\Ox+\ex*\fx}
\def{integer \fxxm=\fxx-0.3*\ex}
\def{integer \fxxp=\fxx+0.3*\ex}
\def{text repimage=xrange -13,13
yrange -1.5,3
hline 0,0,red
parallel -12,-0.2,-12,0.2,1,0,2,blue
parallel -10,-0.4,-10,0.4,5,0,5,blue
parallel -9,-0.2,-9,0.2,1,0,4,blue
parallel -4,-0.2,-4,0.2,1,0,4,blue
parallel 1,-0.2,1,0.2,1,0,4,blue
parallel 6,-0.2,6,0.2,1,0,4,blue
parallel 11,-0.2,11,0.2,1,0,2,blue
text red,-0.1,1.5,medium,A
text red,\b-0.1,1.5,medium,B
text green,\fx-0.1,-0.5,medium,G
segment 0,-0.2,\a,0.2,red
segment \b,-0.2,\b,0.2,red
segment \fx,-0.2,\fx,0.2,red
}
Enoncé :
Voici le barycentre \(G) de {\((A,\tca),(B, \s1 \tc))} :
<div class="wimscenter">
\draw{800,64}{\repimage}
</div>
\reload{Nouveau barycentre}
Pour exposer une démonstration, on peut utiliser
la navigation dans les étapes de construction de GeoGebra.
Les élèves peuvent en disposer en ligne.
Vous pouvez naviguer dans les étapes de la construction à la règle et au compas d'une médiatrice grâce aux flèches sous la figure.
Les données sont en vert, la médiatrice en rouge.
Code de la figure :
\slib{geo2D/geogebra}{file=mediatrice.ggb; width=800; height=600;number=4;}
Le slib est utilisé directement sans être défini comme un texte. Mais on peut toujours définir des listes partielles de commandes comme un texte.
Démarrer avec Latex2wims
Latex2wims est une moulinette qui transforme un fichier LateX bien préparé en document WIMS ;
on obtient aussi une version pdf.
Une interface spéciale sert à la création du document qui est ensuite géré par l'interface commune de Modtool.
Pour utiliser latex2wims, il faut disposer d'un compte modtool.
Pour obtenir un compte Modtool, écrire au gestionnaire du site afin d'obtenir une identification du développeur (login, mot de passe).
En attendant un compte Modtool, on peut télécharger la documentation (disponible à la page de
Createxo) et composer le fichier LateX qui sera transformé.
- Récupérer la documentation et les fichiers utiles
- Cliquer sur le lien Latex2wims sur l'Accueil WIMS : on peut alors télécharger la documentation et la lire.
- Se connecter à son compte modtool, (cliquez sur le lien Latex2wims si on ne l'a pas fait avant).
On peut créer un document-exemple en suivant le processus décrit dans la
fiche.
- Voici quelques exemples de documents créés avec Latex2wims et publiés.
-
L'essentiel sur les puissances
-
Doc Frises et Pavages
-
Doc Écriture fractionnaire
-
Ensemble de définition d'une fonction
et sa
source Latex
.
- Rédiger son fichier LateX
- Récupérer les fichiers wims.sty (indispensable pour compiler le fichier latex) et style.css (indispensable pour la mise en forme WIMS).
- Créer un fichier Latex avec l'entête préconisée dans la documentation.
- Comme il est indiqué dans la documentation, on peut utiliser les environnements latexonly ou wimsonly
pour insérer dans le fichier des parties qui n'apparaîtront uniquement dans la sortie "pdf" (par exemple une figure fixe en png) ou uniquement
dans la sortie "document WIMS" (par exemple la même figure mais en version GeoGebra).
- Pour passer à la moulinette latex2wims, le fichier LateX doit déjà passer correctement l'épreuve de la compilation LateX.
- A l'aide de Latex2wims, transformer le fichier LateX en un document WIMS
- Dans Modtool, créer le module "document" où le document créé par Latex2wims sera envoyé.
- Retourner à la liste des modules et cliquer sur le lien Latex2wims.
- Transférer les fichiers utiles :
- le fichier LateX bien préparé,
- les fichiers wims.sty et style.css qui ont pu être modifiés selon la documentation.
- Passer à l'étape suivante et marquer le fichier principal.
- Choisir le module créé à l'étape 1 pour envoyer le document transformé.
- Lancer l'exécution et vérifier le résultat
- Gérer un document composé à l'aide de Latex2wims.
Pour la gestion du document composé, cliquer, dans la liste des modules, sur le nom du module créé.
- Pour voir le document, cliquer sur Tester.
- Pour envoyer un nouveau fichier, choisir Autres fichiers, puis le repertoire où le fichier doit être envoyé .
- Les nouvelles versions des fichiers Latex, wims.sty et style.css sont envoyées dans le répertoire doc/srctex.
- Les images sont envoyées dans le répertoire doc/1/files.
- Cliquer sur Compiler latex2wims pour mouliner les fichiers.
- Pour voir le résultat, cliquer sur Tester ou Recharger le document s'il est déjà affiché.