Javascript
Transcription
Javascript
Javascript et Programmation Table des matières I programmer en javascript 1 généralités sur javascript 1.1 principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Les références internationales . . . . . . . . . . . . . . . . . . . . . 1.3 Pour tester le code source et voir le résultat en ligne . . . . . . 1.4 écrire et lire un document en javascript . . . . . . . . . . . . . . . 1.5 quelles sont les règles d’écriture d’un programme en javascript ? 1.5.1 balise de début et de fin de programme . . . . . . . . . . . 1.5.2 symbole de commentaires . . . . . . . . . . . . . . . . . . . 1.5.3 séparateur d’instructions . . . . . . . . . . . . . . . . . . . 1.5.4 entrée des données . . . . . . . . . . . . . . . . . . . . . . . 1.5.5 sortie des données . . . . . . . . . . . . . . . . . . . . . . . . 1.6 traitement des données . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.1 différents types de données . . . . . . . . . . . . . . . . . . 1.6.2 calcul avec des nombres et fonctions mathématiques . . . 1.6.3 variables et affectations . . . . . . . . . . . . . . . . . . . . 1.6.4 instructions conditionnelles . . . . . . . . . . . . . . . . . . 1.6.5 boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.6 opérateurs logiques et égalité . . . . . . . . . . . . . . . . . 1.6.7 fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7 exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7.1 entrées sorties . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7.2 instructions conditionnelles . . . . . . . . . . . . . . . . . . 1.7.3 boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II 2 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . applications Mathématiques 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 26 29 32 34 35 36 39 41 43 fonctions affines 2.1 image d’un nombre . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 placer des points dans un repère . . . . . . . . . . . . . . . . . . 2.3 trouver la formule d’une fonction connaissant deux nombres et 2.4 signe de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 résolution d’équation ou d’inéquations . . . . . . . . . . . . . . . . . . . . 45 46 52 53 54 55 3 géométrie analytique dans le plan 3.1 distance entre deux points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 coordonnées du milieu d’un segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 59 4 statistiques 4.1 angle diagramme circulaire 4.2 hauteur histogramme . . . 4.3 moyenne sans coefficients . 4.4 moyenne avec coefficients . 4.5 écart type sans coefficients 4.6 écart type avec coefficients 61 62 63 64 65 66 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . leurs images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 fonctions généralités 5.1 image d’un nombre et tableau de valeurs 5.2 construction de points d’une courbe . . . 5.3 recherche d’extremum . . . . . . . . . . . . 5.4 recherche de valeur d’annulation . . . . . 5.5 recherche de solutions d’équations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 70 71 72 73 74 Première partie programmer en javascript 5 Chapitre 1 généralités sur javascript 7 1.1 principe général Un ordinateur contient un fichier de nom "ma_page_web.html " (avec l’extension .html obligatoirement) Fichier dans le PC ma_page_web.html Dans ce fichier est écrit du "code source" dans le langage "javascript " ( ce fichier est ouvert en écriture et édité avec un simple éditeur de texte comme "Blocknotes" sous window ou "gedit" sous linux) ouvert en écriture avec Block-notes ma_page_web.html Affiche le Code source javascript de ma page Web Un "navigateur web" (firefox par exemple) peut ouvrir ce fichier en lecture, il interprète le code source et affiche alors la page web correspondante ouvert en lecture avec Firefox ma_page_web.html Affiche le Contenu interprété de ma page Web Bilan : ✞ ☎ ✝ ✞ ✆ Il suffit d’apprendre à écrire un fichier en javascript pour obtenir une page Web qui éxécute le programme ✝ ☎ ✆ 1.2 Les références internationales http://www.w3schools.com/ 1.3 Pour tester le code source et voir le résultat en ligne http://www.cssdesk.com/ http://site.math.free.fr/site_2010/pre_envoi_programme_js.php 1.4 écrire et lire un document en javascript Règle 1 : (où écrire le programme en javascript ?) On écrit usuellement le programme en javascript dans un fichier informatique, avec un simple éditeur de texte et on le nomme avec une extension .htm afin qu’il puisse être interprété par un navigateur internet (firefox, ...) ♦ par exemple : mon_programme.htm remarque : un traitement de texte (comme Word ) ne convient pas, il suffit d’un éditeur de texte (comme Bloc-notes) ⋆ essayez : créer un document vierge avec un éditeur et le sauver sous le nom mon_programme.htm sur le bureau, double-cliquer sur l’icône correspondant au programme apparue sur le bureau le navigateur (Firefox par exemple) affiche alors une page blanche 1.5 quelles sont les règles d’écriture d’un programme en javascript ? 1.5.1 balise de début et de fin de programme Règle 2 : (balise de début et de fin de programme) le programme commence par la balise : <script> il se termine par la balise : </script> <script> </script> ⋆ essayez : recopier ces deux lignes dans l’éditeur de texte puis sauvegarder, relancer la page ouverte par le navigateur avec la touche F5 ( il ne se passe rien ) 1.5.2 symbole de commentaires Règle 3 : (symbole de commentaires) Il est conseillé de commenter certaines étapes du programme pour plus de clarté. Les commentaires sur une ligne sont toujours précédés de // (double slash) Les commentaires sur plusieurs lignes commencent par /* et finissent par */ <script> // ceci est un commentaire sur une ligne /* ceci est un commentaire sur deux lignes */ </script> ⋆ essayez : recopier les nouvelles lignes dans l’éditeur puis sauvegarder, relancer la page ouverte par le navigateur avec la touche F5 ( il ne se passe toujours rien ) 1.5.3 séparateur d’instructions Règle 4 : (séparateur) les instructions du programme sont séparées d’un point virgule ( ; ) et on passe (non obligatoirement) à la ligne entre chaque instruction <script> instruction 1 ; instruction 2 ; ... </script> remarque : il n’est pas obligatoire de passer à la ligne entre chaque instruction, mais, il vaut mieux le faire par soucis de clarté ( "indenter" un programme le rend encore plus clair ) 1.5.4 entrée des données Il est possible d’utiliser les mémoires d’un ordinateur pour y stocker des données (comme un buffet dans lequel on range des affaires). Voici comment, en javascript, on demande à l’utilisateur ce qu’il veut mémoriser Règle 5 : (entrées) pour demander à l’utilisateur d’entrer une donnée on utilise la méthode prompt() Il s’affiche sur l’écran de l’utilisateur une fenêtre qui l’invite à entrer une donnée <script> x = prompt() ; // affecte à la variable x la valeur entrée par l’utilisateur x = prompt("x= ") ; // idem avec le message "x= " dans la fenêtre d’invite </script> remarques : le message "x= " est écrit entre guillemets la valeur entrée par l’utilisateur peut-être un nombre, une chaine de caractères, ... (vu plus loin) ⋆ essayez : obtenez ces lignes dans l’éditeur, sauvegardez puis relancer la page du navigateur (F5), entrer une "valeur", puis validez. ⇒ il existe maintenant, dans la mémoire de l’ordinateur, une "case mémoire" appelée "x" qui contient la valeur entrée 1.5.5 sortie des données Pour afficher à l’écran, le contenu d’une "case mémoire", ou/et un message, on procède ainsi : Règle 6 : (sortie dans une fenêtre) pour afficher à l’utilisateur une donnée on peut utiliser la méthode alert(). Il s’affiche sur l’écran une fenêtre qui indique ce qui est précisé entre parenthèses <script> alert(x) ; // la valeur de x s’affiche dans une fenêtre alert("x= " + x) ; // idem avec le message : "x=" suivi de la valeur de x </script> remarque : on utilise des guillemets pour le message et le symbole + pour "mettre au bout" (concaténer) la valeur de x ⋆ essayez : <script> x = prompt("veuillez entrer une donnée : ") ; alert("vous avez entré la donnée : " + x) ; </script> obtenez ces lignes dans l’éditeur, sauvegardez puis relancer la page du navigateur (F5) Règle 7 : (sortie dans une page) pour afficher à l’utilisateur une donnée on peut utiliser la méthode document.write() la donnée est affichée directement dans "la page web" <script> document.write(x) ; // la valeur de x s’affiche dans la page web document.write("x= " + x) ; // idem avec le message : "x=" suivi de la valeur de x </script> ⋆ essayez : <script> x = prompt("veuillez entrer une donnée ") ; document.write("vous avez entré la donnée suivante : " + x) ; </script> obtenez ces lignes dans l’éditeur, sauvegardez puis relancer la page du navigateur (F5) 1.6 traitement des données L’utilité d’un programme est d’obtenir automatiquement des résultats (ceux qui nous intéressent) à partir de données entrées Il faut en général traiter les données entrées pour obtenir en sortie le résultat attendu Entrées ⇒ Traitement des données ⇒ Sorties 1.6.1 différents types de données On considérera essentiellement les types de données suivants : "nombres réels" : 3, 3.14, 0.0008, ... "chaines de caractères" : "coucou", "x=", ... sur lesquels on effectuera des "opérations" "booléens" : true, false "tableaux" : [1,2,3,4], ["un","coucou","x="], ... 1.6.2 calcul avec des nombres et fonctions mathématiques Règle 8 : (calculs) on utilise le point pour la virgule : 3.14 à la place de 3,14 on utilise * pour la multiplication : 3*4 donne 12 javascript respecte l’ordre des opérations et les parenthèses : 3+2*(5+1) donne 15 ⋆ essayez : obtenez les lignes suivantes dans l’éditeur, sauvegardez, relancer la page du navigateur (F5) <script> alert(3*4) ; alert(10 + 2*(5+1)) ; alert(1/3) ; alert(3*0.3) ; </script> Remarque : dans certain cas, javascript donne un résultat approché, comme pour : 3*0.3 = 0.9 qui n’est pa égal à 0.8999999999999999 soit une erreur "infime" de 0.0000000000000001 = 10−16 (il y a moyen de palier à ce manque en utilisant des arrondis vus plus tard ) Il est aussi possible d’utiliser des fonction mathématiques pré-définies dont voici une liste ( non exhaustive) Règle 9 : (fonctions Mathématiques) cosinus Math.cos() sinus Math.sin() tangente Math.tan() xy Math.pow(x,y) nombre aléatoire dans [0; 1] Math.random() ⋆ essayez : obtenez les lignes suivantes dans l’éditeur, sauvegardez, relancer la page du navigateur (F5) <script> alert(Math.cos(3.14)) ; alert(Math.sin(3.14)) ; alert(Math.tan(3.14)) ; alert(Math.pow(2,3)) ; alert(Math.random()) ; </script> Remarque : Quand les variables sont des chaines de caractère ( "bon" et "jour" ) , javascript utilise le symbole + pour concaténer les deux chaines de caractère "bon"+"jour" donnera "bonjour" "1"+"2" donnera "12" 1+2 donnera 3 "bon"+ 2 donnera "bon2" car le 2 sera interprété comme "2" à cause du "bon" Il faudra parfois tenir compte de cette interprétation de javascript surtout lors d’entrées de données avec la méthode prompt(), en effet, prompt() interprète les données comme des chaines de caractères et non comme des nombres. (voir ci dessous) 1.6.3 variables et affectations variables simples les données entrées puis traitées sont stockées dans des "cases mémoire" de l’ordinateur. On peut nommer ces cases mémoire pour y "stocker" ou y "récupérer" des données. Par exemple, on déclare la variable "longueur" en faisant précéder son nom du mot clé "var" puis on peut stocker la valeur 10 dans la mémoire "longueur" en écrivant tout simplement : longueur=10 ; On dit que l’on a affecté à la variable "longueur" la valeur 10 ⋆ essayez : obtenez les lignes suivantes dans l’éditeur, sauvegardez, relancer la page du navigateur (F5) <script> var longueur ; longueur = 10 ; alert(longueur) ; </script> puis <script> var longueur ; longueur = prompt("quelle est la longueur ? ") ; alert(longueur) ; </script> puis <script> var longueur ; var largeur ; var aire_rectangle ; longueur = prompt("quelle est la longueur ? ") ; largeur = prompt("quelle est la largeur ? ") ; aire_rectangle = longueur*largeur ; alert("l’aire vaut : " + aire_rectangle) ; </script> On peut ainsi "dialoguer" avec l’ordinateur et lui faire effectuer des calculs à notre place. ⋆⋆ le javascript est "orienté" web, ainsi, toute valeur entrée avec la méthode alert() sera considérée comme une chaine de caractère, ce qui a une incidence si on fait une seule addition, essayez par exemple : <script> var longueur ; var largeur ; var somme ; longueur = prompt("quelle est la longueur ? ") ; largeur = prompt("quelle est la largeur ? ") ; somme = longueur+largeur ; alert(" ceci n’est pas la somme : " + somme) ; </script> le résultat n’est pas la somme des deux valeurs entrées mais la "concaténation" des deux chaines entrées : 10 + 2 = 12 mais "10" + "2" = "102" car les entrées 10 et 2 sont vues comme des chaines de caractères et non comme des nombres si vous entrez fifi puis riri qu’obtiendrez vous en sortie ? pour transformer les chaines de caractères entrées en nombres, il suffit d’utiliser la méthode Number() ⋆⋆ essayez : <script> var longueur ; var largeur ; var somme ; longueur = prompt("quelle est la longueur ? ") ; longueur = Number(longueur) ; // pour transformer la chaine en un nombre largeur = prompt("quelle est la largeur ? ") ; largeur = Number(largeur) ; // pour transformer la chaine en un nombre somme = longueur+largeur ; alert(" ceci est la somme : " + somme) ; </script> Remarque : on ne traite ainsi que les valeurs entrées avec la méthode prompt() Il est utile de donner un nom "explicite" aux variables, il est ainsi plus facile de corriger le programme en cas d’erreur (longueur est plus explicite que lgr ) cependant, tous les noms de variables ne sont pas acceptés, par exemple "alert", prompt", ... sont des "mots réservés" un nom de variable commencera toujours par une lettre, et ne contiendra que des chiffres ou des lettres avec éventuellement le symbole _ (tiret du bas) pour remplacer les espaces qui ne sont pas acceptés non plus. Règle 10 : (variables et affectation) (1) toute donnée entrée avec la méthode prompt() est vue comme une chaine de caractère, si on veut calculer avec, on la transforme en un nombre avec la méthode Number() (2) pour déclarer une variable, on utilise le mot clé "var" suivi du nom de la variable (3) le nom de la variable commence par une lettre, ne contient que des chiffres ou des lettres et pas d’espaces (remplacés par le tiret _) (4) pour affecter la variable ma_variable de la valeur ma_valeur, il suffit d’écrire : ma_variable = ma_valeur ; ⋆ essayez : obtenez un programme où l’on rentre la longueur, la largeur et la hauteur d’un pavé droit et qui donne en sortie le volume de ce pavé ( rappel : V = l × L × h) <script> à vous </script> tableau Il est parfois nécessaire de stocker un certain nombre (inconnu) de valeurs, il faudrait donc déclarer un nombre inconnu de variables. Pour se faire, l’utilisation d’un tableau rend la chose aisée. voici une schématisation de la variable de type tableau pour la variable de nom, mon_tableau : rang 0 1 2 3 contenu "coucou" 32.46 "chien" accès au contenu mon_tableau[0] mon_tableau[1] mon_tableau[2] mon_tableau[3] pour le tableau ci dessus : il a pour nom : mon_tableau il a pour longueur : 4 (car il a 4 "cases") il contient dans sa première case la valeur : "coucou" ( chaine de caractères) sa deuxième case contient la valeur : 32.46 sa troisième case est vide on écrit, mon_tableau[0], pour accéder au contenu de la première case, ... ✞ ☎ ✞ 1. comment déclarer un tableau ? : var mon_tableau = new Array() ou bien var mon_tableau = [ ✝ ✆ ✝ on ajoute "= new Array()" ou bien "= [ ]" au nom choisi pour le tableau pour signaler que cette variables est de type tableau 2. comment entrer des valeurs dans un tableau ? : mon_tableau[0] = "homme" (ceci met "homme" dans la première case du tableau) mon_tableau[1] = "femme" (ceci met "femme" dans la seconde case du tableau) mon_tableau[2] = 20,42 (ceci met 20,42 dans la troisième case du tableau) ... 3. comment accéder aux valeurs stockées dans les cases du tableau ? alert(mon_tableau[0]) (ceci affichera dans une boite de dialogue, ce que contient la première case du tableau) document.write(mon_tableau[1]) (ceci écrira dans une page web ce que contient la seconde case du tableau) x = mon_tableau[2] (ceci affectera à la variable de nom x la valeur contenue dans la troisième case du tableau) ⋆ essayez : voici comment stocker un certain nombre de valeurs dans un tableau <script> var mon_tableau = [ ] ; mon_tableau[0] = prompt("première donnée à stocker ? :" ) ; mon_tableau[1] = prompt("deuxième donnée à stocker ? :" ) ; mon_tableau[2] = prompt("troisième donnée à stocker ? :" ) ; alert("voici les données mémorisées") ; alert(mon_tableau[0]) ; alert(mon_tableau[1]) ; alert(mon_tableau[2]) ; </script> obtenez les lignes précédentes dans l’éditeur, sauvegardez, relancer la page du navigateur (F5) Règle 11 : (tableau) ✞ ☎ ✝ ✆ (1) on déclare un tableau comme ceci : var mon_tableau = new Array() ✞ ☎ ou bien var mon_tableau = [ ] ✝ ✆ (2) on accède au contenu de la première case par : mon_tableau[0] on accède au contenu de la seconde case par : mon_tableau[1] etc ... (3) on met dans la première case du tableau la valeur "coucou" ainsi : mon_tableau[0] = "coucou" remarques : la première case du tableau a pour indice 0 et non pas 1 si la dernière case du tableau a pour indice 10 alors la longueur du tableau est 11 1.6.4 instructions conditionnelles si (condition) alors {action} Il est parfois utilise de ne réaliser une certaine action que si une condition est réalisée ( si "il pleut" alors "prendre le parapluie" ), on parle alors d’instruction conditionnelle ⋆⋆ essayez : <script> var nombre_inconnu = 10 ; var nombre_entre ; nombre_entre = prompt("quel est le nombre inconnu ? ") ; if(nombre_entre > nombre_inconnu) { alert("trop grand (F5 pour rejouer)") } ; if(nombre_entre < nombre_inconnu) { alert("trop petit (F5 pour rejouer) ") } ; if(nombre_entre == nombre_inconnu){ alert("c’est gagné")} ; </script> ✞ ☎ on remarque la syntaxe : si(condition){action} ✝ ✆ avec les parenthèses () pour la condition et les accolades {} pour l’action de plus, pour tester l’égalité on utilise == (double égal) et non pas = qui est réservé à l’affectation si (condition) alors {action1} sinon {action2} on peut aussi, si besoin est, préciser l’action à effectuer si la condition n’est pas réalisée ⋆⋆ essayez : <script> var age_limite = 18 ; var age_entre ; age_entre = prompt("quel est vôtre âge ? ") ; if(age_entre <= age_limite) { alert("bienvenue") } else {alert("vous êtes trop âgé ") } </script> Règle 12 : (instruction conditionnelle) (1) pour effectuer une l’ instruction ✞ 1 uniquement si la condition ☎ 1 est réalisée on utilise la syntaxe suivante : si(condition){instruction 1} ✝ ✆ (2) pour effectuer une l’ instruction ✞ 1 si la condition 1 est réalisée et l’instruction 2 sinon ☎ on utilise la syntaxe suivante : si(condition 1){instruction 1 1} else {instruction 2} ✝ ✆ ⋆ essayez : obtenez un programme où l’on rentre un nombre et qui donne en sortie le signe de ce nombre <script> (positif strict, négatif strict, nul ) à vous </script> 1.6.5 boucles Il est souvent utile de répéter une instruction ou une suite d’instructions tans qu’une certaine condition n’est pas réalisée, on utilise alors une "boucle" il existe plusieurs variantes dont les deux principales ci dessous boucle for ✞ ☎ La syntaxe est la suivante : for( i = a ; i <= n ; i++){instruction1} ✝ ✆ pour i allant de a jusqu’à n, répéter l’instruction 1 ( i + + signifie que i augmente de 1 à chaque boucle) ⋆ essayez : <script> var n ; n = prompt("veuillez entrer un nombre entier n = ") ; for(i=0 ; i<=10 ; i++ ){ document.write(n*i + "<br>") } </script> le : + "<br>" est pour effectuer un passage à la ligne ( essayez de l’enlever pour constater ce qui se passe) boucle while ✞ ☎ La syntaxe est la suivante : while(condition 1){instruction 1} ✝ ✆ Tans que la condition 1 est vérifiée, on effectue l’instruction 1 ⋆ essayez : <script> var n ; var resultat ; var compteur ; // le compteur pour la boucle compteur = 0 ; // on initialise le compteur à 0 resultat = 0 ; // on initialise le résultat à 0 n = prompt("veuillez entrer un nombre entier n = ") ; while(resultat < 1000 ) { resultat = n*compteur ; compteur = compteur+1 ; document.write(resultat + "<br>") } </script> Il ne faut pas oublier "d’incrémenter" le compteur de 1 à chaque boucle, sous peine de créer une "boucle infinie" Essayez de comprendre pourquoi la valeur affichée peut dépasser 1000 (avec n = 3 par exemple) Règle 13 : (boucles) (1) pour effectuer une l’ instruction ✞ 1 pour i allant de a à n ☎ on utilise la syntaxe suivante : for(i = a; i <= n; i + +){instruction 1} ✝ ✆ (2) pour effectuer une l’ instruction ✞ 1 tans que la condition 1 est réalisée ☎ on utilise la syntaxe suivante : while(condition 1){ instruction 1 } ✝ ✆ (1) l’instruction 1 peut-être une suite d’instructions (2) il faut bien vérifier que la boucle a une fin dans le cas de la boucle "while" sous peine de créer une boucle infinie 1.6.6 opérateurs logiques et égalité Dans le cas d’utilisation d’une instruction conditionnelle ou d’une boucle, on doit tester si une condition est vérifiée, par exemple : if(condition){instruction} ,while(condition){instruction} Parfois, la condition est composée de plusieurs conditions combinées avec les connecteurs logiques : ET, OU, NON si( (il pleut) && (il y a beaucoup de vent) ) { je prend la voiture} si( (il grêle) || ( je suis pressé){ je prend la voiture} si( !( j’ai le temps ) ){ je prend la voiture} ✄ ✄ Les test d’égalité ou de non égalité sont : ✂== ✁ et ✂ != ✁ : si( nombre de cotés == 4) { afficher "quadrilatère" } si( nombre de cotés != 4) { afficher " n’est pas un quadrilatère" } Règle 14 : (ET, OU, NON) ✄ (1) ET se traduit en ✂&& ✁ : (condition1 && condition2) est vraie si et seulement si les deux conditions sont vraies (elle est fausse sinon) c1 c2 c1&&c2 V V V V F F F V F F F F ✄ (2) OU se traduit en || : ✂ ✁ (condition1 || condition2) est vraie si et seulement si au moins une des deux conditions est vrai (elle est fausse sinon) c1 c2 c1||c2 V V V V F V F V V F F F ✄ (3) NON se traduit en ✂ ! ✁ : !(condition1) est vraie si et seulement si condition 1 est fausse (elle est fausse sinon) c1 !c1 V F F V ✄ (4) EST EGAL se traduit en ✂== ✁ : A == B est vraie si et seulement si A et B ont la même valeur (elle est fausse sinon) ✄ (5) EST DIFFERENT se traduit en ✂ != ✁ : A != B est vraie si et seulement si A et B n’ont pas la même valeur (elle est fausse sinon) Remarque : 1 == 0 a pour valeur : faux 1 != 0 a pour valeur : vrai ("titi" == "toto" || 0 == 0) a pour valeur : vrai ⋆ essayez : <script> var age ; age = prompt("veuillez entrer votre âge ") ; if( (age < 10) || (age > 80) ){ alert(" trop jeune ou trop âgé" )} ; if( (age > 10) && (age < 15) ){ alert(" plus que trois ans à attendre " )} ; if( age == 18){ alert(" c’est juste limite " )} ; if( (age >= 18 ) && ( age <= 80) ){ alert(" accepté " )} ; if( !(age < 80) ){ alert(" trop âgé " )} ; </script> 1.6.7 fonction Il est possible de définir une fonction (un sous programme) que l’on peut appeler autant de fois que l’on veut sans avoir à ré-écrire les lignes de commandes correspondantes ⋆ essayez : <script> //début de la déclaration de la fonction function ma_fonction_affine(a,b,x) { var image ; image = Number(a)*Number(x)+Number(b) ; document.write(" l’image de " + x + " est " + image + "<br>") ; }; //fin de la déclaration de la fonction var a = prompt(" valeur de a ? ") ; var b = prompt(" valeur de b ? ") ; var x = prompt(" valeur de x ? ") ; ma_fonction_affine(a,b,0) ; ma_fonction_affine(a,b,1) ; ma_fonction_affine(a,b,x) ; </script> Règle 15 : (fonction) (1) on déclare une fonction avec le mot clé "function", suivi du nom de la fonction, suivi des paramètres entre parenthèses séparés d’une virgule (s’il y en a), suivi entre accolades, des lignes d’instructions de la fonction. ✞ ☎ function ma_fonction( paramètre1, paramètre2, ...) { instructions } ✝ ✆ (2) on appelle la fonction où l’on veut dans le programme en remplaçant les paramètres par les valeur désirées 1.7 exercices 1.7.1 entrées sorties exercice 1 : ( entrées, sorties avec les méthodes prompt() et alert() ) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : entree_sortie_1.htm <script> //déclaration des variables var nom ; var prenom ; var age ; // entrées prenom = prompt(" quel est votre prenom ? ") ; age = prompt("quel est votre age ? ") ; //sorties alert("bonjour " + prenom) ; alert(age + " ans, c’est jeune !") ; </script> 2. lancer le programme en cliquant sur l’icône apparue sur le bureau 3. compléter (a) la balise <script> sert à délimiter le ... du programme la balise </script> la ... du programme (b) les // servent à indiquer que ce qui est sur la même ... compte par l’ordinateur est un ... (c) le mot clé var sert à déclarer une ... suit dont le ... non pris en (d) pour plus de clarté, on déclare une instruction par ligne séparées d’un ... (e) pour demander à l’utilisateur d’entrer une valeur dans la variable prenom, on écrit : (f ) pour afficher une fenêtre dans laquelle apparaîtra un message disant bonjour suivi du prénom entré on écrit : (g) quand on veut écrire du texte dans un message on met le texte entre ... (h) quand on veut mettre bout à bout (concaténer) du texte et une valeur contenu dans une variable on utilise le symbole ... qui ne correspond pas içi à une ... (i) modifier le programme ci dessus pour qu’il demande aussi le nom, le numéro de téléphone, la date de naissance et l’activité favorite et qu’il affiche dans une seule fenêtre un message contenant toutes les information entrées ( bonjour ..., vous avez ... ,vous êtes né le ...,votre téléphone est..., vous aimez ... ) exercice 2 : ( entrées, sorties avec les méthodes prompt() et document.write() ) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : entree_sortie_2.htm <script> //déclaration des variables var nom ; var prenom ; var age ; // entrées prenom = prompt(" quel est votre prenom ? ") ; age = prompt("quel est votre age ? ") ; //sorties document.write("bonjour " + prenom + "<br>") ; document.write(age + " ans, c’est jeune !") ; </script> 2. lancer le programme en cliquant sur l’icône apparue sur le bureau 3. compléter (a) pour afficher dans la page web, un message disant bonjour suivi du prénom entré on écrit : (b) pour passer à la ligne à la fin du message on "ajoute" à la fin du message : ... (c) quelle est la différence essentielle entre les méthodes alert() et document.write() ? (d) modifier le programme ci dessus pour qu’il demande aussi le nom, le numéro de téléphone, la date de naissance et l’activité favorite et qu’il affiche dans la page un message contenant toutes les information entrées ( bonjour ..., vous avez ... ,vous êtes né le ...,votre téléphone est..., vous aimez ... ) exercice 3 : (alert() avec le cas de chiffres en entrée) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : entree_sortie_3.htm <script> //déclaration des variables var nombre_1 ; var nombre_2 ; var somme ; var s = 1+2 ; // entrées nombre_1 = prompt(" premier nombre ? ") ; nombre_2 = prompt(" deuxième nombre ? ") ; // traitement des données somme = nombre_1+nombre_2 ; //sorties alert(nombre_1 + "+" + nombre_2 + "=" + somme ) ; alert( "s = " + s ) ; document.write(nombre_1 + "+" + nombre_2 + "=" + somme ) ; document.write( "s = " + s ) ; </script> 2. lancer le programme en cliquant sur l’icône apparue sur le bureau avec les nombres 1 et 2 3. compléter (a) le programme ne donne pas : 1 + 2 = ... mais 1 + 2 = ... car la méthode prompt() interprétes les entrées comme des chaines de caractères et non comme des ... l’ordinateur procède alors à une concaténation et non pas à une ... (b) par contre on a bien s = 1 + 2 = ... car les nombres ne sont pas entrés avec la méthod prompt() mais sont directement dans le programme 4. il faudra penser (dans le cas où une addition est effectuée sur des nombres entrés avec la méthode prompt) à convertir en nombres, les chaines de caractères entrées grâce à la méthode Number() comme suit : (a) sauvegarder et lancer le programme suivant sous le nom entree_sortie_4.htm <script> //déclaration des variables var nombre_1 ; var nombre_2 ; // entrées nombre_1 = Number(prompt(" premier nombre ? ")) ; nombre_2 = Number(prompt(" deuxième nombre ? ")) ; // traitement des données somme = nombre_1+nombre_2 ; //sorties alert(nombre_1 + "+" + nombre_2 + "=" + somme ) ; document.write(nombre_1 + "+" + nombre_2 + "=" + somme ) ; </script> (b) obtient-on le bon résultat ? (1+2=3) : ... (c) dans le cas d’addition de nombre entrés avec la méthode prompt(), il faut penser à utiliser aussi la méthode : ... remarque : avec les autres opérations (/,*,-, ... ) , il n’y a aucun problème (d) écrire et sauvegarder un programme entree_sortie_5.htm qui effectue et qui affiche la division, le produit et la différence de deux nombres entrés. 1.7.2 instructions conditionnelles exercice 4 : ( if ) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : test_1.htm <script> //déclaration des variables var note_finale ; // entrées note_finale = prompt(" la note finale est ? : ") ; //sorties if(note_finale == 0){alert("éliminé")} ; if(note_finale < 10 ){alert("non admis")} ; if( note_finale == 10 ){alert("admis de justesse")} ; if(note_finale > 10){alert("admis")} ; </script> 2. lancer le programme en cliquant sur l’icône apparue sur le bureau 3. compléter (a) pour tester si la note entrée est égale à 0 on n’écrit pas : if(note_finale = 0) mais ... (b) pour tester si la note entrée est égale à 10 on écrit : (c) l’instruction {alert("non admis")}n’est éxécutée que si la condition (note_finale < 10 ) est : ... donc si la note finales est ... (d) si on entre 0 pour note finale, que se passe t-il ? : exercice 5 : ( if else) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : test_2.htm <script> //déclaration des variables var note_finale ; // entrées note_finale = prompt(" la note finale est ? : ") ; //sorties if(note_finale == 0){alert("éliminé")} else { if(note_finale < 10 ){alert("non admis")} else{alert("admis")} }; </script> 2. lancer le programme en cliquant sur l’icône apparue sur le bureau 3. compléter (a) l’instruction {alert("non admis")}n’est éxécutée que si la condition (note_finale ==0 ) est : ... et la condition (note_finale < 10 ) est ... donc si la note finales est ... (b) si on entre 0 pour note finale, que se passe t-il ? : (c) sous quelles conditions le message "admis" s’affiche t-il ? (d) on remarque qu’un else n’est jamais précédé d’un point ... (e) par soucis de clarté, des lignes du programme ont été décalées vers la droite, on dit que l’on a ... l’écriture du programme exercice 6 : écrire un programme qui demande un mot de passe à l’utilisateur et qui affiche "bienvenue" si le mot de passe est correct et "erreur de mot de passe" sinon. (penser à déclarer une variable mot_de_passe et à lui donner une valeur ) (n’oubliez pas que 6= (différent de) s’écrit != en javascript ) exercice 7 : ( conditions avec ET/OU/NON) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : test_3.htm <script> //déclaration des variables var presence_carnet ; var presence_carte ; // entrées presence_carnet = prompt(" le carnet est-il présent ? (oui/non) : ") ; presence_carte = prompt(" la carte est-elle présente ? (oui/non) : ") ; //sorties if( (presence_carnet == "oui") && (presence_carte == "oui") ) {alert("parfait ! entrez !")} ; if( (presence_carnet == "oui") || (presence_carte == "oui") ) {alert(" c’est juste mais vous pouvez entrer !")} ; if( (presence_carnet != "oui") && (presence_carte != "oui") ) {alert(" là c’est beaucoup, vous ne pouvez pas entrer !")} </script> 2. lancer le programme en cliquant sur l’icône apparue sur le bureau 3. compléter (a) Dans le Lycée en question, un élève n’entre que s’il dispose de sa carte ou de son carnet, sinon il ne rentre pas. vérifier que le programme ci dessus fonctionne sauf pour le cas où un élève dispose de la carte et de son carnet auquel cas il y a eux messages (b) modifier le programme pour qu’il fonctionne et qu’il donne un seul message à l’élève qui est en possession de sa carte et de son carnet 1.7.3 boucles exercice 8 : (boucle for) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : boucle_1.htm <script> var n ; n = prompt("veuillez entrer un nombre entier n = ") ; for(i=0 ; i<=10 ; i++ ){ document.write(n*i + "<br>") } </script> 2. lancer le programme avec différentes valeurs entrées 3. modifier le programme pour qu’il demande à l’utilisateur le nombre x de lignes à afficher puis qu’il affiche le nombre de lignes en question 4. modifier le programme pour qu’il affiche un message "le nombre de lignes est trop grand" si la valeur entrée dépasse 1000 et qu’il affiche les lignes demandées sinon 5. de même avec un message " le nombre de lignes est trop petit" s’il est inférieur ou égal à0 exercice 9 : (boucle while) 1. sauvegarder sur le bureau, le programme suivant, dans un fichier appelé : boucle_1.htm <script> var n ; var resultat ; var compteur ; // le compteur pour la boucle compteur = 0 ; // on initialise le compteur à 0 resultat = 0 ; // on initialise le résultat à 0 n = prompt("veuillez entrer un nombre entier n = ") ; while(resultat < 1000 ) { resultat = n*compteur ; compteur = compteur+1 ; document.write(resultat + "<br>") } </script> 2. lancer le programme avec différentes valeurs entrées 3. modifier le programme pour qu’il demande à l’utilisateur le nombre x à ne pas dépasser puis qu’il affiche le nombre de lignes en question 4. modifier le programme pour qu’il affiche au maximum 10 lignes Deuxième partie applications Mathématiques 43 Chapitre 2 fonctions affines 45 2.1 image d’un nombre exercice 1 : (image d’un nombre et tableau de valeurs) 1. soit la fonction affine f telle que f (x) = 2x − 3 pour tout x ∈ R (a) écrire un algorithme qui donne l’image d’un nombre quelconque (par exemple : f (10) = 2 × 10 − 3 = 17) (b) écrire le programme correspondant en javascript et le tester (c) écrire un algorithme (et le programme js ) qui écrit les valeurs de x et de f (x) de la fonction précédente pour x allant de 0 à 10 avec un pas de 1 0 7−→ −3 1 7−→ −1 ... (d) modifier l’algorithme précédent pour obtenir les valeurs pour x allant de deb à f in avec un pas de 1 où deb et f in sont deux entiers choisis par l’utilisateur 2. soit une fonction affine quelconque f telle que f (x) = ax + b pour tout x ∈ R où a et b sont deux réels fixés quelconques. (a) modifier l’algorithme précédent pour qu’il écrive les valeurs de x et de f (x) pour x allant de deb à f in avec un pas de 1 où a, b, deb, f in sont choisis par l’utilisateur (deb et f in des entiers) (b) écrire le programme correspondant en javascript et le tester corrigé exercice 1 : (image d’un nombre) 1. soit la fonction affine f telle que f (x) = 2x − 3 pour tout x ∈ R (a) écrire un algorithme qui qui donne l’image d’un nombre quelconque (par exemple : f (10) = 2 × 10 − 3 = 17) Début //Variables x un nombre réel f _de_x un nombre réel //Entrées Demander à l’utilisateur la valeur de x //Initialisations //Traitements affecter à f _de_x la valeur 2 ∗ x − 3 //Sortie afficher f _de_x Fin (b) écrire le programme correspondant en javascript et le tester <script> //Variables var x ; var f _de_x ; //Entrées x = prompt("x=") ; //Initialisations x = Number(x) ; // (transforme la "chaine" x en un nombre) //Traitements f _de_x = 2 ∗ x − 3 ; //Sortie alert( x + " -> " +f _de_x) ; </script> (c) écrire un algorithme (et le programme js ) qui écrit les valeurs de x et de f (x) de la fonction précédente pour x allant de 0 à 10 avec un pas de 1 0 7−→ −3 1 7−→ −1 ... Début //Variables x un nombre réel f _de_x un nombre réel //Entrées //Initialisations //Traitements et Sorties Pour i allant de 0 jusqu’à 10 affecter à x la valeur i affecter à f _de_x la valeur 2 ∗ x − 3 écrire x et f _de_x FinPour Fin le programme en javascript <script> //Variables var x ; var f _de_x ; var i ; //Entrées //Initialisation //Traitements et Sorties for(i=0 ; i <= 10 ; i + +) { x = i; f _de_x = 2 ∗ x − 3 ; document.write("<br>"+x+"->"+f _de_x) ; }; </script> (d) modifier l’algorithme précédent pour obtenir les valeurs pour x allant de deb à f in avec un pas de 1 où deb et f in sont deux entiers choisis par l’utilisateur Début //Variables x un nombre réel f _de_x un nombre réel deb un entier naturel f in un entier naturel //Entrées Demander à l’utilisateur la valeur de deb Demander à l’utilisateur la valeur de f in //Initialisations //Traitements et Sorties Pouri allant de deb jusqu’à f in affecter à x la valeur i affecter à f _de_x la valeur 2 ∗ x − 3 écrire x et f _de_x FinPour Fin le programme en javascript <script> //Variables var x ; var f _de_x ; var deb ; var f in ; //Entrées deb = prompt("début=") ; f in = prompt("f in=") ; //Initialisations deb = Number(deb) ; f in = Number(f in) ; //Traitements et Sorties for(i=deb ; i<=f in ; i++) { x = i; f _de_x = 2 ∗ x − 3 ; document.write("<br>"+x+"->"+f _de_x) ; }; </script> 2. soit une fonction affine quelconque f telle que f (x) = ax + b pour tout x ∈ R où a et b sont deux réels fixés quelconques. (a) modifier l’algorithme précédent pour qu’il écrive les valeurs de x et de f (x) pour x allant de deb à f in avec un pas de 1 où a, b, deb, f in sont choisis par l’utilisateur (deb et f in des entiers) Début //Variables a un nombre réel b un nombre réel x un nombre réel f _de_x un nombre réel deb un entier naturel f in un entier naturel //Entrées Demander Demander Demander Demander à à à à l’utilisateur l’utilisateur l’utilisateur l’utilisateur la la la la valeur valeur valeur valeur de de de de //Initialisations //Traitements et Sorties Pouri allant de deb jusqu’à f in affecter à x la valeur i affecter à f _de_x la valeur a ∗ x + b écrire x et f _de_x FinPour Fin a b deb f in (b) le programme en javascript <script> //Variables var a ; var b ; var x ; var f _de_x ; var deb ; var f in ; //Entrées a = prompt("a=") ; b = prompt("b=") ; deb = prompt("début=") ; f in = prompt("f in=") ; //Initialisations a = Number(a) ; b = Number(b) ; deb = Number(deb) ; f in = Number(f in) ; //Traitements et Sorties for(i=deb ; i<=f in ; i++) { x = i; f _de_x = a ∗ x + b ; document.write("<br>"+x+"->"+f _de_x) ; }; </script> 2.2 placer des points dans un repère exercice 2 : (placer des points dans un repère) on utilisera la syntaxe suivante dans ce qui suit : ⋆ pour créer un repère avec xmin , xmax , ymin et ymax pour valeurs extrêmes en x et en y on écrira : creer_repere(xmin, xmax , ymin , ymax ) ⋆ pour ajouter un point de coordonnées (x, y) dans le repère précédent, on écrira : ajouter_point(x,y) 1. soit la fonction affine f telle que f (x) = 2x − 3 pour tout x ∈ R (a) écrire un algorithme qui : crée un repère avec pour valeurs extrêmes xmin = 0, xmax = 10, ymin = −10 et ymax = 20 puis qui ajoute dans ce repère les points de la courbe de f pour x allant de 0 à 10 (b) écrire le programme correspondant en javascript et le tester (c) modifier l’algorithme précédent pour obtenir les points pour x allant de deb à f in avec un pas de 1 où deb et f in sont deux entiers choisis par l’utilisateur (il faudra déterminer les valeurs extrêmes du repère) (pour le programme javascript, penser à utiliser la méthode Number() pour formater en nombre les chaînes de caractères entrées avec la méthode prompt() ) 2. soit une fonction affine quelconque f telle que f (x) = ax + b pour tout x ∈ R où a et b sont deux réels fixés quelconques. (a) modifier l’algorithme précédent pour obtenir les points pour x allant de deb à f in avec un pas de 1 où a, b, deb, f in sont choisis par l’utilisateur (deb et f in des entiers et a positif ) (pour les plus courageux distinguer les cas où a est positif ou négatif ) (b) écrire le programme correspondant en javascript et le tester 2.3 trouver la formule d’une fonction connaissant deux nombres et leurs images exercice 3 : (trouver la formule d’une fonction connaissant deux nombres et leurs images) 1. soit une fonction affine f telle que : f (2) = 5 f (5) = 11 (a) écrire un algorithme qui donne le coefficient directeur a et l’ordonnées à l’origine b de la fonction f (le traduire en javascript et le vérifier) (b) modifier l’ algorithme précédent pour qu’il fasse la même chose quand l’utilisateur entre les valeurs de x1 , x2 et de y1 et y2 , leurs images respectives par f (penser au cas où x1 = x2 ) (c) retrouver les valeurs obtenues à la première question 2.4 signe de la fonction exercice 4 : soit la fonction affine définie par : f (x) = −4x + 20 i. écrire un algorithme qui affiche : la valeur d’annulation x0 de f le signe de f (x) en fonction de va valeur de x par rapport à x0 ( f (x) > 0 si x...x0 , ... ) ii. modifier l’algorithme précédent pour qu’il fasse la même chose, mais, où cette fois, l’utilisateur donne en entrée les valeurs de a et b (distinguer les trois cas où a = 0, a < 0 et a > 0) (pour les plus courageux, dans le cas où a = 0, distinguer les cas où b = 0, b > 0 et b < 0) 2.5 résolution d’équation ou d’inéquations exercice 5 : une personne place initialement 500 euros sur un compte rémunéré à 3% d’intérêts simples par mois (chaque mois, la banque crédite le compte de 3% de 500 e) i. montrer que le solde du compte dans x mois est donné par f (x) = 15x + 500 ii. écrire un algorithme qui donne la plus petite valeur de x pour laquelle le solde du compte dépasse 800 e (utiliser une boucle : tans que(condition)instructions ) iii. modifier l’algorithme précédent pour qu’il fasse la même chose, mais, où cette fois, l’utilisateur donne en entrée les valeurs du taux de placement t% ainsi que le capital initial placé ainsi que le seuil s à dépasser exercice 6 : voici deux tarifs de deux entreprises de location de voitures tarif A : 10 e d’assurance plus 50 e la journée plus 0,2 e du km tarif B : 5 e d’assurance plus 20 e la journée plus 0,4 e du km i. montrer que le tarif A pour x km et une journée, est donné par A(x) = 0, 2x + 60 et que le tarif est donné par B(x) = 0, 4x + 25 ii. écrire un algorithme qui donne l’entreprise de location la plus avantageuse quand on entre le nombre de km à faire pour une journée de location iii. écrire un algorithme qui donne la plus petite valeur de x pour laquelle le tarif B est plus avantageux que le tarif A (utiliser une boucle : tans que(condition)instructions ) Chapitre 3 géométrie analytique dans le plan 57 3.1 distance entre deux points exercice 7 : soient les points A(2; 5) et B(7; 3) dans un repère orthogonal i. écrire un algorithme qui calcule et affiche la distance AB ii. modifier l’algorithme pour qu’il donne la distance AB quand l’utilisateur entre les coordonnées des point A et B exercice 8 : Dans un repère orthogonal i. écrire un algorithme qui calcule les distances AB, AC et BC quand on entre les coordonnées des trois points ii. modifier l’algorithme pour qu’il affiche si le triangle ABC est rectangle en A ou en B ou en C ou bien s’il n’est pas rectangle, qui affiche aussi s’il est isocèle A ou en B ou en C ou bien s’il n’est pas isocèle, qui affiche finalement, s’il est équilatéral ou non (en javascript pour la racine carrée on utilise la méthode : Math.sqrt() pour les tests, penser que les résultats sont approchés, on pourra alors comparer les différences à 0 en prenant une tolérance de 0.01, par exemple, si la valeur absolue de a − b est inférieure à 0, 01 on pourra considérer que a est quasiment égal à b pour la valeur absolue : Math.abs() ) 3.2 coordonnées du milieu d’un segment exercice 9 : Dans un repère on a : A(1; 6), B(7; 8) i. écrire un algorithme qui calcule les coordonnées du milieu I du segment [AB] ii. modifier l’algorithme précédent afin qu’il fasse la même chose que le précédent si on entre les coordonnées des point A et B exercice 10 : Dans un repère i. écrire un algorithme qui calcule les coordonnées du milieu I du segment [AB] ainsi que celles du segment [CD] si on entre les coordonnées des points. ii. modifier l’algorithme précédent afin qu’il dise si ABCD est un parallélogramme ou non iii. pour les plus courageux, modifier l’algorithme afin qu’il dise si ABCD est un rectangle ou non, un losange ou non, un carré ou non. Chapitre 4 statistiques 61 4.1 angle diagramme circulaire exercice 11 : (angle diagramme circulaire) suite aux épreuve du premier groupe d’un examen on obtient : Admis : 212 ; Convoqués au rattrapage : 84 ; Refusés : 42 1. écrire un algorithme qui calcule et affiche les trois angles angle_A, angle_C et angle_R du diagramme circulaire qui représente les données précédentes 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand on entre : _ le nombre de catégories distinctes (il peut y en avoir de 2 à autant que l’on veut) _ les effectifs de chacune des catégories (pour le stockage des effectifs on utilisera un tableau indicé) (pour l’entrée des effectifs dans le tableau, pour le calcul de l’effectif total et pour l’affichage des résultats on utilisera une "boucle pour" ) ( en javascript un tableau se déclare : mon_tableau = new Array() 4.2 hauteur histogramme exercice 12 : (hauteur histogramme) suite aux épreuve du premier groupe d’un examen on obtient : [0; 8[: 42 (Refusés) ; [8; 10[: 84 (rattrapage) ;[10; 20] : 212 (Admis) 1. écrire un algorithme qui calcule et affiche les trois hauteurs hauteur_A, hauteur_C et hauteur_R de l’histogramme qui représente les données précédentes 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand on entre : _ le nombre d’intervalles (il peut y en avoir de 2 à autant que l’on veut) _ les effectifs de chacun des intervalles _ les bornes des intervalles (pour le stockage des effectifs et des bornes on utilisera un tableau indicé) (pour l’entrée des effectifs dans le tableau, pour le calcul de l’effectif total et pour l’affichage des résultats on utilisera une "boucle pour" ) ( en javascript un tableau se déclare : mon_tableau = new Array() 4.3 moyenne sans coefficients exercice 13 : (moyenne sans coefficients) suite aux épreuves à un examen un candidat obtient les notes suivantes : 8; 12; 7; 14; 11; 12 1. écrire un algorithme qui calcule et affiche la moyenne des notes précédentes 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand on entre : _ le nombre de notes (il peut y en avoir de 2 à autant que l’on veut) _ les notes (pour le stockage des notes on utilisera un tableau indicé) (pour l’entrée des notes dans le tableau et pour le calcul du total, on utilisera une "boucle pour" ) ( en javascript un tableau se déclare : mon_tableau = new Array() 4.4 moyenne avec coefficients exercice 14 : (moyenne avec coefficients) suite aux épreuves à un examen un candidat obtient les notes suivantes : 8; 12; 7; 14; 11; 12 avec pour coefficients respectifs 2; 3; 5; 7; 2; 4 1. écrire un algorithme qui calcule et affiche la moyenne des notes précédentes 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand on entre : _ le nombre de notes (il peut y en avoir de 2 à autant que l’on veut) _ les notes _ les coefficients (pour le stockage des notes, des coefficients on utilisera un tableau indicé) (pour l’entrée des notes et des coefficients dans le tableau puis pour le calcul du total, on utilisera une "boucle pour" ) ( en javascript un tableau se déclare : mon_tableau = new Array() 4.5 écart type sans coefficients exercice 15 : (écart type sans coefficients) suite aux épreuves à un examen un candidat obtient les notes suivantes : 8; 12; 7; 14; 11; 12 1. écrire un algorithme qui calcule et affiche l’écart type des notes précédentes 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand on entre : _ le nombre de notes (il peut y en avoir de 2 à autant que l’on veut) _ les notes (pour le stockage des notes on utilisera un tableau indicé) (pour l’entrée des notes dans le tableau et pour le calcul du total, on utilisera une "boucle pour" ) ( en javascript un tableau se déclare : mon_tableau = new Array() 4.6 écart type avec coefficients exercice 16 : (écart type avec coefficients) suite aux épreuves à un examen un candidat obtient les notes suivantes : 8; 12; 7; 14; 11; 12 avec pour coefficients respectifs 2; 3; 5; 7; 2; 4 1. écrire un algorithme qui calcule et affiche l’écart type des notes précédentes 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand on entre : _ le nombre de notes (il peut y en avoir de 2 à autant que l’on veut) _ les notes _ les coefficients (pour le stockage des notes, des coefficients on utilisera un tableau indicé) (pour l’entrée des notes et des coefficients dans le tableau puis pour le calcul du total, on utilisera une "boucle pour" ) ( en javascript un tableau se déclare : mon_tableau = new Array() Chapitre 5 fonctions généralités 69 5.1 image d’un nombre et tableau de valeurs exercice 17 : (image d’un nombre et tableau de valeurs) 1. soit la fonction f telle que f (x) = 2x + 3 + 1 pour tout x ∈ R∗ x (a) écrire un algorithme qui donne l’image d’un nombre quelconque 1 (par exemple : f (2) = 2 × 1 + 3 + = 5.5) 2 (b) écrire le programme correspondant en javascript et le tester (c) écrire un algorithme (et le programme js ) qui écrit les valeurs de x et de f (x) de la fonction précédente pour x allant de 1 à 10 avec un pas de 1 1 7−→ 6 2 7−→ 5.5 ... (d) modifier l’algorithme précédent pour obtenir les valeurs pour x allant de deb à f in avec un pas de 1 où deb et f in sont deux entiers choisis par l’utilisateur 2. soit une fonction affine quelconque f telle que f (x) = ax + b pour tout x ∈ R où a et b sont deux réels fixés quelconques. (a) modifier l’algorithme précédent pour qu’il écrive les valeurs de x et de f (x) pour x allant de deb à f in avec un pas de 1 où a, b, deb, f in sont choisis par l’utilisateur (deb et f in des entiers) (b) écrire le programme correspondant en javascript et le tester 5.2 construction de points d’une courbe exercice 18 : (placer des points dans un repère) on utilisera la syntaxe suivante dans ce qui suit : ⋆ pour créer un repère avec xmin , xmax , ymin et ymax pour valeurs extrêmes en x et en y on écrira : creer_repere(xmin, xmax , ymin , ymax ) ⋆ pour ajouter un point de coordonnées (x, y) dans le repère précédent, on écrira : ajouter_point(x,y) 100 1. soit la fonction f telle que f (x) = 2x + 3 + pour tout x ∈ R x (a) écrire un algorithme qui : crée un repère avec pour valeurs extrêmes xmin = 1, xmax = 20, ymin = 0 et ymax = 120 puis qui ajoute dans ce repère les points de la courbe de f pour x allant de 1 à 20 (b) écrire le programme correspondant en javascript et le tester 5.3 recherche d’extremum exercice 19 : (recherche d’extremum) 100 pour tout x ∈ R x On cherche à déterminer à 0,01 près, la valeur de x qui minimise f (x) pour x compris entre 1 et 20 ainsi que la valeur de ce minimum de f (x) 1. soit la fonction f telle que f (x) = 2x + 3 + (a) écrire un algorithme qui utilise une "boucle pour" afin de calculer toutes les valeurs de f (x) pour x allant de 1 à 20 au pas de 0.01 à chaque boucle on comparera la valeur trouvée à une valeur "min_de_f" initialement affectée de la valeur +infini on mémorisera les valeurs de x et de f (x) dans le cas où la valeur de f (x) est inférieure à min_de_f on affichera les valeurs de min_de_f et de x correspondante en fin de boucle (b) traduire cet algorithme en javascript (en javascript, la valeur +infini est notée : Number.POSITIVE_INFINITY ) 2. modifier l’algorithme précédent afin qu’il fasse la même chose quand l’utilisateur entre les valeurs de début de recherche (1 ci dessus), de fin de recherche (20 ci dessus) ainsi que le pas ( 0.01 ci dessus) 3. reprendre l’algorithme ci dessus et le modifier afin qu’il donne à 0,01 près, la valeur de x qui maximise f (x) pour x compris entre 1 et 20 ainsi que la valeur de ce maximum de f (x) (en javascript, la valeur -infini est notée : Number.NEGATIVE_INFINITY ) 5.4 recherche de valeur d’annulation 5.5 recherche de solutions d’équations