diff --git a/qcms/CoursComplexite.oef b/qcms/CoursComplexite.oef new file mode 100644 index 0000000000000000000000000000000000000000..230137edab95483c47030ba87a689ccd29a09a26 --- /dev/null +++ b/qcms/CoursComplexite.oef @@ -0,0 +1,101 @@ +type=first +textarea="data explain" +:Remettre en bon ordre des objets donnés, glisser-déposer. + +On présente une liste d'objets, et il faut les trier selon l'ordre précisé +en les tirant vers les cases prévues avec la souris. +<p> +Pour construire un exercice avec ce modèle, il suffit d'entrer la liste +d'objets à trier et changer le texte explicatif. +<p> +Avec une petite modification, une variante de ce modèle peut accepter des +images comme objets. + +<p> +Auteur du modèle : Gang Xiao <qualite@wimsedu.info> + +:%%%%%%%%%%%%%%%%% 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{Complexité} +:\author{Viviane, Pons} +:\email{viviane.pons@lri.fr} +:\credits{} +:Nombre d'objets à trier par exercice. Jusqu'à 20. +Si ce nombre est plus petit que les objets disponibles, une partie tirée au +hasard des objets seront présentés. <p> +Si ce nombre est plus grand que les objets disponibles, il sera ramené au +nombre d'objets. +\integer{tot=4} + +:La taille des objets à glisser, en pixels, x fois y. +Pensez aux gens qui augmentent la taille de polices de leurs navigateurs ! +Ne mettez pas les cases trop petites. +\text{size=80x40} + +:La liste d'objets à réordonner +Ecrivez les objets dans le bon ordre, séparés par des virgules. +\text{data=log(n),n,nlog(n),n^2,n^3,2^n} + +:Le texte qui explique ce qu'il faut faire. + +\text{explain=Ordonner ces complexités de la plus rapide (à gauche) à la plus lente (à droite) pour n grand.} + +:Mise en aléatoire par des accolades emboitables +help +\text{accolade=item(1,1 oui, 2 non)} + +:%%%%%%%%%%%%%% Rien à modifier avant l'énoncé %%%%%%%%%%%%%%%% +\text{accolade=wims(word 1 of \accolade)} +\text{data=\accolade=1 ? wims(embraced randitem \data)} +\integer{datacnt=items(\data)} +\integer{tot=min(20,min(\tot,\datacnt))} +\if{\tot<\datacnt}{ + \text{sh=shuffle(\datacnt)} + \text{sh=wims(sort numeric items \sh[1..\tot])} + \text{data=item(\sh,\data)} +} + +\text{st=wims(makelist r x for x=1 to \tot)} +\steps{\st} + +:%%%%%%%%%%%%% Maintenant l'énoncé en code html. %%%%%%%%%%%%%%%%%%%% + +::Vous n'avez pas besoin de modifier ceci en général. +\statement{\explain +<table class="wimsnoborder"><tr> +\for{k=1 to \tot}{<td>\embed{r\k,\size}</td>} +</tr></table>} + +:%%%%%%%%%%%%% Rien à modifier ci-après. %%%%%%%%%%%%%%%%%5 + +\answer{1}{\data[1]}{type=dragfill} +\answer{2}{\data[2]}{type=dragfill} +\answer{3}{\data[3]}{type=dragfill} +\answer{4}{\data[4]}{type=dragfill} +\answer{5}{\data[5]}{type=dragfill} +\answer{6}{\data[6]}{type=dragfill} +\answer{7}{\data[7]}{type=dragfill} +\answer{8}{\data[8]}{type=dragfill} +\answer{9}{\data[9]}{type=dragfill} +\answer{10}{\data[10]}{type=dragfill} +\answer{11}{\data[11]}{type=dragfill} +\answer{12}{\data[12]}{type=dragfill} +\answer{13}{\data[13]}{type=dragfill} +\answer{14}{\data[14]}{type=dragfill} +\answer{15}{\data[15]}{type=dragfill} +\answer{16}{\data[16]}{type=dragfill} +\answer{17}{\data[17]}{type=dragfill} +\answer{18}{\data[18]}{type=dragfill} +\answer{19}{\data[19]}{type=dragfill} +\answer{20}{\data[20]}{type=dragfill} + + + + + diff --git a/qcms/CoursFonctions.oef b/qcms/CoursFonctions.oef new file mode 100644 index 0000000000000000000000000000000000000000..caaf47fc09527cb53d5f2a5a5ab32afbad62fb35 --- /dev/null +++ b/qcms/CoursFonctions.oef @@ -0,0 +1,162 @@ +type=first +textarea="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>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{Appel de fonctions} +:\author{Viviane Pons} +:\email{viviane.pons@upsud.fr} +:\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=4} + +:Le nombre de bons choix dans chaque exercice. Ne doit pas depasser le total. + +\integer{givetrue=1} + +: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. +help +\text{explain=Sélectionner un appel correct pour la fonction dont la signature est + +<pre>int max(int a, int b)</pre>} + +: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. +help +\matrix{datatrue=max(3,4) +max(-1,5) +max(6,2) +max(max(1,2),3)} + +: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. +help +\matrix{datafalse=max(2.5,3) +max("abab","bcbc") +max(5) +max(8) +max(5,4,2,9) +max(1.2,5.3) +max(4,4,"hop") +min(2,5) +Max(3,3)} + +: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 +help +\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{ +\explain +\for{i=1 to \tot}{ + <p class="oefreply"><label><strong>\embed{reply 1,\i}-</strong> \pick[\i;]</label></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} + + + + + diff --git a/qcms/CoursTableauxCreation.oef b/qcms/CoursTableauxCreation.oef new file mode 100644 index 0000000000000000000000000000000000000000..73598cf244a795178adfa90d5b74e42ced9b2e4c --- /dev/null +++ b/qcms/CoursTableauxCreation.oef @@ -0,0 +1,160 @@ +type=first +textarea="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>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{Création de tableau} +:\author{Viviane, Pons} +:\email{viviane.pons@lri.fr} +:\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=4} + +:Le nombre de bons choix dans chaque exercice. Ne doit pas depasser le total. + +\integer{givetrue=1} + +: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. +help +\text{explain=Sélectionner l'instruction correcte pour créer un tableau d'entier.} + +: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. +help +\matrix{datatrue=vector <int> tab = {1,2,4,4,2,1}; +vector <int> tab = vector <int> (3); +vector <int> a = {3,3,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. +help +\matrix{datafalse=vector tab = {1,2,4,4,2,1}; +int tab = vector <int> (3); +vector <double> tab = vector <double>(5); +vector<int> a = 5; +int a = {3,3,4};} + +: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 +help +\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{ +\explain +\for{i=1 to \tot}{ + <p class="oefreply"><label><strong>\embed{reply 1,\i}-</strong> \pick[\i;]</label></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} + + + + + + + + + +