Subversion Repositories wimsdev

Rev

Rev 11375 | Rev 12208 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

type=question first
textarea="datatrue datafalse explain"
asis="datatrue datafalse explain"

:Une question à choix multiples avec permutation aléatoire des choix.

Voici un modèle de question à choix multiples. L'ordre des choix est aléatoire,
ainsi que les choix s'il y en a suffisamment qui sont définis.
Quand il y a plusieurs bons choix, il suffit d'en choisir un, peu importe lequel.

<p>Le texte n'est pas aléatoire. Un autre modèle <b>QCM à la suite</b>
permet d'avoir aussi un texte aléatoire.</p>


$image_help

$math_help

<p>Auteur du modèle : Gang Xiao <qualite@wimsedu.info></p>

:%%%%%%%%%%%%%%%%%      ATTENTION      %%%%%%%%%%%%%%%%%%%%

Enlevez l'en-tête ci-dessus si vous détruisez les balises pour le modèle !
(Ce sont les lignes qui commencent par un ':'.)
Sinon l'exercice risque de ne pas pouvoir repasser sous Createxo.

:%%%%%%%% Paramètres d'exemples à redéfinir %%%%%%%%%%%%%%%%%

:\title{Choix multiple}
:\author{XIAO, Gang}
:\email{qualite@wimsedu.info}
:\credits{}

:Nombre de choix à présenter. Au plus 10.
Vous devez définir suffisamment de choix. Sinon l'exercice affichera seulement ce qui est disponible.
\integer{tot=5}

:Le nombre de bons choix dans chaque exercice. Ne doit pas depasser le total.
\integer{givetrue=2}

:Nombre de mauvais choix "obligatoires".
Par exemple si ce nombre est 2, les deux premiers mauvais choix dans la liste seront toujours présentés dans les exercices générés.
<p> Dans le doute, mettez 0.</p>
\integer{minfalse=0}

:Le texte qui explique ce qu'il faut faire.
$embraced_randitem
\text{explain=Voici un modèle de question à choix multiples. L'ordre des choix est aléatoire, ainsi que les choix s'il y en a suffisamment qui sont définis.
Changez les textes, et vous aurez votre question à choix multiples.<br/>
Prenez le bon choix.<br/>
Quand il y a plusieurs bons choix, il suffit d'en choisir un, peu importe lequel.
}

:Le(s) bon(s) choix, un par ligne.
On peut en placer plusieurs (un par ligne) pour tirer au hasard.
Evitez les phrases trop longues ! Aucun point-virgule dans la phrase.

$embraced_randitem
\matrix{datatrue=Bon choix n°1
Bon choix n°2
Bon choix n°3
Bon choix n°4
}

:Les mauvais choix, un par ligne.
Vous pouvez en donner plus que ce qu'il faut tirer au hasard.
Evitez les phrases trop longues ! Aucun point-virgule dans la phrase.
$embraced_randitem
\matrix{datafalse=Mauvais choix n°1
Mauvais choix n°2
Mauvais choix n°3
Mauvais choix n°4
Mauvais choix n°5
Mauvais choix n°6
Mauvais choix n°7
Mauvais choix n°8
}

:Mots d'option :  <span class="tt wims_code_words">checkbox</span>,  <span class="tt wims_code_words">split</span>.
Ajouter le mot  <span class="tt wims_code_words">checkbox</span> s'il y a plusieurs bonnes réponses et si l'élève doit choisir toutes les bonnes réponses (au lieu d'une seule).
Dans ce cas, ajouter aussi le mot  <span class="tt wims_code_words">split</span> si on autorise une note partielle quand seulement une partie des bonnes réponses sont choisies.
\text{option=}

:Feedback Général
Ce texte s'affichera après la réponse de l'apprenant, qu'elle soit juste ou fausse.
\text{feedback_general=}

:Feedback en cas de bonne réponse
Ce texte s'affichera après la réponse de l'apprenant, en cas de bonne reponse ou de reponse partielle.
\text{feedback_bon=}

:Feedback en cas de mauvaise réponse
Ce texte s'affichera après la réponse de l'apprenant, s'il a coché au moins une mauvaise réponse.
\text{feedback_mauvais=}

:Mise en aléatoire par des accolades emboitables
$embraced_randitem
\text{accolade=item(1,1 oui,
2 non)}


:%%%%%%%%%%%%%% Rien à modifier avant l'énoncé %%%%%%%%%%%%%%%%
\text{accolade=wims(word 1 of \accolade)}

\text{empty=}
\if{\feedback_general != \empty}{
  \text{feedback_general=<p class="feedback">\feedback_general</p>}
}
\if{\feedback_bon != \empty}{
  \text{feedback_bon=<p class="feedback good_answer">\feedback_bon</p>}
}
\if{\feedback_mauvais != \empty}{
  \text{feedback_mauvais=<p class="feedback bad_answer">\feedback_mauvais</p>}
}

\text{datatrue=wims(nonempty rows \datatrue)}
\text{datafalse=wims(nonempty rows \datafalse)}
\integer{truecnt=rows(\datatrue)}
\integer{falsecnt=rows(\datafalse)}
\integer{givetrue=\givetrue<1?1}
\integer{givetrue=\givetrue>\truecnt?\truecnt}
\integer{tot=\tot > \falsecnt+\givetrue?\falsecnt+\givetrue}
\integer{givetrue=\givetrue>\tot-1?\tot-1}
\integer{minfalse=\minfalse>\tot-\givetrue?\tot-\givetrue}
\text{tsh=shuffle(\truecnt)}
\text{true=row(\tsh,\datatrue)}
\if{\minfalse>0}{
 \text{false1=row(1..\minfalse,\datafalse);}
 \text{false2=row(\minfalse+1..\falsecnt,\datafalse)}
}{
 \integer{minfalse=0}
 \text{false1=}
 \text{false2=\datafalse}
}
\text{fsh=shuffle(\falsecnt)}
\text{false2=row(\fsh,\false2)}
\text{pick=row(1..\givetrue,\true);\false1 row(1..\tot-\givetrue-\minfalse,\false2)}
\text{ind=wims(makelist 1 for x=1 to \givetrue),wims(makelist 0 for x=1 to \tot-\givetrue)}

\text{sh=shuffle(\tot)}
\text{ind=item(\sh,\ind)}
\text{pick=row(\sh,\pick)}
\text{pick=\accolade=1 ? wims(embraced randitem \pick)}
\text{explain=\accolade=1 ? wims(embraced randitem \explain)}
\text{ans=positionof(1,\ind)}
\text{list=item(1..\tot,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)}
\text{anstype=checkbox iswordof \option?checkbox:radio}

:%%%%%%%%%%%%% Maintenant l'énoncé en code html. %%%%%%%%%%%%%%%%%%%%

::Vous n'avez pas besoin de modifier ceci en général.

\statement{
  <div class="oef_explain">\explain</div>
  \for{i=1 to \tot}
  {<p class="oefreply">\embed{reply 1,\i, \list[\i] : \pick[\i;]}</p>}
}

:%%%%%%%%%%%%% Rien à modifier ci-après. %%%%%%%%%%%%%%%%%5

\answer{La réponse}{\ans;\list}{type=\anstype}{option=\option}

\feedback{1=1}{\feedback_general}
\feedback{\reply1 isitemof \list[\ans]}{\feedback_bon}
\feedback{\reply1 notitemof \list[\ans]}{\feedback_mauvais}