Exercices progressifs
Dix exercices progressifs pour consolider les bases de la programmation.
Objectifs
Consolider les bases du chapitre JavaScript en codant dix exercices de difficulté croissante. Pour chacun : rédigez le programme, testez-le dans Node.js, puis seulement consultez l'indice ou la correction.
🔗 Pour vous rafraîchir la mémoire : découper avec des fonctions · tableaux et objets
Règles
- Chaque exercice est un fichier séparé :
exo-01.js,exo-02.js, etc. - Exécutez systématiquement avec
node fichier.jsavant de passer au suivant. - N'ouvrez la correction qu'une fois votre programme testé.
Exercices
1. Hello World
Écrivez un programme qui affiche :
Hello World
Contrainte : une seule instruction console.log.
2. Calculatrice
Écrivez un programme qui calcule et affiche 17 + 8.
Contrainte : utiliser deux variables a et b, puis une fonction addition.
3. Pair ou impair
Pour une valeur nombre = 87, affichez si elle est paire ou impaire.
Contrainte : utiliser l'opérateur modulo %.
4. Celsius / Fahrenheit
Convertissez celsius = 25 en Fahrenheit : fahren = celsius * 9 / 5 + 32 et affichez le résultat avec « °F ».
5. Moyenne
Calculez la moyenne de [12, 15, 8, 17, 10, 14] avec une boucle, puis vérifiez le résultat avec vos calculs.
Contrainte : aucun appel de fonction de liste pour la somme : une vraie boucle.
6. Table de multiplication
Affichez la table de 7 : 7 × 1 = 7 jusqu'à 7 × 10 = 70.
Contrainte : utiliser une boucle for et l'affichage de la ligne complète.
7. Deviner un nombre
Programme avec secret = 42 qui lit la valeur de la variable essai = 41 et affiche :
trop petit
Les trois cas (« trop petit », « trop grand », « trouvé ») doivent être couverts : testez-les en changeant essai.
8. Gestionnaire de contacts
Un tableau de contacts (name, email) avec trois entrées. Affichez pour chacun : nom : email.
Contrainte : une boucle for...of, pas de copier-coller.
9. Le plus grand nombre
Écrivez une fonction plusGrand(nombres) qui rend le plus grand élément du tableau sans utiliser Math.max. Tableau vide → rendre null.
plusGrand([4, 19, 7]); // 19
plusGrand([]); // null
10. Fusionner une liste de courses
Écrivez fusionner(courses) qui reçoit un tableau d'objets { produit, quantite } et renvoie un nouvel objet regroupant les quantités par produit :
fusionner([
{ produit: "pommes", quantite: 2 },
{ produit: "lait", quantite: 1 },
{ produit: "pommes", quantite: 3 },
]); // { pommes: 5, lait: 1 }
Contrainte : la fonction ne modifie ni le tableau reçu, ni ses éléments.
Indices
Exercice 2. Il faut une fonction addition(a, b) et un appel avec console.log.
Exercice 3. nombre % 2 === 0 est le test le plus courant de la parité.
Exercice 4. Les opérations se font avec les opérateurs standards ; les parenthèses ne sont pas nécessaires ici : * et / avant +.
Exercice 5. La somme accumulée dans let total = 0, puis total / notes.length. Vérifiez : 12+15+8+17+10+14 = 76, moyenne = 12,66...
Exercice 6. La chaîne se construit avec les backticks : `${i} × ${7} = ${i * 7}`.
Exercice 7. Un if / else if / else à trois branches ; les variables regroupées en haut du programme.
Exercice 8. Chaque contact est un objet : l'accès se fait par point contact.name et contact.email.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Solutions
1. Hello World
console.log("Hello World");
2. Calculatrice
let a = 17;
let b = 8;
function addition(x, y) {
return x + y;
}
console.log(addition(a, b)); // 25
3. Pair ou impair
let nombre = 87;
if (nombre % 2 === 0) {
console.log("pair");
} else {
console.log("impair");
}
4. Celsius / Fahrenheit
let celsius = 25;
let fahren = celsius * 9 / 5 + 32;
console.log(`${fahren} °F`); // 77 °F
5. Moyenne
const notes = [12, 15, 8, 17, 10, 14];
let total = 0;
for (const note of notes) {
total += note;
}
console.log(total / notes.length); // 12.666...
6. Table de multiplication
for (let i = 1; i <= 10; i++) {
console.log(`7 × ${i} = ${7 * i}`);
}
7. Deviner un nombre
let secret = 42;
let essai = 41; // à changer : 43, 42...
if (essai > secret) {
console.log("trop grand");
} else if (essai < secret) {
console.log("trop petit");
} else {
console.log("trouvé");
}
8. Gestionnaire de contacts
const contacts = [
{ name: "Paul", email: "paul@exemple.fr" },
{ name: "Marie", email: "marie@exemple.fr" },
{ name: "Lucas", email: "lucas@exemple.fr" },
];
for (const contact of contacts) {
console.log(`${contact.name} : ${contact.email}`);
}
Solutions 9 et 10
Exercice 9 — plus grand nombre. Même motif accumulateur que « minimum/maximum » du chapitre 5 :
function plusGrand(nombres) {
if (nombres.length === 0) return null;
let candidat = nombres[0]; // partir du 1er, jamais de 0 !
for (let i = 1; i < nombres.length; i++) {
if (nombres[i] > candidat) candidat = nombres[i];
}
return candidat;
}
Piège classique : partir de 0 échoue sur [-8, -3] (la réponse serait 0, fausse). D'où le départ au premier élément, et le cas du tableau vide traité explicitement.
Exercice 10 — liste de courses. Objet indexé par produit + compteur :