L'art de maîtriser l'algorithmique de base
Utilisez les flèches, cliquez ou glissez pour naviguer
1. Savoir implémenter FizzBuzz
Sans erreur d'ordre de conditions
2. Reconnaître les 5 patterns de boucles
Accumuler, chercher, compter, filtrer, min/max
3. Décomposer un nombre en chiffres
Utilisation de modulo (% 10) et Math.floor()
4. Comprendre la conjecture de Collatz
Et l'implémenter en code
Présenter FizzBuzz
L'exercice le plus célèbre de la programmation, utilisé en entretien
Le piège de l'ordre des conditions
Tester % 15 AVANT % 3 et % 5
Démo live : coder FizzBuzz ensemble
Faire l'erreur d'ordre puis la corriger
Les 5 patterns de boucles
Accumuler, chercher, compter, filtrer, min/max
Le schéma universel
Montrer que tous suivent le même schéma : initialiser → boucler → résultat
Les règles :
⚠️ Le piège de l'ordre
Quelle condition vérifier en premier ?
if (n % 3 === 0) {
console.log("Fizz");
} else if (n % 5 === 0) {
console.log("Buzz");
} else if (n % 15 === 0) {
// Jamais atteint pour 15!
console.log("FizzBuzz");
}
// Condition la plus restrictive D'ABORD
if (n % 15 === 0) {
console.log("FizzBuzz");
} else if (n % 3 === 0) {
console.log("Fizz");
} else if (n % 5 === 0) {
console.log("Buzz");
}
Point Clé : Toujours tester la condition la plus spécifique en premier !
Les briques de base de tous les programmes
Somme, concaténation
Trouver un élément
Combien d'éléments ?
Garder selon critère
Le plus petit/grand
Tous ces patterns suivent EXACTEMENT la même logique en 3 étapes :
Créer une variable AVANT la boucle
let total = 0;
Mettre à jour PENDANT la boucle
total += i;
Utiliser APRÈS la boucle
return total;
Calculer une somme, concaténer une chaîne, ou multiplier des valeurs.
// Exemple : Somme des éléments d'un tableau
function calculerSomme(nombres) {
// 1️⃣ Initialiser
let total = 0;
// 2️⃣ Boucler
for (let i = 0; i < nombres.length; i++) {
total += nombres[i];
}
// 3️⃣ Résultat
return total;
}
Vérifier si un élément existe ou trouver sa position.
// Exemple : Trouver si un nombre pair existe
function contientPair(nombres) {
// 1️⃣ Initialiser (hypothèse par défaut)
let trouve = false;
// 2️⃣ Boucler
for (let i = 0; i < nombres.length; i++) {
if (nombres[i] % 2 === 0) {
trouve = true;
break; // Optimisation: on peut s'arrêter
}
}
// 3️⃣ Résultat
return trouve;
}
Déterminer combien d'éléments respectent une condition.
// Exemple : Compter le nombre de majuscules
function compterMajuscules(texte) {
// 1️⃣ Initialiser
let compteur = 0;
// 2️⃣ Boucler
for (let i = 0; i < texte.length; i++) {
if (texte[i] >= 'A' && texte[i] <= 'Z') {
compteur++;
}
}
// 3️⃣ Résultat
return compteur;
}
Construire une nouvelle liste en gardant seulement certains éléments.
// Exemple : Garder uniquement les nombres positifs
function garderPositifs(nombres) {
// 1️⃣ Initialiser (tableau vide)
let resultats = [];
// 2️⃣ Boucler
for (let i = 0; i < nombres.length; i++) {
if (nombres[i] > 0) {
resultats.push(nombres[i]);
}
}
// 3️⃣ Résultat
return resultats;
}
Trouver le plus grand ou le plus petit élément d'une série.
// Exemple : Trouver le plus grand nombre
function trouverMax(nombres) {
// 1️⃣ Initialiser AVEC LE PREMIER ÉLÉMENT
let max = nombres[0];
// 2️⃣ Boucler (on peut commencer à 1)
for (let i = 1; i < nombres.length; i++) {
if (nombres[i] > max) {
max = nombres[i]; // Nouveau record !
}
}
// 3️⃣ Résultat
return max;
}
Pour une somme (+) : let sum = 0;
Pour un produit (*) : let prod = 1; (0 annulerait tout !)
Ne jamais initialiser avec 0 !
Si on cherche le max de [-10, -5, -20], si max = 0 au départ, le résultat sera 0 (faux !)
Toujours initialiser avec le premier élément : let max = array[0];
Comment récupérer chaque chiffre d'un nombre (ex: 456) ?
On utilise le modulo 10 (% 10)
456 % 10 // Résultat : 6
On divise par 10 et on arrondit vers le bas
Math.floor(456 / 10) // Résultat : 45
while (n > 0) {
let chiffre = n % 10;
// faire quelque chose avec le chiffre
n = Math.floor(n / 10);
}
Aussi appelée "Suite de Syracuse"
nn est pair, on le divise par 2 : n = n / 2n est impair, on le multiplie par 3 et on ajoute 1 : n = n * 3 + 1n > 1La conjecture dit que, quel que soit le nombre de départ, on finit TOUJOURS par arriver à 1 !
🎯 FizzBuzz : L'ordre compte ! Du plus spécifique au plus général.
🔄 Boucles : Initialiser → Boucler → Résultat. C'est universel.
⚠️ Initialisation : Attention aux Min/Max et aux Produits (*).