Exemples de Scripts en Javascript

Pour l'éditeur Javascript en ligne

 
/* Diviseurs d'un entier
 * Auteur : E.Ostenne
 * Date : 21 octobre 2010
 * Licence : CC by-nc
 */

var n=demander("Nombre entier dont on cherche les diviseurs :");
var i;
var l=new Array();
for (i=1 ; i<=n ; i++)
     if ((n/i)==Math.floor(n/i)) { l.push(i) };
afficher("Les diviseurs de ", n, " sont : ", l);


/* Représentation graphique d'une fonction
 * Auteur : Alain Busser
 * Date : juin 2009
 * License GPL 3.0 ou supérieure
 * (http://www.gnu.org/licenses/gpl.html) */

function f(x) { return 2/(1+x*x)-1; }
var r=new repere(-3,-2,3,2,300,200);
r.couleurTrait("blue"); // les graduations en bleu
for(i=-3;i<=3;i++){r.allerEn(i,-0.1); r.ligneVers(i,0.1); } 
for(i=-3;i<=3;i+=0.1){r.allerEn(i,-0.05); r.ligneVers(i,0.05); } // tracé des graduations en x
for(j=-2;j<=2;j++) {r.allerEn(-0.1,j); r.ligneVers(0.1,j);} 
for(j=-2;j<=2;j+=0.1) {r.allerEn(-0.05,j); r.ligneVers(0.05,j);} // tracé des graduations en y
r.couleurTrait("red"); // la courbe en rouge
r.allerEn(-3,f(-3)); // point de départ
for(x=-3;x<3;x+=0.01) { // boucle sur x : de -3 à 3 par pas de 0.01
r.ligneVers(x,f(x));} // 300 petits segments pour simuler une courbe


/* Lancer de deux dés en javascript
 * Auteur : Alain Busser
 * Date : juin 2009
 * License GPL 3.0 ou supérieure
 * (http://www.gnu.org/licenses/gpl.html) */

var effectifs=new Array(12); // le total maximum est 6+6=12
for(i=0;i<=12;i++) {effectifs[i]=0;}
var n=demander("Combien de fois voulez-vous lancer les 2 dés ? ");
for(i=0;i<n;i++) { // on lance les dés n fois
  sommedés=Math.floor(6*Math.random()+1)+Math.floor(6*Math.random()+1);
  effectifs[sommedés]=(parseInt(effectifs[sommedés])+1).toString(); // et un de plus pour la somme obtenue
  /* compliqué: Il a fallu
  - convertir effectif[sommedés] en entier avec parseInt()
  - additionner 1 à ce nombre
  - convertir le résultat en chaîne des caractères avec toString()*/
} // le tableau des effectifs est rempli

// on va faire un tableau des fréquences:
var fréquences=new tableau("Sommes","Fréquences (pourcents)");
for(i=0;i<=12;i++){
  fréquences.ajouter(i,(effectifs[i]/n*100).toFixed(2));
}

// on passe au diagramme en bâtons
var batons=new repere(0,-1,13,30,300,200);
batons.couleurFond("magenta");
for(i=2;i<=12;i++) { // 12 bâtons
  batons.rectPlein(i-0.2,0,i+0.2,effectifs[i]/n*100);
}// on eût pu faire plus simple, avec des segments...


// calcul des quartiles 1, 2 et 3
var s1=0; // effectif cumulé
for(i=2;s1<=n/4;i++) {s1+=parseInt(effectifs[i]);}
q1=i-1; // premier quartile
var s2=0;
for(i=2;s2<=n/2;i++) {s2+=parseInt(effectifs[i]);}
q2=i-1; // médiane
s3=0;
for(i=2;s3<=3*n/4;i++) {s3+=parseInt(effectifs[i]);}
q3=i-1; // troisième quartile
// on passe aux déciles (1er et 9e)
var t1=0; // effectif cumulé
for(i=2;t1<=n/10;i++) {t1+=parseInt(effectifs[i]);}
d1=i-1; // premier décile
var t9=0; // effectif cumulé
for(i=2;t9<=9*n/10;i++) {t9+=parseInt(effectifs[i]);}
d9=i-1; // neuvième décile
// enfin, la boîte à moustaches
boxplot=new repere(0,0,13,4,300,200);
boxplot.couleurTrait("blue");
boxplot.allerEn(q2,1);
boxplot.ligneVers(q2,3); // trait pour la médiane
boxplot.rectCreux(q1,1,q3,3); // la boîte
boxplot.allerEn(q1,2);boxplot.ligneVers(d1,2) // la moustache de gauche
boxplot.ligneVers(d1,2.5); boxplot.ligneVers(d1,1.5);
boxplot.cercle(2,2,0.1);
boxplot.allerEn(q3,2);boxplot.ligneVers(d9,2) // la moustache de droite
boxplot.ligneVers(d9,2.5); boxplot.ligneVers(d9,1.5);
boxplot.cercle(12,2,0.1);