import Exercice from '../Exercice.js'
import { mathalea2d } from '../../modules/2dGeneralites.js'
import { listeQuestionsToContenu, randint, combinaisonListes, choice, reduirePolynomeDegre3, reduireAxPlusB, sp } from '../../modules/outils.js'
import { propositionsQcm } from '../../modules/interactif/questionQcm.js'
import { droiteParPointEtPente, point, repere, tracePoint, texteParPosition, labelPoint } from '../../modules/2d.js'
export const interactifReady = true
export const interactifType = 'qcm'
export const amcReady = true
export const amcType = 'qcmMult'
export const titre = 'Vocabulaire et notations des fonctions'
export const dateDePublication = '29/09/2022'
/**
* Répndre à des questions sur les fonctions.
*
* @author Gilles Mora
* 3F10-1
*/
export const uuid = '4daef'
export const ref = '3F10-3'
export default function VocabulaireNotationsFonctions2 () {
Exercice.call(this) // Héritage de la classe Exercice()
this.sup = 5
this.consigne = ''
this.spacing = 1.5
this.nbQuestions = 3
this.nbQuestionsModifiable = true
this.nouvelleVersion = function () {
this.listeQuestions = []
this.listeCorrections = []
this.autoCorrection = []
let typesDeQuestionsDisponibles
const r = repere({
xMin: -5,
xMax: 5,
yMin: -4,
yMax: 4,
thickHauteur: 0.1,
axeXStyle: '->',
axeYStyle: '->'
})
const o = texteParPosition('O', -0.3, -0.3, 'milieu', 'black', 1)
switch (this.sup) {
case 1: // vocabulaire1
typesDeQuestionsDisponibles = ['Traduire une égalité par une phrase']
break
case 2: // vocabulaire2
typesDeQuestionsDisponibles = ['Traduire une phrase par une égalité']
break
case 3: // graphique
typesDeQuestionsDisponibles = ['Interprétation graphique']
break
case 4: // avec x
typesDeQuestionsDisponibles = ['Expression littérale']
break
case 5: // mélange
typesDeQuestionsDisponibles = ['Traduire une égalité par une phrase', 'Traduire une phrase par une égalité', 'Interprétation graphique', 'Expression littérale']
break
}
const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
// const nom = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
// const PointC = choice(['A', 'B', 'C', 'D', 'M', 'R', 'S', 'T'])
for (let i = 0, choix, texte, texteCorr, x, y, A, d, t, fonction1, nomF = [], PointC = [], listeFonction = [], cpt = 0; i < this.nbQuestions && cpt < 50;) {
switch (listeTypeDeQuestions[i]) {
case 'Traduire une égalité par une phrase':
x = randint(-9, 9, [0, 1, -1])
y = randint(-9, 9, x)
if (this.interactif) { choix = randint(0, 5) } else { choix = randint(0, 3) }
if (choix === 0) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Traduire l'égalité $${nomF}(${x})=${y}$ par une phrase contenant le mot «${sp(1)}image${sp(1)}».`
if (this.interactif) { texte += '<br>Une ou plusieurs réponses correctes.' }
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
$\\bullet$ L'image de $${x}$ par la fonction $${nomF}$ est $${y}$.<br>
$\\bullet$ $${x}$ a pour image $${y}$ par la focntion $${nomF}$.
`
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `L'image de $${x}$ par la fonction $${nomF}$ est $${y}$.`,
statut: true
},
{
texte: `L'image de $${y}$ par la fonction $${nomF}$ est $${x}$.`,
statut: false
},
{
texte: ` $${x}$ est l'image $${y}$ par la fonction $${nomF}$.`,
statut: false
},
{
texte: `$${x}$ a pour image $${y}$ par la focntion $${nomF}$.`,
statut: true
}
]
}
if (choix === 1) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Traduire l'égalité $${nomF}(${x})=${y}$ par une phrase contenant le mot «${sp(1)}image${sp(1)}».`
if (this.interactif) { texte += '<br>Une ou plusieurs réponses correctes.' }
if (this.interactif) {
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
Par la fonction $${nomF}$, $${x}$ a pour image $${y}$.
`
} else {
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
$\\bullet$ L'image de $${x}$ par la fonction $${nomF}$ est $${y}$.<br>
$\\bullet$ $${x}$ a pour image $${y}$ par la focntion $${nomF}$.}
`
}
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `Par la fonction $${nomF}$, $${x}$ a pour image $${y}$.`,
statut: true
},
{
texte: `L'image de $${y}$ par la fonction $${nomF}$ est $${x}$.`,
statut: false
},
{
texte: `Par la fonction $${nomF}$, $${x}$ est l'image $${y}$.`,
statut: false
},
{
texte: `$${y}$ a pour image $${x}$ par la focntion $${nomF}$.`,
statut: false
}
]
}
if (choix === 2) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Traduire l'égalité $${nomF}(${x})=${y}$ par une phrase contenant le mot «${sp(1)}antécédent${sp(1)}».`
if (this.interactif) { texte += '<br>Une ou plusieurs réponses correctes.' }
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
$\\bullet$ Un antécédent de $${y}$ par la fonction $${nomF}$ est $${x}$.<br>
$\\bullet$ $${x}$ est un antécédent de $${y}$ par la fonction $${nomF}$.
`
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `Un antécédent de $${x}$ par la fonction $${nomF}$ est $${y}$.`,
statut: false
},
{
texte: `Un antécédent de $${y}$ par la fonction $${nomF}$ est $${x}$.`,
statut: true
},
{
texte: ` $${x}$ est un antécédent de $${y}$ par la fonction $${nomF}$.`,
statut: true
},
{
texte: `$${x}$ a pour antécédent $${y}$ par la focntion $${nomF}$.`,
statut: false
}
]
}
if (choix === 3) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Traduire l'égalité $${nomF}(${x})=${y}$ par une phrase contenant le mot «${sp(1)}antécédent${sp(1)}».`
if (this.interactif) { texte += '<br>Une ou plusieurs réponses correctes.' }
if (this.interactif) {
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
Par la fonction $${nomF}$, $${y}$ a pour antécédent $${x}$.
`
} else {
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
$\\bullet$ Un antécédent de $${y}$ par la fonction $${nomF}$ est $${x}$.<br>
$\\bullet$ $${x}$ est un antécédent de $${y}$ par la focntion $${nomF}$.
`
}
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `Par la fonction $${nomF}$, $${y}$ a pour antécédent $${x}$.`,
statut: true
},
{
texte: `Un antécédent de $${x}$ par la fonction $${nomF}$ est $${y}$.`,
statut: false
},
{
texte: `Par la fonction $${nomF}$, $${x}$ a pour antécédent $${y}$.`,
statut: false
},
{
texte: `$${y}$ est un antécédent de $${x}$ par la fonction $${nomF}$.`,
statut: false
}
]
}
if (choix === 4) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Traduire l'égalité $${nomF}(${x})=${y}$ par une phrase.`
texte += '<br>Une ou plusieurs réponses correctes.'
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
$\\bullet$ Un antécédent de $${y}$ par la fonction $${nomF}$ est $${x}$.<br>
$\\bullet$ L'image de $${x}$ par la fonction $${nomF}$ est $${y}$.<br>
$\\bullet$ $${y}$ est l'image de $${x}$ par la fonction $${nomF}$.
`
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `Un antécédent de $${y}$ par la fonction $${nomF}$ est $${x}$.`,
statut: true
},
{
texte: `L'image de $${x}$ par la fonction $${nomF}$ est $${y}$.`,
statut: true
},
{
texte: ` $${y}$ est l'image de $${x}$ par la fonction $${nomF}$.`,
statut: true
},
{
texte: `$${x}$ a pour antécédent $${y}$ par la focntion $${nomF}$.`,
statut: false
}
]
}
if (choix === 5) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Traduire l'égalité $${nomF}(${x})=${y}$ par une phrase.`
texte += '<br>Une ou plusieurs réponses correctes.'
texteCorr = `L'égalité $${nomF}(${x})=${y}$ se traduit par : <br>
$${x}$ a pour image $${y}$ par la fonction $${nomF}$.
`
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${y}$ est un antécédent de $${x}$ par la fonction $${nomF}$.`,
statut: false
},
{
texte: ` $${x}$ a pour image $${y}$ par la fonction $${nomF}$.`,
statut: true
},
{
texte: ` $${y}$ a pour image $${x}$ par la fonction $${nomF}$.`,
statut: false
},
{
texte: `$${x}$ a pour antécédent $${y}$ par la focntion $${nomF}$.`,
statut: false
}
]
}
break
case 'Traduire une phrase par une égalité':
x = randint(-9, 9, [0, 1, -1])
y = randint(-9, 9, x)
choix = randint(0, 4)
if (choix === 0) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `L'image de $${x}$ par la fonction $${nomF}$ est $${y}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 1) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` $${x}$ est un antécédent de $${y}$ par la fonction $${nomF}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 2) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` $${y}$ a pour antécédent $${x}$ par la fonction $${nomF}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 3) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` $${y}$ est l'image de $${x}$ par la fonction $${nomF}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 4) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` Un antécédent de $${y}$ par la fonction $${nomF}$ est $${x}$.<br>
Traduire cette phrase par une égalité.`
}
texteCorr = `L'égalité traduisant cette phrase est : $${nomF}(${x})=${y}$
`
this.autoCorrection[i] = { options: { ordered: false, horizontal: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(${x})=${y}$`,
statut: true
},
{
texte: `$${nomF}(${y})=${x}$`,
statut: false
}
]
break
case 'Interprétation graphique':
x = randint(-4, 4, [0, 1, -1])
y = randint(-3, 3, x)
choix = randint(0, 3)
if (choix === 0) {
PointC = choice(['A', 'B', 'C', 'D', 'M', 'R', 'S', 'T'])
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
A = point(x, y, `${PointC}`)
A.positionLabel = 'above'
d = droiteParPointEtPente(A, randint(-3, 3, 0) / 2, '', 'red')
d.epaisseur = 3
A.epaisseur = 3
t = tracePoint(A, 'blue')
t.epaisseur = 2
texte = `La fonction $${nomF}$ est représentée par la droite rouge ci-dessous.<br>
Le point $${PointC}$ est sur la droite. Donner l'égalité correspondante.<br>`
texte += mathalea2d({ xmin: -5.1, ymin: -4.1, xmax: 5.1, ymax: 4.1, pixelsParCm: 30, scale: 0.7 }, r, d, o, t, labelPoint(A))
texteCorr = `L'égalité traduisant que $${PointC}$ est sur la courbe représentant $${nomF}$ est : $${nomF}(${x})=${y}$
`
if (this.interactif) {
this.autoCorrection[i] = { options: { ordered: false, horizontal: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(${x})=${y}$`,
statut: true
},
{
texte: `$${nomF}(${y})=${x}$`,
statut: false
}
]
}
}
if (choix === 1) {
PointC = choice(['A', 'B', 'C', 'D', 'M', 'R', 'S', 'T'])
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Le point $${PointC}(${x}\\;;\\;${y})$ est un point de la courbe représentant la fonction $${nomF}$.<br>
Donner l'égalité correspondante.`
texteCorr = `L'égalité traduisant que $${PointC}$ est sur la courbe représentant $${nomF}$ est : $${nomF}(${x})=${y}$.
`
if (this.interactif) {
this.autoCorrection[i] = { options: { ordered: false, horizontal: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(${x})=${y}$`,
statut: true
},
{
texte: `$${nomF}(${y})=${x}$`,
statut: false
}
]
}
}
if (choix === 2) {
PointC = choice(['A', 'B', 'C', 'D', 'M', 'R', 'S', 'T'])
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` La courbe représentant la fonction $${nomF}$ passe par le point $${PointC}(${x}\\;;\\;${y})$.<br>
Donner l'égalité correspondante. `
texteCorr = `L'égalité traduisant que $${PointC}$ est sur la courbe représentant $${nomF}$ est : $${nomF}(${x})=${y}$
`
if (this.interactif) {
this.autoCorrection[i] = { options: { ordered: false, horizontal: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(${x})=${y}$`,
statut: true
},
{
texte: `$${nomF}(${y})=${x}$`,
statut: false
}
]
}
}
if (choix === 3) {
PointC = choice(['A', 'B', 'C', 'D', 'M', 'R', 'S', 'T'])
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `
Les coordonnées du point $${PointC}$ de la courbe représentant $${nomF}$ vérifient $${nomF}(${x})=${y}$.<br>
Quelles sont les coordonnées du point $${PointC}$ ? `
texteCorr = `L'égalité $${nomF}(${x})=${y}$ permet d'affirmer que le point $${PointC}(${x}\\;;\\;${y})$ est sur la courbe représentant $${nomF}$.
`
if (this.interactif) {
this.autoCorrection[i] = { options: { ordered: false, horizontal: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${PointC}(${x}\\;;\\;${y})$`,
statut: true
},
{
texte: `$${PointC}(${y};${x})$`,
statut: false
}
]
}
}
break
case 'Expression littérale':
x = randint(-9, 9, [0, 1, -1])
y = randint(-9, 9, x)
listeFonction = [`${x}x`, `${x}x^2`, `${reduireAxPlusB(x, y)}`, `${reduirePolynomeDegre3(0, x, 0, y)}`]
fonction1 = choice(listeFonction)
if (!this.interactif) {
choix = randint(0, 4)
if (choix === 0) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `$x$ a pour image $${fonction1}$ par la fonction $${nomF}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 1) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` L'image de $x$ par la fonction $${nomF}$ est $${fonction1}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 2) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Par la fonction $${nomF}$, $${fonction1}$ est l'image de $x$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 3) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` $${fonction1}$ est l'image de $x$ par la fonction $${nomF}$.<br>
Traduire cette phrase par une égalité.`
}
if (choix === 4) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` La fonction $${nomF}$ associe, à tout nombre $x$, le nombre $${fonction1}$.<br>
Traduire cette phrase par une égalité.`
}
texteCorr = `L'égalité traduisant cette phrase est : $${nomF}(x)=${fonction1}.$
`
} else {
choix = randint(0, 2)
if (choix === 0) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `$x$ a pour image $${fonction1}$ par la fonction $${nomF}$.<br>
Alors :`
texte += '<br>Une ou plusieurs réponses correctes.'
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(x)=${fonction1}$`,
statut: true
},
{
texte: `$x$ est l'image de $${fonction1}$ par la fonction $${nomF}$`,
statut: false
},
{
texte: `Par la fonction $${nomF}$, $${fonction1}$ a pour image $x$. `,
statut: false
}
]
texteCorr = `$x$ a pour image $${fonction1}$ par la fonction $${nomF}$.<br>
Alors :<br>
$${nomF}(x)=${fonction1}$
`
}
if (choix === 1) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = ` L'image de $x$ par la fonction $${nomF}$ est $${fonction1}$.<br>
Alors :`
texte += '<br>Une ou plusieurs réponses correctes.'
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(${fonction1})=x$`,
statut: false
},
{
texte: `$x$ a pour image $${fonction1}$ par la fonction $${nomF}$`,
statut: true
},
{
texte: `Par la fonction $${nomF}$, $x$ est l'image de $${fonction1}$. `,
statut: false
}
]
texteCorr = ` L'image de $x$ par la fonction $${nomF}$ est $${fonction1}$.<br>
Alors :<br>
$x$ a pour image $${fonction1}$ par la fonction $${nomF}$.
`
}
if (choix === 2) {
nomF = choice(['f', 'g', 'h', 'u', 'v', 'w', 'p', 'm', 't', 'k'])
texte = `Par la fonction $${nomF}$, $${fonction1}$ est l'image de $x$.<br>
Alors :`
texte += '<br>Une ou plusieurs réponses correctes.'
this.autoCorrection[i] = { options: { ordered: false, vertical: true } }
this.autoCorrection[i].enonce = `${texte}\n`
this.autoCorrection[i].propositions = [
{
texte: `$${nomF}(x)=${fonction1}$`,
statut: true
},
{
texte: `$x$ a pour image $${fonction1}$ par la fonction $${nomF}$`,
statut: true
},
{
texte: `L'image de $${fonction1}$ par la fonction $${nomF}$ est $x$`,
statut: false
}
]
texteCorr = `Par la fonction $${nomF}$, $${fonction1}$ est l'image de $x$.<br>
Alors :<br>
$\\bullet$ $${nomF}(x)=${fonction1}$, <br>
$\\bullet$ $x$ a pour image $${fonction1}$ par la fonction $${nomF}$.
`
}
}
break
}
if (this.interactif) {
texte += propositionsQcm(this, i).texte
}
if (this.questionJamaisPosee(i, x, y)) {
this.listeQuestions.push(texte)
this.listeCorrections.push(texteCorr)
i++
}
cpt++
}
listeQuestionsToContenu(this)
}
this.besoinFormulaireNumerique = [
'Choix des questions',
5,
'1 : Traduire une égalité par une phrase\n2 : Traduire une phrase par une égalité\n3 : Interprétation graphique\n4 : Expression littérale\n5 : Mélange'
]
}