Rev 2798 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
23 | reyssat | 1 | type=first |
2 | textarea="datatrue datafalse explain" |
||
3 | |||
4 | :Une question à choix multiples avec permutation aléatoire. |
||
5 | |||
6 | QCM classique, avec un bon choix qui ne dépend pas du texte. |
||
7 | Mais les choix ainsi que leur ordre peuvent être mis en aléatoire. |
||
8 | <p> |
||
9 | Auteur du modèle : Gang Xiao <xiao@unice.fr> |
||
10 | |||
11 | :%%%%%%%%%%%%%%%%% ATTENTION %%%%%%%%%%%%%%%%%%%% |
||
12 | |||
2880 | bpr | 13 | Enlevez l'en-tête ci-dessus si vous détruisez les balises pour le modèle ! |
23 | reyssat | 14 | (Ce sont les lignes qui commencent par un ':'.) |
15 | Sinon l'exercice risque de ne pas pouvoir repasser sous Createxo. |
||
16 | |||
17 | :%%%%%%%% Paramètres d'exemples à redéfinir %%%%%%%%%%%%%%%%% |
||
18 | |||
19 | :\title{Choix multiple} |
||
20 | :\author{XIAO Gang} |
||
21 | :\email{xiao@unice.fr} |
||
22 | |||
23 | :Nombre de choix à présenter. Au plus 10. |
||
24 | Vous devez définir suffisamment de choix. Sinon l'exercice affichera |
||
25 | seulement ce qui est disponible. |
||
26 | \integer{tot=5} |
||
27 | |||
28 | :Le nombre de bons choix dans chaque exercice. Ne doit pas depasser le total. |
||
29 | \integer{givetrue=2} |
||
30 | |||
31 | :Nombre de mauvais choix "obligatoires". |
||
32 | Par exemple si ce nombre est 2, les deux premiers mauvais choix dans la |
||
33 | liste seront toujours présentés dans les exercices générés. |
||
34 | <p> Dans le doute, mettez 0. |
||
35 | \integer{minfalse=0} |
||
36 | |||
37 | :Le texte qui explique ce qu'il faut faire. |
||
38 | $embraced_randitem |
||
39 | \text{explain= |
||
40 | Voici un modèle de question à choix multiples. L'ordre des choix est |
||
41 | aléatoire, ainsi que les choix s'il y en a suffisamment qui sont définis. |
||
42 | Changez les textes, et vous aurez votre question à choix multiples. |
||
43 | <p> |
||
44 | Prenez le bon choix. |
||
45 | Quand il y a plusieurs bons choix, il suffit d'en choisir n'importe lequel. |
||
46 | } |
||
47 | |||
48 | :Le(s) bon(s) choix, un par ligne. |
||
49 | On peut en placer plusieurs (un par ligne) pour tirer au hasard. |
||
50 | Evitez les phrases trop longues ! Aucun point-virgule dans la phrase. |
||
51 | $embraced_randitem |
||
52 | \matrix{datatrue= |
||
53 | Le bon choix 1. |
||
54 | Le bon choix 2. |
||
55 | Le bon choix 3. |
||
56 | Le bon choix 4. |
||
57 | } |
||
58 | |||
59 | :Les mauvais choix, un par ligne. |
||
60 | Vous pouvez en donner plus que ce qu'il faut tirer au hasard. |
||
61 | Evitez les phrases trop longues ! Aucun point-virgule dans la phrase. |
||
62 | $embraced_randitem |
||
63 | \matrix{datafalse= |
||
64 | Le mauvais choix 1. |
||
65 | Le mauvais choix 2. |
||
66 | Le mauvais choix 3. |
||
67 | Le mauvais choix 4. |
||
68 | Le mauvais choix 5. |
||
69 | Le mauvais choix 6. |
||
70 | Le mauvais choix 7. |
||
71 | Le mauvais choix 8. |
||
72 | } |
||
73 | |||
74 | :Mots d'option : "checkbox", "split". |
||
75 | Ajouter le mot "checkbox" s'il y a plusieurs bonnes réponses et si l'élève |
||
76 | doit choisir toutes les bonnes réponses (au lieu d'une seule). Dans ce cas, |
||
77 | ajouter aussi le mot "split" si on autorise une note partielle quand seulement une |
||
78 | partie des bonnes réponses sont choisies. |
||
79 | \text{option=} |
||
80 | |||
81 | :%%%%%%%%%%%%%% Rien à modifier avant l'énoncé %%%%%%%%%%%%%%%% |
||
82 | |||
83 | \text{datatrue=wims(nonempty rows \datatrue)} |
||
84 | \text{datafalse=wims(nonempty rows \datafalse)} |
||
85 | \integer{truecnt=rows(\datatrue)} |
||
86 | \integer{falsecnt=rows(\datafalse)} |
||
87 | \integer{givetrue=\givetrue<1?1} |
||
88 | \integer{givetrue=\givetrue>\truecnt?\truecnt} |
||
89 | \integer{tot=\tot > \falsecnt+\givetrue?\falsecnt+\givetrue} |
||
90 | \integer{givetrue=\givetrue>\tot-1?\tot-1} |
||
91 | \integer{minfalse=\minfalse>\tot-\givetrue?\tot-\givetrue} |
||
92 | \text{tsh=shuffle(\truecnt)} |
||
93 | \text{true=row(\tsh,\datatrue)} |
||
94 | \if{\minfalse>0}{ |
||
95 | \text{false1=row(1..\minfalse,\datafalse);} |
||
96 | \text{false2=row(\minfalse+1..\falsecnt,\datafalse)} |
||
97 | }{ |
||
98 | \integer{minfalse=0} |
||
99 | \text{false1=} |
||
100 | \text{false2=\datafalse} |
||
101 | } |
||
102 | \text{fsh=shuffle(\falsecnt)} |
||
103 | \text{false2=row(\fsh,\false2)} |
||
104 | \text{pick=row(1..\givetrue,\true);\false1 row(1..\tot-\givetrue-\minfalse,\false2)} |
||
105 | \text{ind=wims(makelist 1 for x=1 to \givetrue),wims(makelist 0 for x=1 to \tot-\givetrue)} |
||
106 | |||
107 | \text{sh=shuffle(\tot)} |
||
108 | \text{ind=item(\sh,\ind)} |
||
109 | \text{pick=row(\sh,\pick)} |
||
110 | \text{pick=wims(embraced randitem \pick)} |
||
111 | \text{explain=wims(embraced randitem \explain)} |
||
112 | \text{ans=positionof(1,\ind)} |
||
113 | \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)} |
||
114 | \text{anstype=checkbox iswordof \option?checkbox:radio} |
||
115 | |||
116 | :%%%%%%%%%%%%% Maintenant l'énoncé en code html. %%%%%%%%%%%%%%%%%%%% |
||
117 | |||
118 | ::Vous n'avez pas besoin de modifier ceci en général. |
||
119 | |||
1362 | obado | 120 | \statement{ |
121 | \explain |
||
23 | reyssat | 122 | \for{i=1 to \tot}{ |
1362 | obado | 123 | <p class="oefreply"><label><strong>\embed{reply 1,\i}-</strong> \pick[\i;]</label></p> |
23 | reyssat | 124 | } |
125 | } |
||
126 | |||
127 | :%%%%%%%%%%%%% Rien à modifier ci-après. %%%%%%%%%%%%%%%%%5 |
||
128 | |||
129 | \answer{La réponse}{\ans;\list}{type=\anstype}{option=\option} |
||
130 |