Activités JavaScript

Structures conditionnelles & itératives

Structures conditionnelles

Structure if

Exemple

// Comparaison de deux entiers a et b
if (a > b) {
  res = a + " > " + b;
} else if (a < b) {
  res = a + " < " + b;
} else {
  res = a + " = " + b;
}

Application

Ecrire un script qui saisit trois nombres distincts a, b et c puis affiche l'entier qui sera au milieu si les trois entiers ont été ordonnés.

Exemple : a = 5, b = 16 et c = 10, le nombre au milieu est 10 car 5 < 10 < 16

let a = Number(prompt("Donner a ?", "5"));
let b = Number(prompt("Donner b ?", "16"));
let c = Number(prompt("Donner c ?", "10"));

let mid;
if ((a > b && b > c) || (a < b && b < c)) {
  mid = b;
} else if ((b > a && a > c) || (b < a && a < c)) {
  mid = a;
} else {
  mid = c;
}

alert("Nombre au milieu : " + mid);

Structure switch

Exemple

// Chiffres romains
// I (1), V (5), X (10), L (50), C (100), D (500), M (1000)
switch (car) {
  case "I": val = 1; break;
  case "V": val = 5; break;
  case "X": val = 10; break;
  case "L": val = 50; break;
  case "C": val = 100; break;  
  case "D": val = 500; break;  
  case "M": val = 1000; break;
  default: val = -1;
}

Application

Le prix des fruits est comme suit :

  • Orange : 1.30$/Kg,
  • Pomme : 0.66$/Kg,
  • Banane : 1.05$/Kg,
  • Cerise : 6.61$/Kg,
  • Mangue / Papaye : 6.15$/Kg,
  • Autres fruits non disponibles.

Ecrire un script qui demande le nom d'un fruit, puis affiche son prix en utilisant la structure switch.

let fruit = prompt("Que voulez vous acheter ? ", "Banane");
let price;
switch (fruit) {
  case "Orange" : price = 1.30; break;
  case "Pomme" :  price = 0.66; break;
  case "Banane" : price = 1.05; break;
  case "Cerise" : price = 6.61; break;
  case "Mangue" :
  case "Papaye" : price = 6.15; break;
  default:        price = -1;
}

Opérateur ternaire

Exemple

// Maximum de deux nombres
let sup = a > b ? a : b;

Application

Ecrire un script qui convertit un nombre de secondes en h:mm:ss. Les mm et ss doivent être sur deux chiffres : "9:07:05" et non pas "9:7:5".

// 32825s = 9:07:05
let s = Number(prompt("Nombre de secondes ? ", 32825);
let hh = Math.floor(s / 3600);
let mm = Math.floor((s % 3600) / 60);
let ss = Math.floor(s % 60);
let heure = hh + ":" +
  (mm < 10 ? "0" : "") + mm + ":" +
  (mm < 10 ? "0" : "") + ss;
alert(s + "s = " + heure);

Structures itératives

Instruction for

Exemple

// Afficher les nombres de deux chiffres divisibles par 2 ou 3
for (let i = 10; i < 100; i++) {
  if (i % 2 == 0 || i % 3 == 0) {
    document.writeln(i);
  }
}

Application

Un nombre est dit premier si et seulement s'il est divisible exactement par deux nombres distincts 1 et lui même. Ecrire un script qui affiche tous les nombres premiers inférieurs à 100.

document.writeln("<p>Nombre premiers < 100 :");
for (let i = 0; i < 100; i++) {
  let nbd = 0;
  for (let j = 1; j <= i; j++) {
    if (i % j == 0) {
      nbd++;
    }
  }
  if (nbd == 2) {
    document.writeln(i, ", ");
  }
}
document.writeln("</p>");

Instruction while

Exemple

// Déterminer si une chaîne est palindrôme
// Exemples : AZIZA, RADAR, RESSASSER
let ch = "RESSASSER";
let i = 0, j = ch.length - 1;
while (j > i && ch[i] == ch[j]) {
  i++; j--;
}
document.writeln("<p>", ch, " est ", (i >= j ? "palindrôme" : "non palindrôme"), "</p>");

Application

Deux nombres a et b sont premiers entre eux si et seulement si PGCD(a, b) = 1. Ecrire un script qui détermine si deux entiers sont premiers entre eux.

PGCD(a, b) = PGCD(b, a mod b) ; si b ≠ 0
PGCD(a, b) = a ; si b = 0

let a = Number(prompt("Donner a ? ", "35"));
let b = Number(prompt("Donner b ? ", "12"));
let a1 = a, b1 = b;
while (b1 != 0) {
  let r = a1 % b1;
  a1 = b1;
  b1 = r;
}
document.writeln("<p>", a, " et ", b, " ", 
  (a1 == 1 ? "sont" : "ne sont pas"), 
  " premiers entre eux.</p>");