0Familles de fonctions : paramètres et domainesin(x)paraFcréer un texte avecf(x)=fonction_de_basecode mathboutonChanger f(x)boutonparaFboutontaille-caractère18ptboutoncouleur-fond   boutonchanger fonctionparaGg(x)=a⋅f(b⋅(x-h))+kcode mathparaGcouleur   vraicase_a_cocherLe domaine de f(x) est restreint entre domaine_restreintcase_a_cocheroption changedebut_dom-10 et fin_dom10aa = -5510.01bb = -5510.01hh = -5500.01kk = -5500.01fauxinitialiser cadre GeoGebra0.2Fairedanssecondesfixercadre_GGB_OKàCréer glissière+valeurtitreminimummaximumvaleur initialepasCréer glissière+valeurtitreminimummaximumvaleur initialepasCréer glissière+valeurtitreminimummaximumvaleur initialepasCréer glissière+valeurtitreminimummaximumvaleur initialepasInsérer un saut de ligneInsérer un saut de ligneCréer une entréede contenu initialCréer un textede contenuCréer une entréede contenu initialsi l'état dechange faireCréer une case à cocheraffichantavec cochefixerdomaine_restreintàFinaliser les expressions mathématiquesPour l'objetstylevaleurCréer un titrecontenantsi clic surfairePour l'objetstylevaleurPour l'objetstylevaleurl'objetaura l'objetpour parentCréer un boutonaffichantCréer un titrecontenantfixerfonction_de_baseàCréer un titrecontenantCentrer les objets dans une page web de largeurpixelspouractions initiales sifairesinonfigGGBLe chargement du cadrede typeGeoGebraest terminéfonctionfonctionGGBavec :fonction_de_basefigGGBa=1figGGBb=1figGGBh=0figGGBk=0figGGBg(x)=a*f(b*(x-h))+kfigGGBSetColor(f,0,0,0)figGGBSetColor(g,1,0,0)figGGBP=Point(f)figGGBQ=(x(P)/b+h,g(x(P)/b+h))figGGBSetColor(P,0,0,0)figGGBSetColor(Q,1,0,0)figGGBvraifixercadre_GGB_OKàExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreinitialiser cadre GeoGebra0.2Fairedanssecondespourinitialiser cadre GeoGebra retourcadre_GGB_OKafigGGBavaleur debfigGGBbvaleur dehfigGGBhvaleur dekfigGGBkvaleur deDonner à la variable GeoGebradu cadrela valeurDonner à la variable GeoGebradu cadrela valeurDonner à la variable GeoGebradu cadrela valeurDonner à la variable GeoGebradu cadrela valeursifairepouractions en boucle domaine_restreintpasfonctionfonctionGGBavec :fonction_de_basefigGGBExécuter la commande GeoGebradans le cadrefixerdomaine_restreintàpouroption change retourinvite pour untexteavec un messageNouvelle valeur de f(x)sifairesinontemplongueur de0=quitter la fonction (en retournant)tempfixerfonction_de_baseàparaFcréer un texte avecf(x)=fonction_de_basecode mathboutonparaFfonctionfonctionGGBavec :fonction_de_basefigGGBExécuter la commande GeoGebradans le cadrel'objetaura l'objetpour parentFinaliser les expressions mathématiquesFixe le contenu deàfixertempàpourchanger fonction retourpourfonctionGGBavec : fonctionretoursifairesinondomaine_restreintf(x)=If[@1<x && x<@2,@3]créer une liste avecdebut_domvaleur defin_domvaleur defonctionsubstituer dansles valeursfixerfonction_pour_GeoGebraàcréer un texte avecf(x)=fonctionfixerfonction_pour_GeoGebraàfonction_pour_GeoGebra

var canevas, a, b, h, k, cadre_GGB_OK, paraF, paraG, case_a_cocher, debut_dom, fin_dom, fonction_de_base, bouton, fonction_pour_GeoGebra, domaine_restreint, x, fonction, temp;

/**
 * Fonction exécutée une fois, au départ
 */
function actions_initiales() {
  centrerPageExecution(0);
  createElement("h1",'Familles de fonctions : paramètres et domaine');
  fonction_de_base = 'sin(x)';
  paraF=createElement("h1",(codeMath((String('f(x)=') + String(fonction_de_base)))));
  bouton=createButton('Changer f(x)');
  assignerParentPrudent("bouton",bouton,"paraF",paraF);
  stylerObjetPrudent("bouton",bouton,'taille-caractère','18pt');
  stylerObjetPrudent("bouton",bouton,'couleur-fond','#c0c0c0');
  siClicPrudent("bouton",bouton,"changer_fonction",changer_fonction);
  paraG=createElement("h1",(codeMath('g(x)=a⋅f(b⋅(x-h))+k')));
  stylerObjetPrudent("paraG",paraG,'couleur','#cc0000');
  refreshMathJax();domaine_restreint = true;
  case_a_cocher=createCheckbox('Le domaine de f(x) est restreint entre ',domaine_restreint);
  siChangementPrudent("case_a_cocher",case_a_cocher,"option_change",option_change);
  debut_dom=createInput('-10');
  createSpan(' et ');
  fin_dom=createInput('10');
  createSpan("<br>");
  createSpan("<br>");
  a=nouvelleGlissiereValeur('a = ',-5,5,1,0.01);
  b=nouvelleGlissiereValeur('b = ',-5,5,1,0.01);
  h=nouvelleGlissiereValeur('h = ',-5,5,0,0.01);
  k=nouvelleGlissiereValeur('k = ',-5,5,0,0.01);
  cadre_GGB_OK = false;
  faireDelaiPrudent("initialiser_cadre_GeoGebra",initialiser_cadre_GeoGebra,0.2);
}

/**
 * Décrire cette fonction…
 */
function initialiser_cadre_GeoGebra() {
  if (retournerSiCadreCharge('figGGB',"GEOGEBRA")) {
    executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
    executerCommandeGeoGebraF('a=1','figGGB');
    executerCommandeGeoGebraF('b=1','figGGB');
    executerCommandeGeoGebraF('h=0','figGGB');
    executerCommandeGeoGebraF('k=0','figGGB');
    executerCommandeGeoGebraF('g(x)=a*f(b*(x-h))+k','figGGB');
    executerCommandeGeoGebraF('SetColor(f,0,0,0)','figGGB');
    executerCommandeGeoGebraF('SetColor(g,1,0,0)','figGGB');
    executerCommandeGeoGebraF('P=Point(f)','figGGB');
    executerCommandeGeoGebraF('Q=(x(P)/b+h,g(x(P)/b+h))','figGGB');
    executerCommandeGeoGebraF('SetColor(P,0,0,0)','figGGB');
    executerCommandeGeoGebraF('SetColor(Q,1,0,0)','figGGB');
    cadre_GGB_OK = true;
  } else {
    faireDelaiPrudent("initialiser_cadre_GeoGebra",initialiser_cadre_GeoGebra,0.2);
  }
}

/**
 * Fonction exécutée périodiquement, de façon répétée
 */
function actions_en_boucle() {
  if (cadre_GGB_OK) {
    fixerValeurVariableGeoGebraF('a',(valeurPrudent("a",a)),'figGGB');
    fixerValeurVariableGeoGebraF('b',(valeurPrudent("b",b)),'figGGB');
    fixerValeurVariableGeoGebraF('h',(valeurPrudent("h",h)),'figGGB');
    fixerValeurVariableGeoGebraF('k',(valeurPrudent("k",k)),'figGGB');
  }
}

/**
 * Décrire cette fonction…
 */
function option_change() {
  domaine_restreint = !domaine_restreint;
  executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
}

/**
 * Décrire cette fonction…
 */
function changer_fonction() {
  temp = window.prompt('Nouvelle valeur de f(x)');
  if (temp.length == 0) {
    return ;
  } else {
    fonction_de_base = temp;
  }
  fixeContenuPrudent("paraF",paraF,(codeMath((String('f(x)=') + String(fonction_de_base)))));
  refreshMathJax();assignerParentPrudent("bouton",bouton,"paraF",paraF);
  executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
}

/**
 * Décrire cette fonction…
 */
function fonctionGGB(fonction) {
  if (domaine_restreint) {
    fonction_pour_GeoGebra = substitution('f(x)=If[@1<x && x<@2,@3]',[valeurPrudent("debut_dom",debut_dom), valeurPrudent("fin_dom",fin_dom), fonction]);
  } else {
    fonction_pour_GeoGebra = String('f(x)=') + String(fonction);
  }
  return fonction_pour_GeoGebra;
}
Exécuter