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>");