Documentation de MathALEA

Exemple de code sur un exercice simple :


function Exercice_tables_de_multiplications(tables=[2,3,4,5,6,7,8,9]){
    //Multiplier deux nombres 
    Exercice.call(this); // Héritage de la classe Exercice()
    this.sup = tables ; // Le paramètre supplémentaire que l'utilisateur pourra modifier concerne ici le choix des tables
    this.titre = "Tables de multiplications";
    this.consigne = 'Calculer';
    this.spacing = 2;

    this.nouvelle_version = function(){
        this.liste_questions = []; // Liste de questions
        this.liste_corrections = []; // Liste de questions corrigées
        if (this.sup=='') { // Si aucune table n'est saisie
            this.sup = [2,3,4,5,6,7,8,9]
        }
        for (let i = 0, a, b, texte, texte_corr; i < this.nb_questions; i++) {
            a = choice(this.sup); // choisit un nombre au hasard parmi la liste des tables
            b = randint(2,9); // choisit un entier au hasard entre 2 et 9
            texte = '$ '+ a + ' \\times ' + b + ' = \\dotfill $';
            texte_corr = '$ '+ a + ' \\times ' + b + ' = ' + a * b +' $';
            this.liste_questions.push(texte); // ajoute le texte défini au dessus dans la liste des questions
            this.liste_corrections.push(texte_corr); // fait la même chose pour la correction
        }
        liste_de_question_to_contenu(this); // transforme la liste de question en code LaTeX (créer une liste avec le réglage des colonnes et de l'espacement)
    }
    this.besoin_formulaire_texte = ['Choix des tables','Nombres séparés par des virgules']  // crée un formulaire pour récupérer une valeur
                                                                                            // qui sera sauvegardée dans this.sup
                                                                                            // le premier argument est le label du formulaire
                                                                                            // le deuxième est le tooltip
}

On pourra améliorer le code pour s'assurer que toutes les questions sont différentes.


function Exercice_tables_d_additions(max=20){
    Exercice.call(this); // Héritage de la classe Exercice()
    this.titre = "Addition de deux entiers"
    this.consigne = 'Calculer'
    this.sup = max ; // Le paramètre accessible à l'utilisateur sera la valeur maximale
    this.spacing = 2;

    this.nouvelle_version = function(){
        this.liste_questions = []; // Liste de questions
        this.liste_corrections = []; // Liste de questions corrigées
        for (let i = 0, a, b, texte, texte_corr, cpt = 0; i < this.nb_questions && cpt<50;){    // Le compteur cpt permet de contrôler le nombre d'essais
                                                                                                // pour trouver une question jamais posée
            a = randint(2,this.sup);
            b = randint(2,this.sup);
            texte = '$ '+ tex_nombre(a) + ' + ' + tex_nombre(b) + ' = \\dotfill $';
            texte_corr = '$ '+ tex_nombre(a) + ' + ' + tex_nombre(b) + ' = ' + tex_nombre(a + b) +' $';
            if (this.liste_questions.indexOf(texte)==-1){ // Si la question n'a jamais été posée, on l'enregistre 
                this.liste_questions.push(texte);
                this.liste_corrections.push(texte_corr);
                i++; // et on passe à la question suivante
            }
            cpt++; // on incrémente le nombre d'essais
        }
        liste_de_question_to_contenu(this);
    }
    this.besoin_formulaire_numerique = ['Valeur maximale',99999]; // Label du formulaire numérique et valeur maximale
}

Avec ce deuxième exemple, on est sûr de ne jamais avoir deux questions identiques. Pour éviter d'avoir une boucle for qui ne s'arrête jamais, on se contente de 50 essais. Il se peut donc que le nombre de questions souhaitées ne soit pas atteint.

contact@coopmaths.fr @CoopMaths_fr