Technologie de l'information et de la communication
Un peu geek mais surtout un dinosaure, de ceux qui ont soudé les composants de leur première machine, flashé la mémoire et publié dans Hebdogiciel.
La citation du jour
La lacheté tend à projeter sur les autres la responsabilité qu'on refuse.  (Julio Cortazar )
La réflexion du jour
Il ne suffit pas d'avoir quelque chose à dire pour écrire. Encore faut-il avoir le sentiment d'être lu.
Activités
bénévole - geek - cycliste (cyclotouriste) - généalogiste - photographe - collectionneur - écrivain - enseignant - Diverses informations
Les mots clés
doc TIC * courriels * réseaux sociaux * chats * navigateurs * web & internet * informatique * Formation à distance * Chatons * E-learning * Logiciel libre * vidéoconférence * Sécurité * courrielleurs * fil d’informations * messagerie instantanée
Lorand

Site personnel de Roland Bouat. Pour les curieux : Lorand est un anagramme de Roland.

Plugin QCM pour Spip

Ordre aléatoire des propositions d’une seule question

Mots clés : geek , SPIP , Formation à distance

vendredi 22 mai 2020 , par Roland


Ce modèle affiche donc une question et les propositions (dont la réponse attendue) qui lui sont affectées dans un ordre aléatoire.

Présentation

Pour qu’une question d’un QCM QCM Questionnaire à Choix Multiple soit efficace, il est évident que la bonne réponse ne doit pas se trouver toujours à la même place (dans le fichier utilisé ici, c’est toujours la première proposition). De plus, il est intéressant de ne pas présenter toujours le même ordre dans les propositions afin que la recherche de la bonne réponse soit un petit peu plus formatrice.

Les informations de programmation sont contenues dans le code Spip SPIP Système de Publication Pour l’Internet (CMS utilisé pour le présent site). Voir Wiipedia SPIP ci-dessous.

Le code

<!-- DEBUT qcm_une_question_alea (modèle) -->
[(#REM) Réalisation : Roland Bouat]
[(#REM) Mise à jour : 17/06/2020]
[(#REM) 
	Ce modèle affiche une question et, en ordre aléatoire, 
	les propositions qui lui sont affectées (y compris la réponse attendue).
	La bonne réponse est indiquée.
	L'affichage des boutons radio est fonctionnel mais aucune réponse n'est ni vérifiée ni enregistrée.
]
[(#REM) Déclarations)]
 
[(#REM) Nom du fichier contenant les questions.]
#SET{source,#ENV{nom_fichier}} 
 
[(#REM) le n° de la ligne demandée dans le fichier.]
#SET{numligne,#ENV{id}} 
 
[(#REM) le nombre de propositions à afficher.]
#SET{nbprop,#ENV{nbprop}}
 
[(#REM) n° de la question tel qu'il est enregistré dans le fichier (colonne n°0)]
#SET{numqenreg,0} 
 
[(#REM) la question au format texte (colonne n°1).]
#SET{q,"Question ?"} 
 
[(#REM) la réponse attendue au format texte (colonne n°2).]
#SET{exact, "La réponse attendue"} 
 
[(#REM) La proposition pX (tirage aléatoire dans colonne n°2 à n°7).]
#SET{p1, ""} 
#SET{p2, ""} 
#SET{p3, ""} 
#SET{p4, ""} 
#SET{p5, ""} 
#SET{p6, ""} 
 
[(#REM) le n° du cours... peut-être (colonne n°8).]
#SET{cours, ""} 
 
[(#REM) le n° de l'article contenant le cours... peut-être (colonne n°9).]
#SET{article,""} 
 
[(#REM) Suite au tirage aléatoire, la proposition contenant la réponse attendue.]
#SET{pexact,""} 
 
[(#REM) 
	Récupération des données associées à la question retenue (question, propositions...)
	Pas d'affichage.
]
<BOUCLE_laquestion(DATA){source csv,#CHEMIN{csv/#GET{source}}}{cle=#GET{numligne}}>
 
	#SET{numqenreg,#VALEUR{0}}[(#REM) n° de la question]
	#SET{q,#VALEUR{1}}[(#REM)question (texte)]
	#SET{exact, #VALEUR{2}}[(#REM) réponse attendue (texte).]
 
	[(#REM) Boucle de tirage aléatoire.]
	[(#REM) ----------------------------------------------]
	<BOUCLE_tirage(DATA){enum 1,#GET{nbprop}}{par hasard}>
 
		[(#REM) Aux propositions Px, on affecte une proposition au hasard (numéro).
			La réponse attendue est en troisième colonne (n°2) et est  incluse aux propositions.
		] 
		#SET{p#_tirage:COMPTEUR_BOUCLE, #_laquestion:VALEUR{#_tirage:VALEUR|plus{1}}}
 
		[(#REM) Repérage de la proposition contenant la bonne réponse.
			(On aurait aussi pu comparer plus tard...) ]
		[(#_tirage:VALEUR|=={2}|?{#SET{pexact,p#_tirage:COMPTEUR_BOUCLE}})]
	</BOUCLE_tirage>
	[(#REM) ----------------------------------------------]
 
	#SET{cours, #VALEUR{8}}[(#REM) n° du cours... peut-être.]
	#SET{article,#VALEUR{9}}[(#REM) n° de l'article contenant le cours... peut-être.]
 
</BOUCLE_laquestion>
 
	[(#REM) Affichage des données associées à la question retenue (question, propositions...]
 
	[(#REM) Nom du fichier utilisé.]
	<hr />Fichier utilisé : #GET{source}<br />
 
	[(#REM) N° de la question tel qu'il est enregistré dans le fichier 
		et position dans le fichier (n° de ligne).]
	Question enregistrée sous le n° #GET{numqenreg} &nbsp; (enregistrée dans le fichier à la ligne n° #GET{numligne})<br />
	<hr />
 
	[(#REM) Affichage de la question (texte).]
	<strong>#GET{q}</strong> <br />
 
	[(#REM) Affichage des propositions avec bouton radio.]
	[<label for="choix1"><input type="radio" id="choix1" name="reponse" value="P1">(#GET{p1})</label>]
	[<label for="choix2"><input type="radio" id="choix2" name="reponse" value="P2">(#GET{p2})</label>]
	[<label for="choix3"><input type="radio" id="choix3" name="reponse" value="P3">(#GET{p3})</label>]
	[<label for="choix4"><input type="radio" id="choix4" name="reponse" value="P4">(#GET{p4})</label>]
	[<label for="choix5"><input type="radio" id="choix5" name="reponse" value="P5">(#GET{p5})</label>]
	[<label for="choix6"><input type="radio" id="choix6" name="reponse" value="P6">(#GET{p6})</label>]
 
	<hr />
 
	[(#REM) Affichage de la bonne réponse.]
	La réponse attendue est : <strong>#GET{exact}</strong>
	<br />
 
	[(#REM) Référence du cours et de l'article correspondant]
	[Pour s'informer, consulter le <a href="#URL_ARTICLE{#GET{article}}">cours n° (#GET{cours})</a>.<hr />]
</B_laquestion>
	<hr />(La ligne demandée n'existe pas encore dans le fichier.)<hr />
<//B_laquestion>
 
<!-- FIN qcm_une_question_alea (modèle) -->

Exemples

Voici deux fois le même ensemble question/propositions pour illustration avec la question n°3. Balise utilisée : <qcm_une_question_alea1|nom_fichier=qcmdemo.csv|nbpropo=6>

Première édition

Fichier utilisé : qcmdemo.csv
Question enregistrée sous le n° 1  (enregistrée dans le fichier à la ligne n° 1)

Que signifie QCM ?

La réponse attendue est : Questionnaire à Choix Multiple
Pour s'informer, consulter le cours n° 1.
Deuxième édition

Fichier utilisé : qcmdemo.csv
Question enregistrée sous le n° 1  (enregistrée dans le fichier à la ligne n° 1)

Que signifie QCM ?

La réponse attendue est : Questionnaire à Choix Multiple
Pour s'informer, consulter le cours n° 1.

Limiter le nombre de propositions

Balise utilisée : <qcm_une_question_alea1|nom_fichier=qcmdemo.csv|nbprop=4>


Fichier utilisé : qcmdemo.csv
Question enregistrée sous le n° 1  (enregistrée dans le fichier à la ligne n° 1)

Que signifie QCM ?

La réponse attendue est : Questionnaire à Choix Multiple
Pour s'informer, consulter le cours n° 1.
Propositions absentes

Balise utilisée : <qcm_une_question_alea5|nom_fichier=qcmdemo.csv|nbprop=6>


Fichier utilisé : qcmdemo.csv
Question enregistrée sous le n° 4  (enregistrée dans le fichier à la ligne n° 5)

Combien un QCM propose-t-il de réponses ?

La réponse attendue est : Nombre libre mais souvent une.

MAJ : 18/06/2020


Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.