La structure de base d'un fichier de problème (.pg) compte cinq sections :

  1. La section entête donne une description du problème.
  2. La section initialisation lance les macros qui travaillent l'arrière-plan du problème.
  3. La section déclaration définit les variables, les fonctions et les instructions du problème.
  4. La section texte contient l'énoncé du problème qui s'affiche pour les étudiants.
  5. La section réponse et solution donne la correction de la ou des réponses pour le problème et décrit une solution qui peut-être affichée aux étudiants.

À la suite du problème ci-dessous se trouvent l’illustration et la description des cinq sections de la structure de base du fichier.

Problème

## Ressource produite dans le cadre du projet Mathéma-TIC 
## (Samuel Bernard - Cégep régional de Lanaudière à Terrebonne, et
## Bruno Poellhuber - Université de Montréal),
## financé par le programme d’arrimage universités-collèges (PCUC)
## du ministère de l'Enseignement supérieur, de la Recherche et de la Science du Québec (MESRS).

## DBsubject(Calcul différentiel à une variable)
## DBchapter(Dérivées)
## DBsection(Dérivation des fonctions algébriques - Somme et différence)
## Author(Julie Tremblay)
## Traduction française : Sylvie Charbonneau

## KEYWORDS()
## Level(2)    
## Language(fr)

La section entête

Chaque ligne de cette section commence par le symbole « # », ce qui signifie qu'il s'agit d'un texte écrit en commentaire qui est ignoré par WeBWorK lors de l'exécution du problème.

La section entête comporte la description du problème faite par l'auteur. Il s'agit ici d'un problème produit dans le cadre du projet Mathéma-TIC.

Elle comporte également de l'information d'étiquetage du problème, ce qui permettra à WeBWorK de le classer.

DOCUMENT();
loadMacros(
  "PGstandard.pl",
  "MathObjects.pl",
  "PGcourse.pl",
);

La section initialisation

Le problème doit absolument commencer par la commande DOCUMENT();. C'est la première ligne qui sera exécuté par WeBWorK. Chaque ligne de commande se termine par un point-virgule (;).

La commande loadMacros lance des macros contenant certains objets (fonctions) pouvant être utilisés par l'auteur; voir la liste des macros qui existent dans WeBWorK.

Les macros utilisées ici sont suffisantes pour la plupart des problèmes, mais pour, par exemple, ajouter un graphique à votre problème, il faut lancer la macro supplémentaire PGgraphmacros.pl.

Context()->noreduce('(-x)-y','(-x)+y');

$showPartialCorrectAnswers = 1;
$a=non_zero_random(-10,10,1);
$b=non_zero_random(-10,10,1);
$c=non_zero_random(-10,10,1);

# les exposants
$n = random(5,10);
$m = random(2,$n-1);

# la fonction
$g = Formula("$a*x^($n) + $b*x^($m) + $c")->reduce;

# la dérivée
$Dg = $g->D('x')->reduce;

La section déclaration

Context()->noreduce(); donne les restrictions qui seront appliquées aux objets Formula définis dans problème. Pour plus de détails, consultez cette introduction aux contextes.

La section déclaration sert à définir les variables qui seront utilisées dans le problème. On reconnaît une variable par le symbole « $ ». Par exemple, la variable $a est une valeur aléatoirement choisie entre -10 et 10, mais excluant 0. La variable $g quant à elle, est définie comme un objet Formula (de la macro MathObjects). Cela signifie qu'on lui a également attribué plusieurs informations en parallèle, par exemple, sa fonction dérivée. D'ailleurs, c'est de cette manière qu'est définie la variable $Dg où $g fait un appel à sa dérivée dans l'expression $g->D('x')->reduce;.

TEXT(&beginproblem);
Context()->texStrings;
BEGIN_TEXT

$PAR
Dériver la fonction suivante :
\[ g(x)= $g \]
$PAR
\(g'(x)=\) \{ans_rule(20)\}

END_TEXT
Context()->normalStrings;

La section texte

La commande TEXT(&beginproblem); fournit un entête pour le problème. La commande Context()->texStrings; indique que les variables présentes dans le texte sont affichées par une expression mathématique en format LaTeX et que le tout est réinitialisé à la fin.

Tout se qui se trouve entre les balises BEGIN_TEXT et END_TEXT constitue l'énoncé visible aux étudiants. Les expressions mathématiques incluses entre les balises \( et \) ou \[ et \] sont interprétées comme un langage LaTeX.

Plusieurs variables préalablement définies par WeBWorK peuvent être utilisées, comme $PAR, qui marque le début d'un paragraphe. D'autres variables utiles pour la rédaction de votre texte sont disponibles (voir les macros disponibles).

Finalement, ce qui est contenu entre les balises \{ et \} est du code qui sera exécuté par WeBWorK à l'intérieur du texte. Ici, la commande ans_rule(20) inclut un champ de réponse dont la longueur est de 20 caractères.

ANS($Dg->cmp);

# Section solution
$axn = Formula("$a*x^($n)")->reduce;
$bxm = Formula("$b*x^($m)")->reduce;
$na = $n*$a;
$mb = $m*$b;
$n1 = $n-1;
$m1 = $m-1;

Context()->texStrings;
BEGIN_SOLUTION
\[
\begin{array}{ll}
g'(x) &= ($g)'\\
&= \left( $axn \right)' + \left( $bxm \right)' + ($c)'\\
&= $Dg + 0 \\
&= $na x^{$n1} + $mb x^{$m1}
\end{array}
\]
END_SOLUTION
Context()->normalStrings;

ENDDOCUMENT();

La section réponse et solution

La commande ANS($Dg->cmp); fixe la réponse du problème, c'est-à-dire que la réponse de l'étudiant est corrigée par comparaison avec la fonction dérivée contenue dans la variable $Dg.

Finalement, la section solution contient une démarche complète de solution visible par les étudiants lorsqu'ils cliquent sur le lien Solution :. Comme dans la section précédente, le texte de l'énoncé est écrit entre les balises BEGIN_SOLUTION et END_SOLUTION. Les variables utilisées dans cette section ont également été définies précédemment.

La commande ENDDOCUMENT(); est toujours la dernière commande du fichier.

Modifié le: mardi 18 mai 2021, 14:50