TD 1
Tous les champs corrigés apparaîtront alors en vert. Indication ... on remplace la
valeur du trou courant par la valeur du champ caché id_i_cor. document.
part of the document
Devoir sur table - 15/01/2008 - Durée : 2h00
Les documents sont autorisés. Vous rendrez votre travail sous format numérique (format .doc), en envoyant un fichier attaché à HYPERLINK "mailto:Olivier.Kraif@u-grenoble3.fr"Olivier.Kraif@u-grenoble3.fr. L'enseignant accusera réception avant votre sortie de la salle d'examen.
Pour chaque exercice, vous donnerez d'abord une explication en français de votre code (structures de données, algorithmes) et argumenterez vos choix. Soyez concis ! Vous donnerez ensuite le code Javascript comportant des commentaires appropriés, faisant apparaître les différentes étapes de vos traitements. Les barèmes sont donnés à titre indicatif et pourront être modifiés à la correction.
Si des bogues persistent ne vous acharnez pas : un code légèrement bogué pourra recevoir néanmoins une excellente note.
Tous les exercices ci-dessous sont liés au générateur d'activité vu en cours, dont le code est fourni ci-joint. Le code modifié sera également renvoyé à l'enseignant comme fichier attaché.
Exercice 1 : Affichage des corrections (10 points)
Faites en sorte que pour les activités dont la propriété feedback est égale à ''score+correction'', on affiche, dans chaque champ, les réponses attendues. Tous les champs corrigés apparaîtront alors en vert. Indication : s'inspirer des codes des fonctions pour le calcul du score.
Dans sequence.js (1 point)
// donne les réponses correctes de l'activité en fonction de son type
function correctActivity(id,type) {
if (type=="gapfill") {
return correctGapfill(id+"_gapfill");
}
if (type="questions") {
return correctGapfill(id+"_questions");
}
return "";
}
Dans gapfill.js (4 points)
// Remplit les trous avec les bonnes réponses pour l'activité d'identifiant id
// Entrées : id = string représentant l'identifiant de l'activité
// Sortie : pas de valeur de retour - affichage des réponses
function correctGapfill(id) {
var givenAnswer;
var correctAnswer;
var i;
var nbGaps; // enregistre le nombre de trous dans l'activité
var gapfill=document.getElementById(id);
var score=0;
// si non trouvé, on renvoie -1
if (! gapfill ) {
return -1;
}
i=0;
// on parcours les mots escamotés en testant l'existance de l'identifiant id_+i
while (document.getElementById(id+"_"+i)) {
nbGaps++;
// on remplace la valeur du trou courant par la valeur du champ caché id_i_cor
document.getElementById(id+"_"+i).value=document.getElementById(id+"_"+i+"_cor").value;
// on modifie la couleur d'affichage du texte
document.getElementById(id+"_"+i).style.color="green";
i++;
}
}
Dans questions.js (5 points)
// Affiche les bonnes réponses pour le questionnaire d'identifiant id
// Entrées : id = string représentant l'identifiant du questionnaire
// Sortie : pas de valeur de retour, affichage des réponses
function correctQuestions(id) {
var i;
var j;
var k;
var questionnaire=document.getElementById(id);
var score=0;
var nbQuestions;
// si non trouvé, on renvoie -1
if (! questionnaire ) {
return;
}
// on récupère la liste des objets div des question
var questionDivs=questionnaire.getElementsByTagName("div");
nbQuestions=questionDivs.length;
for (i=0;i