Exercices JavaScript
Exercice 1
Écrivez un script qui :
1. Demande à l'utilisateur de saisir trois nombres.
2. Affiche la moyenne, le minimum et le maximum des trois nombres.
Exercice 2
Écrivez un programme qui demande la note d'un étudiant (sur 20) et affiche :
• « Excellent » si la note est supérieure à 16
• « Bien » si la note est entre 14 et 16
• « Assez bien » si la note est entre 12 et 14
• « Passable » si la note est entre 10 et 12
• « Insuffisant » sinon
Exercice 3
Utilisez une boucle while pour afficher tous les nombres pairs entre 2 et 50. Calculez et
affichez aussi le nombre total de ces nombres pairs.
Exercice 4
Créez une fonction estPremier(n) qui retourne true si n est un nombre premier, false sinon.
Testez cette fonction avec les nombres 7, 15, 23 et 25.
Exercice 5
Écrivez un script qui :
1. Crée un tableau de 6 prix d'articles saisis par l'utilisateur.
2. Calcule le prix total.
3. Applique une remise de 10% si le total dépasse 100€.
4. Affiche le prix final.
Exercice 6
Créez une fonction qui convertit une distance en kilomètres vers des miles. Formule : 1 km =
0.621371 miles.
Exercice 7
Créez un objet voiture avec les propriétés : marque, modele, annee, couleur. Créez une
méthode description() qui retourne une phrase descriptive de la voiture.
Exercice 8
Créez un tableau de nombres. Utilisez map() pour créer un nouveau tableau contenant le
carré de chaque nombre, puis affichez les deux tableaux.
Exercice 9
En HTML : créez deux champs de texte (nom et prénom) et un bouton. En JS : affichez un
message personnalisé "Bienvenue [prénom] [nom] !" dans une div avec l'ID "message" au
clic.
Exercice 10
Expliquez ce que fait ce code et quelle sera la sortie :
let tableau = [1, 2, 3, 4, 5];
let resultat = 0;
for (let i = 0; i < tableau.length; i++) {
if (tableau[i] % 2 === 0) {
resultat += tableau[i];
console.log(resultat);
Exercice 11
Écrivez une fonction fibonacci(n) qui retourne le n-ième terme de la suite de Fibonacci.
Testez avec n = 8.
Exercice 12
Écrivez une fonction qui compte le nombre de voyelles dans une chaîne de caractères. Testez
avec "JavaScript est fantastique".
Exercice 13
Créez un tableau d'objets représentant 4 étudiants avec leurs noms et notes. Triez le tableau
par note décroissante et affichez le classement.
Exercice 14
1. En HTML : créez une liste vide (<ul>) et un champ de texte avec un bouton.
2. En JS : ajoutez le contenu du champ comme nouvel élément de liste à chaque clic.
Exercice 15
Trouvez et corrigez les erreurs dans ce code :
function calculerAge(anneeNaissance) {
let anneeActuelle = 2024;
let age = anneeActuelle - anneeNaissance;
retourner age;
let monAge = calculerAge("1990");
console.log("J'ai " + monAge + " ans");
Exercice 16
Créez une calculatrice simple avec les fonctions additionner(), soustraire(), multiplier(),
diviser(). Créez un menu qui permet à l'utilisateur de choisir l'opération et saisir les nombres.
Exercice 17
Créez un jeu de "Deviner le nombre" où :
• L'ordinateur génère un nombre aléatoire entre 1 et 100
• L'utilisateur a 7 tentatives pour deviner
• Affichez "Trop grand", "Trop petit" ou "Bravo !" selon le cas
Exercice 18
Écrivez une fonction qui inverse l'ordre des mots dans une phrase. Exemple : "Bonjour le
monde" devient "monde le Bonjour".
Exercice 19
En HTML : créez un tableau avec id "tableau" et un bouton "Ajouter ligne". En JS : ajoutez
dynamiquement une nouvelle ligne avec deux cellules à chaque clic.
Exercice 20
Analysez ce code et expliquez pourquoi il ne fonctionne pas comme attendu :
for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 100);
Proposez deux solutions pour corriger le problème.
Solutions des Exercices JavaScript
Exercice 1
let num1 = parseFloat(prompt("Entrez le premier nombre :"));
let num2 = parseFloat(prompt("Entrez le deuxième nombre :"));
let num3 = parseFloat(prompt("Entrez le troisième nombre :"));
let moyenne = (num1 + num2 + num3) / 3;
let minimum = Math.min(num1, num2, num3);
let maximum = Math.max(num1, num2, num3);
console.log("Moyenne :", moyenne);
console.log("Minimum :", minimum);
console.log("Maximum :", maximum);
Exercice 2
let note = parseFloat(prompt("Entrez votre note sur 20 :"));
if (note > 16) {
console.log("Excellent");
} else if (note >= 14) {
console.log("Bien");
} else if (note >= 12) {
console.log("Assez bien");
} else if (note >= 10) {
console.log("Passable");
} else {
console.log("Insuffisant");
}
Exercice 3
let i = 2;
let compteur = 0;
console.log("Nombres pairs entre 2 et 50 :");
while (i <= 50) {
console.log(i);
compteur++;
i += 2;
}
console.log("Nombre total de nombres pairs :", compteur);
Exercice 4
function estPremier(n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 === 0 || n % 3 === 0) return false;
for (let i = 5; i * i <= n; i += 6) {
if (n % i === 0 || n % (i + 2) === 0) {
return false;
}
}
return true;
}
console.log("7 est premier :", estPremier(7));
console.log("15 est premier :", estPremier(15));
console.log("23 est premier :", estPremier(23));
console.log("25 est premier :", estPremier(25));
Exercice 5
let prix = [];
for (let i = 0; i < 6; i++) {
prix[i] = parseFloat(prompt(`Entrez le prix de l'article ${i + 1} :`));
}
let total = prix.reduce((sum, p) => sum + p, 0);
console.log("Prix total :", total + "€");
if (total > 100) {
total = total * 0.9;
console.log("Remise de 10% appliquée !");
}
console.log("Prix final :", total + "€");
Exercice 6
function kmVelMiles(km) {
return km * 0.621371;
}
let kilometres = parseFloat(prompt("Entrez la distance en kilomètres :"));
let miles = kmVelMiles(kilometres);
console.log(kilometres + " km = " + miles.toFixed(2) + " miles");
Exercice 7
let voiture = {
marque: "Toyota",
modele: "Corolla",
annee: 2022,
couleur: "Rouge",
description: function() {
return `Voiture ${this.marque} ${this.modele} de ${this.annee}, couleur ${this.couleur}`;
}
};
console.log(voiture.description());
Exercice 8
javascript
let nombres = [1, 2, 3, 4, 5];
let carres = nombres.map(n => n * n);
console.log("Tableau original :", nombres);
console.log("Tableau des carrés :", carres);
Exercice 9
html
<!-- HTML -->
<input type="text" id="nom" placeholder="Votre nom">
<input type="text" id="prenom" placeholder="Votre prénom">
<button id="btn">Valider</button>
<div id="message"></div>
document.getElementById("btn").addEventListener("click", function() {
let nom = document.getElementById("nom").value;
let prenom = document.getElementById("prenom").value;
let message = `Bienvenue ${prenom} ${nom} !`;
document.getElementById("message").innerHTML = message;
});
Exercice 10
Explication : Le code parcourt un tableau et additionne tous les nombres pairs.
Sortie : 6 (car 2 + 4 = 6)
Le code teste si chaque élément est pair avec %2 === 0 et ajoute les nombres pairs à la
variable resultat.
Exercice 11
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
// Version optimisée (itérative)
function fibonacciIteratif(n) {
if (n <= 1) return n;
let a = 0, b = 1;
for (let i = 2; i <= n; i++) {
let temp = a + b;
a = b;
b = temp;
}
return b;
}
console.log("Fibonacci(8) =", fibonacci(8)); // Résultat : 21
Exercice 12
function compterVoyelles(chaine) {
let voyelles = "aeiouAEIOU";
let compteur = 0;
for (let i = 0; i < chaine.length; i++) {
if (voyelles.includes(chaine[i])) {
compteur++;
}
}
return compteur;
}
let phrase = "JavaScript est fantastique";
console.log(`Nombre de voyelles : ${compterVoyelles(phrase)}`);
Exercice 13
let etudiants = [
{nom: "Alice", note: 15},
{nom: "Bob", note: 18},
{nom: "Charlie", note: 12},
{nom: "Diana", note: 16}
];
// Trier par note décroissante
etudiants.sort((a, b) => b.note - a.note);
console.log("Classement :");
for (let i = 0; i < etudiants.length; i++) {
console.log(`${i + 1}. ${etudiants[i].nom} - ${etudiants[i].note}/20`);
}
Exercice 14
html
<!-- HTML -->
<input type="text" id="textInput" placeholder="Entrez du texte">
<button id="ajouterBtn">Ajouter</button>
<ul id="liste"></ul>
document.getElementById("ajouterBtn").addEventListener("click", function() {
let texte = document.getElementById("textInput").value;
if (texte.trim() !== "") {
let li = document.createElement("li");
li.textContent = texte;
document.getElementById("liste").appendChild(li);
document.getElementById("textInput").value = "";
}
});
Exercice 15
Erreurs et corrections :
// Code corrigé
function calculerAge(anneeNaissance) {
let anneeActuelle = 2025; // Mise à jour de l'année
let age = anneeActuelle - parseInt(anneeNaissance); // Conversion en nombre
return age; // "return" au lieu de "retourner"
}
let monAge = calculerAge("1990");
console.log("J'ai " + monAge + " ans");
Erreurs trouvées :
1. retourner → return
2. L'année devrait être 2025
3. Conversion de string en nombre avec parseInt()
Exercice 16
function additionner(a, b) { return a + b; }
function soustraire(a, b) { return a - b; }
function multiplier(a, b) { return a * b; }
function diviser(a, b) { return b !== 0 ? a / b : "Division par zéro impossible"; }
function calculatrice() {
let operation = prompt("Choisissez une opération (+, -, *, /) :");
let a = parseFloat(prompt("Premier nombre :"));
let b = parseFloat(prompt("Deuxième nombre :"));
let resultat;
switch(operation) {
case "+": resultat = additionner(a, b); break;
case "-": resultat = soustraire(a, b); break;
case "*": resultat = multiplier(a, b); break;
case "/": resultat = diviser(a, b); break;
default: resultat = "Opération invalide";
}
console.log(`Résultat : ${resultat}`);
}
calculatrice();
Exercice 17
function devinerNombre() {
let nombreSecret = Math.floor(Math.random() * 100) + 1;
let tentatives = 7;
let trouve = false;
console.log("Devinez le nombre entre 1 et 100 !");
while (tentatives > 0 && !trouve) {
let guess = parseInt(prompt(`Tentative ${8 - tentatives}. Votre proposition :`));
if (guess === nombreSecret) {
alert("Bravo ! Vous avez trouvé !");
trouve = true;
} else if (guess > nombreSecret) {
alert("Trop grand !");
} else {
alert("Trop petit !");
}
tentatives--;
}
if (!trouve) {
alert(`Dommage ! Le nombre était ${nombreSecret}`);
}
}
devinerNombre();
Exercice 18
function inverserMots(phrase) {
return phrase.split(' ').reverse().join(' ');
}
let phrase = "Bonjour le monde";
console.log("Phrase originale :", phrase);
console.log("Phrase inversée :", inverserMots(phrase));
Exercice 19
html
<!-- HTML -->
<table id="tableau" border="1">
<tr>
<th>Colonne 1</th>
<th>Colonne 2</th>
</tr>
</table>
<button id="ajouterLigne">Ajouter ligne</button>
document.getElementById("ajouterLigne").addEventListener("click", function() {
let tableau = document.getElementById("tableau");
let nouvelleLigne = tableau.insertRow();
let cellule1 = nouvelleLigne.insertCell(0);
let cellule2 = nouvelleLigne.insertCell(1);
cellule1.innerHTML = "Cellule 1";
cellule2.innerHTML = "Cellule 2";
});
Exercice 20
Problème : Le code affiche 3 trois fois au lieu de 0, 1, 2.
Explication : La variable var i est partagée par toutes les fonctions setTimeout. Quand elles
s'exécutent, la boucle est terminée et i vaut 3.
Solution 1 - Utiliser let :
javascript
for (let i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 100);
}
Solution 2 - Utiliser une closure :
javascript
for (var i = 0; i < 3; i++) {
(function(index) {
setTimeout(function() {
console.log(index);
}, 100);
})(i);
}