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
Qui ne continue pas à apprendre est indigne d'enseigner.  (Gaston Bachelard )
La réflexion du jour
Identifier la maladie mais ne pas pouvoir en trouver l'origine doit être frustrant pour un médecin mais c'est à tout coup angoissant pour le malade.
Activités
geek - cycliste - généalogiste - Savoir - lecteur - collectionneur - Philosophe - citoyen - marcheur - scripteur - Photographe - instituteur - enseignant en sciences - enseignant formateur - journaliste local - bénévole
Les mots clés
doc TIC * SPIP * Wikipedia * web & internet * Php * OVH * informatique * Sql * Wamp * Qwant * Firefox * LibreOffice * Thunderbird * FOAD * Buttercup * Mastodon * PeerTube * Chatons * OpenStreetMap * IrfanView * E-learning
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 , FOAD

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   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   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.

Brèves
1er juin – Les "bizarreries" continuent...

Déjà un mois que je me bagarre avec elles ! Le progrès principal est la probable identification. Il s’agit des mises à jour Apache, MySql, PHP, qui (...)

1er mai – Bizarrerie sur mon site

Depuis que le site a été restauré, il semblerait qu’il y ait eu un bug lors de la restauration, bug ne concernant que certaines informations (dont, (...)

4 mars 2019 – Fin de Spip3.0

Le support et la maintenance de SPIP 3.0 prendront fin le 30 juin 2019. Il n’y aura plus de mise à jour pour cette version, ni corrections de bugs (...)