exercices/2e/2F10-1.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, randint, choice, combinaisonListes, reduireAxPlusB, texFractionSigne, ecritureAlgebrique, ecritureAlgebriqueSauf1 } from '../../modules/outils.js'
import { context } from '../../modules/context.js'
import { propositionsQcm } from '../../modules/interactif/questionQcm.js'

export const titre = 'Reconnaître une fonction affine'
export const interactifReady = true
export const interactifType = 'qcm'
export const amcReady = true
export const amcType = 'qcmMono'

/**
 * Reconnaître une fonction affine
* @author Stéphane Guyon
* 2F20
*/
export const uuid = '90998'
export const ref = '2F10-1'
export default function Reconnaitrefonctionaffine () {
  'use strict'
  Exercice.call(this) // Héritage de la classe Exercice()
  this.titre = titre
  this.video = ''
  this.consigne = 'Déterminer, en expliquant, si les fonctions suivantes sont, ou non, des fonctions affines.'
  this.nbCols = 1
  this.nbColsCorr = 1
  this.spacing = 1
  this.spacingCorr = 1
  this.nbQuestions = 5

  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    let bonneReponse

    const listeTypeDeQuestions = combinaisonListes([1, 2, 3, 4, 5, 6, 7, 8, 9], this.nbQuestions)
    for (let i = 0, texte, texteCorr, cpt = 0, a, b, c, d, e, k = [], typesDeQuestions; i < this.nbQuestions && cpt < 50;) {
      typesDeQuestions = listeTypeDeQuestions[i]
      k = choice([-1, 1])
      a = randint(2, 9)
      a = a * k
      b = randint(1, 9)
      c = choice([2, 3, 5, 7, 10, 11, 13, 15, 17])
      b = b * k
      d = choice([2, 3, 5, 7, 10, 11, 13, 15, 17])
      e = randint(2, 9)

      switch (typesDeQuestions) {
        case 1:// Cas f(x)=ax+b
          texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${reduireAxPlusB(a, b)}$` // f(x)=ax + b
          texteCorr = ` $f(x)=${reduireAxPlusB(a, b)}$.<br>`
          texteCorr += 'On observe que la fonction $f$ s\'écrit bien sous la forme $f(x)= a x+ b$  avec $a$ et $b$ des nombres réels.<br>'
          texteCorr += `Ici, on a : $a=${a}$ et $b=${b}$.<br>`
          texteCorr += '$f$ est donc bien une fonction affine.<br>'
          bonneReponse = 'oui'
          break
        case 2:// Cas f(x)=b+a x
          if (a === 1) {
            texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${b}+x$.<br>` // f(x)=b+x
            texteCorr = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${b}+x$.<br>`
            texteCorr += ` On peut écrire $f$ sous cette forme : $f(x)=x ${ecritureAlgebrique(b)}$.<br>`
          }
          if (a === -1) {
            texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${b}-x$.<br>` // f(x)=b-x}
            texteCorr = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${b}-x$.<br>`
            texteCorr += ` On peut écrire $f$ sous cette forme : $f(x)=-x ${ecritureAlgebrique(b)}$.<br>`
          }
          if (a !== 0 & a !== 1) {
            texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${b} ${ecritureAlgebrique(a)}  x$.<br>` // f(x)=b-x}
            texteCorr = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${b} ${ecritureAlgebrique(a)}  x$.<br>` // f(x)=b-x}
            texteCorr += ` On peut écrire $f$ sous cette forme : $f(x)= ${reduireAxPlusB(a, b)}$.<br>`
          }
          texteCorr += 'On observe que la fonction $f$ s\'écrit bien sous la forme $f(x)= a x+ b$ avec $a$ et $b$ des nombres réels.<br>'
          texteCorr += `Ici, on a : $a=${a}$ et $b=${b}$.<br>`
          texteCorr += '$f$ est donc bien une fonction affine.'
          bonneReponse = 'oui'

          break
        case 3:// Cas f(x)=ax²+bx+c
          texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${a}x^{2}${ecritureAlgebrique(b)} x${ecritureAlgebrique(c)} $.` // f(x)=ax²+bx+c
          texteCorr = ` $f(x)=${a}x^{2}${ecritureAlgebriqueSauf1(b)} x${ecritureAlgebrique(c)} $.<br>`
          texteCorr += 'On observe que la fonction $f$ est du second degré, puisqu\'il y a un terme en $x^{2}$.<br>'
          texteCorr += 'Elle s\'écrit sous la forme $f(x)= a x^{2}+ bx+c$ et non pas sous la forme $ax+b$.<br>'
          texteCorr += '$f$ n\'est donc pas une fonction affine.<br>'
          bonneReponse = 'non'

          break
        case 4:
          texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=\\sqrt{${c}}x + \\sqrt{${d}}$.` // f(x)=\sqrt a x + \sqrt b
          texteCorr = ` $f(x)=\\sqrt{${c}}x + \\sqrt{${d}}$.<br>`
          texteCorr += 'On observe que la fonction $f$ s\'écrit bien sous la forme $f(x)= a x+ b$ avec $a$ et $b$ des nombres réels.<br>'
          texteCorr += `Ici, on a : $a=\\sqrt{${c}}$ et $b=\\sqrt{${d}}$.<br>`
          texteCorr += '$f$ est donc bien une fonction affine.<br>'
          bonneReponse = 'oui'

          break
        case 5:
          texte = ` Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${a}x^{2}${ecritureAlgebrique(c)} $.` // f(x)=ax²+c
          texteCorr = ` $f(x)=${a}x^{2}${ecritureAlgebrique(c)} $.<br>`
          texteCorr += 'On observe que la fonction $f$ est du second degré, puisqu\'il y a un terme en $x^{2}$.<br>'
          texteCorr += 'Elle s\'écrit sous la forme $f(x)= a x^{2}+b$ avec $a$ et $b$ des nombres réels, et non pas sous la forme $ax+b$.<br>'
          texteCorr += '$f$ n\'est donc pas une fonction affine.<br>'
          bonneReponse = 'non'

          break
        case 6:
          texte = `Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=\\dfrac{1}{${a}x${ecritureAlgebrique(b)} }$.` // f(x)=1/(ax+b)
          texteCorr = ` $f(x)=\\dfrac{1}{${a}x${ecritureAlgebrique(b)} }$.<br>`
          texteCorr += 'On observe que la fonction $f$ est une fonction rationnelle, puisqu\'il y une fraction avec des termes en $x$ au dénominateur.<br>'
          texteCorr += 'Elle ne s\'écrit  pas sous la forme $ax+b$.<br>'
          texteCorr += '$f$ n\'est donc pas une fonction affine.<br>'
          bonneReponse = 'non'

          break
        case 7:// f(x)=1/a x+1/b
          texte = `Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${texFractionSigne(1, a)}x+${texFractionSigne(1, e)} $.`
          texteCorr = `$f(x)=${texFractionSigne(1, a)}x+${texFractionSigne(1, e)}$.<br>`
          texteCorr += 'On observe que la fonction $f$ s\'écrit bien sous la forme $f(x)= a x+ b$ avec $a$ et $b$ des nombres réels.<br>'
          texteCorr += `Ici, on a : $a=${texFractionSigne(1, a)}$ et $b=${texFractionSigne(1, e)}$.<br>`
          texteCorr += '$f$ est donc bien une fonction affine.<br>'
          bonneReponse = 'oui'

          break
        case 8:// f(x)=k(ax+b)
          texte = `Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=${c}\\times (${reduireAxPlusB(a, b)}) $.`
          texteCorr = `$f(x)=${c}\\times (${reduireAxPlusB(a, b)}) $.<br>`
          texteCorr += 'On peut développer l\'expression de $f$ et on obtient alors :<br>'
          texteCorr += `$f(x)=${reduireAxPlusB(a * c, b * c)} $.<br>`
          texteCorr += 'On observe que la fonction $f$ s\'écrit bien sous la forme $f(x)= a x+ b$ avec $a$ et $b$ des nombres réels.<br>'
          texteCorr += `Ici, on a : $a=${a * c}$ et $b=${b * c}$.<br>`
          texteCorr += '$f$ est donc bien une fonction affine.<br>'
          bonneReponse = 'oui'

          break
        case 9:// f(x)= x/a+1/b
          texte = `Soit $f$ la fonction définie sur un intervalle $I$ de $\\mathbb R$, par $f(x)=\\dfrac{x}{${a}}+${texFractionSigne(1, e)} $.`
          texteCorr = `On a : $f(x)=\\dfrac{x}{${a}}+${texFractionSigne(1, e)} $.`
          texteCorr += `<br>Ce qui revient à écrire que : $f(x)=${texFractionSigne(1, a)}x+${texFractionSigne(1, e)}$.<br>`
          texteCorr += 'On observe que la fonction $f$ s\'écrit bien sous la forme $f(x)= a x+ b$ avec $a$ et $b$ des nombres réels.<br>'
          texteCorr += `Ici, on a : $a=${texFractionSigne(1, a)}$ et $b=${texFractionSigne(1, e)}$.<br>`
          texteCorr += '$f$ est donc bien une fonction affine.<br>'
          bonneReponse = 'oui'

          break
      }
      if (this.interactif || context.isAmc) {
        this.autoCorrection[i] = {}
        this.autoCorrection[i].options = { ordered: true }
        this.autoCorrection[i].enonce = `${texte}\n`
        this.autoCorrection[i].propositions = [
          {
            texte: 'oui',
            statut: bonneReponse !== 'non'
          },
          {
            texte: 'non',
            statut: bonneReponse !== 'oui'
          },
          {
            texte: 'je ne sais pas',
            statut: false
          }
        ]
        if (this.interactif) {
          texte += propositionsQcm(this, i).texte
        }
      }
      if (this.questionJamaisPosee(i, k, a, b, c, d, e)) {
        // Si la question n'a jamais été posée, on en créé une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
}