Subversion Repositories wimsdev

Rev

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

type=select
textarea="data explain"
iEdit="explain"

:Sélectionner les objets selon leur catégorie.

On présente une liste d'objets et il faut marquer ceux qui possèdent une certaine propriété
selon la demande de l'exercice.<br/>
Pour construire un exercice avec ce modèle, il suffit de donner la liste d'objets et leurs propriétés. La question 
portera sur une propriété tirée au hasard parmi les propriétés des objets.<br/>
<p class="wims_credits">Auteur du modèle : <a href="mailto:qualite@wimsedu.info">Gang Xiao</a></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{Sélectionner par catégorie}
:\author{XIAO, Gang}
:\email{qualite@wimsedu.info}
:\credits{}

:Nombre d'objets à marquer par exercice. Jusqu'à 100.
Il faut avoir défini suffisamment d'objets dans les données principales !
\integer{tot=12}

:Le nombre minimal de bons objets à marquer. Au moins 1.
\integer{mingood=1}

:Le nombre minimal de mauvais objets à ne pas marquer. Au moins 1.
\integer{minbad=4}

:Liste de propriétés. La propriété à marquer sera tirée au hasard.
\text{prop=française,italienne,allemande}

:Données principales.
<p>Écrire les objets à classer, puis leur catégorie, séparés par une virgule (un seul objet suivi de sa catégorie par ligne).</p>
L'objet peut être un mot ou une phrase (la virgule servant à séparer les objets, si la phrase doit contenir des virgules, 
les remplacer par le code html de la virgule. Voir alors "Option de présentation" pour faire 
apparaitre un objet par ligne). Il vaut mieux définir beaucoup de données pour chaque propriété.
\matrix{data=
Fabien Barthez,francaise
Grégory Coupet,francaise
Eric Abidal,francaise
William Gallas,francaise
Willy Sagnol,francaise
Lilian Thuram,francaise
Pascal Chimbonda,francaise
Mickaël Silvestre,francaise
Claude Makélélé,francaise
Patrick Vieira,francaise
Florent Malouda,francaise
Zinedine Zidane,francaise
Sylvain Wiltord,francaise
Franck Ribéry,francaise
Vikash Dhorasoo,francaise
Sidney Govou,francaise
Thierry Henry,francaise
David Trézéguet,francaise
Louis Saha,francaise

Gianluigi Buffon,italienne
Morgan De Sanctis,italienne
Angelo Peruzzi,italienne
Christian Abbiati,italienne
Marco Amelia,italienne
Flavio Roma,italienne
Gianluca Zambrotta,italienne
Alessandro Nesta,italienne
Fabio Cannavaro,italienne
Fabio Grosso,italienne
Cristian Zaccardo,italienne
Marco Materazzi,italienne
Andrea Barzagli,italienne
Massimo Oddo,italienne
Mauro Camoranesi,italienne
Andrea Pirlo,italienne
Gennaro Gattuso,italienne
Francesco Totti,italienne
Daniele de Rossi,italienne
Aimo Diana,italienne
Simone Barone,italienne
Manuele Blasi,italienne
Simone Perrotta,italienne
Alberto Gilardino,italienne
Luca Toni,italienne
Alessandro Del Piero,italienne
Vicenzo Iaquinta,italienne
Christian Vieri,italienne
Antonio Cassano,italienne
Cristiano Lucarelli,italienne
Filippo Inzaghi,italienne

Jens Lehmann,allemande
Oliver Kahn,allemande
Timo Hildebrand,allemande
Philipp Lahm,allemande
Arne Friedrich,allemande
Robert Huth,allemande
Jens Nowotny,allemande
Per Mertesacker,allemande
Christoph Metzelder,allemande
Marcell Jansen,allemande
Bernd Schneider,allemande
Sebastian Kehl,allemande
Torsten Frings,allemande
Michael Ballack,allemande
Tim Borowski,allemande
Bastian Schweinsteiger,allemande
David Odonkor,allemande
Thomas Hitzlsperger,allemande
Miroslav Klose,allemande
Lukas Podolski,allemande
Gerald Asamoah,allemande
Mike Hanke,allemande
Oliver Neuville,allemande
}

:Mots d'option.
Ajoutez le mot <span class="tt wims_code_words">split</span> à la définition si vous voulez donner une note partielle pour des réponses partiellement correctes.
\text{option=split}

:Options de présentation.
Par défaut, les objets apparaissent séparés par une virgule. Ajoutez ici le mot "liste" 
si vous voulez que les objets apparaissent les uns en dessous des autres 
comme une liste html à puces. 
\text{presentation=}

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

:%%%%%%%%%%%%%% Rien à modifier avant l'énoncé %%%%%%%%%%%%%%%%

\text{prop=randitem(\prop)}

\text{data=wims(nonempty rows \data)}
\text{good=wims(select \data where column 2 issametext \prop)}
\text{bad=wims(select \data where column 2 notsametext \prop)}
\text{good=shuffle(wims(nonempty item \good[;1]))}
\text{bad=shuffle(wims(nonempty item \bad[;1]))}
\integer{goodcnt=items(\good)}
\integer{badcnt=items(\bad)}
\integer{tot=min(\tot,\goodcnt+\badcnt)}
\integer{mingood=min(\mingood,\tot-1)}
\integer{minbad=min(\minbad,\tot-\mingood-1)}
\integer{pickgood=randint(min(\mingood,\goodcnt)..min(\tot-\minbad,\goodcnt))}
\integer{pickbad=min(\tot-\pickgood,\badcnt)}
\integer{tot=\pickgood+\pickbad}
\text{ind=wims(makelist 1 for x=1 to \pickgood),wims(makelist 0 for x=1 to \pickbad)}
\text{all=item(1..\pickgood,\good),item(1..\pickbad,\bad)}
\text{list=wims(values x for x=1 to \tot)}
\text{sh=shuffle(\list)}
\text{all=item(\sh,\all)}
\text{ind=item(\sh,\ind)}
\text{tomark=positionof(1,\ind)}

:%% Choix de la presentation : sous forme lineaire par defaut, ou sous forme de liste à puces.
\if{liste iswordof \presentation}
{
  \text{pre=<ul>}
  \text{separatorL=<li>}
  \text{separatorR=</li>}
  \text{post=</ul>}
}{
  \text{pre=<p>}
  \text{separatorL=<span>}
  \text{separatorR=</span>}
  \text{post=</p>}
}

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

:Le texte pour expliquer ce qu'il faut faire.
Pour désigner la propriété sur laquelle porte la question, écrire tel quel <span class="tt">\prop</span> dans le texte de l'énoncé. 
$embraced_randitem
\text{explain=
Parmi les joueurs ci-dessous qui ont participé à la coupe du monde de football 2006, marquez ceux qui sont dans l'équipe \prop.
}

:%% Calculs à ne pas modifier
\text{accolade=wims(word 1 of \accolade)}

\text{explain=\accolade=1 ?wims(embraced randitem \explain)}

::On n'a pas besoin de modifier l'énoncé directement en général.

\statement{
  <p>\explain</p>
  \pre
  \for{k=1 to \tot-1}{\separatorL \embed{r1,\k},\separatorR }
  \separatorL \embed{r1,\tot}.\separatorR
  \post
}

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

\answer{Le marquage}{\tomark;\all}{type=mark}{option=\option}