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
Je n'ai jamais vu la dignité de l'homme que dans la sincérité de ses passions.  (Pierre Drieu La Rochelle )
La réflexion du jour
Inconsciement, nos souvenirs des événements passés sont affectés par notre subjectivité. La réalité dont nous nous souvenons n'est donc pratiquement jamais la réalité objective.
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.

Modèle : "qcm_une_question_alea"

Mots clés : geek , SPIP , FOAD

vendredi 22 mai 2020 , par Roland


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.

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.

Les informations de programmation sont contenues dans le code Spip   ci-dessous.

[(#REM) <!-- DEBUT qcm_une_question_alea --> ]
[(#REM) Réalisation : Roland Bouat]
[(#REM) Mise à jour : 16/05/2020]
[(#REM) 
	Ce squelette exploite le qcm associé à la FOAD "Devenir rédacteur du site".
	Il est envisagé de paramétrer le fichier de référence pour l'adapter à n'importe quel cours.
 
	Il 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)]
 
#SET{source,"qcmredacteur.csv"} [(#REM) Nom du fichier contenant les questions.]
#SET{numligne,#ENV{id}} [(#REM) le n° de la ligne demandée dans le fichier.]
#SET{numqenreg,0} [(#REM) le n° de la question enregistrée dans le fichier.]
#SET{numqenreg,0} [(#REM) n° de la question tel qu'il est enregistré dans le fichier (colonne n°0)]
#SET{q,"Question ?"} [(#REM) la question au format texte (colonne n°1).]
#SET{exact, "La réponse attendue"} [(#REM) la réponse attendue au format texte (colonne n°2).]
#SET{p1, 0} [(#REM) La proposition n°1 (tirage aléatoire dans colonne n°2 à n°7).]
#SET{p2, 0} [(#REM) La proposition n°2 (tirage aléatoire dans colonne n°2 à n°7).]
#SET{p3, 0} [(#REM) La proposition n°3 (tirage aléatoire dans colonne n°2 à n°7).]
#SET{p4, 0} [(#REM) La proposition n°4 (tirage aléatoire dans colonne n°2 à n°7).]
#SET{p5, 0} [(#REM) La proposition n°5 (tirage aléatoire dans colonne n°2 à n°7).]
#SET{p6, 0} [(#REM) La proposition n°6 (tirage aléatoire dans colonne n°2 à n°7).]
#SET{cours, 0} [(#REM) le n° du cours... peut-être (colonne n°8).]
#SET{article,0} [(#REM) le n° de l'article contenant le cours... peut-être (colonne n°9).]
#SET{pexact,"P0"} [(#REM) Suite au tirage aléatoire, la proposition contenant la réponse attendue.]
 
[(#REM) Récupération des données associées à la question retenue (question, propositions...]
[(#REM) 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){liste 2,3,4,5,6,7}{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}}
 
		[(#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>
	<hr />(La ligne demandée n'existe pas encore dans le fichier.)<hr />
<//B_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.]
<input type="radio" id="choix1" name="reponse" value="P1"><label for="choix1">P1 #GET{p1}</label><br />
<input type="radio" id="choix2" name="reponse" value="P2"><label for="choix2">P2 #GET{p2}</label><br />
<input type="radio" id="choix3" name="reponse" value="P3"><label for="choix3">P3 #GET{p3}</label><br />
<input type="radio" id="choix4" name="reponse" value="P4"><label for="choix4">P4 #GET{p4}</label><br />
<input type="radio" id="choix5" name="reponse" value="P5"><label for="choix5">P5 #GET{p5}</label><br />
<input type="radio" id="choix6" name="reponse" value="P6"><label for="choix6">P6 #GET{p6}</label><br />
 
<hr />
 
[(#REM) Affichage de la bonne réponse.]
La réponse attendue est la proposition #GET{pexact} : #GET{exact}<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 />
 
[(#REM) <!-- FIN qcm_une_question_alea --> ]

Voici deux fois le même ensemble question/propositions pour illustration avec la question n°3.

Première édition

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

Spip est un "semi langage" mais quel est le langage utilisé par Spip ?







La réponse attendue est la proposition p2: PHP
Pour s'informer, consulter le cours n° 1.
Deuxième édition

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

Spip est un "semi langage" mais quel est le langage utilisé par Spip ?







La réponse attendue est la proposition p6: PHP
Pour s'informer, consulter le cours n° 1.

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