Les Conditions
Apprendre a l'ordinateur a prendre des decisions
Le chemin du if / else
La condition il_pleut est-elle vraie ? Bascule l'interrupteur et regarde quel chemin le programme emprunte.
Condition fausse → le bloc else s'exécute.
La logique du choix
Dans la vie, tu fais constamment des choix :
"S'il pleut, je prends un parapluie. Sinon, je sors comme ca."
La programmation fonctionne pareil ! Les conditions permettent au code d'executer differentes actions selon la situation.
Arbre de decision interactif
Clique sur la condition pour voir le chemin
Operateurs de comparaison
Pour comparer des valeurs et obtenir vrai ou faux
Operateurs logiques
Pour combiner plusieurs conditions
Les DEUX conditions doivent etre vraies
age >= 18 AND permis == true → peut conduire
AU MOINS UNE condition doit etre vraie
weekend == true OR ferie == true → repos
Inverse la condition
NOT pluie → beau temps
La structure IF
Le bloc de code s'execute SEULEMENT si la condition est vraie
age = 20 if age >= 18: print("Tu es majeur !")
let age = 20; if (age >= 18) { console.log("Tu es majeur !"); }
int age = 20; if (age >= 18) { System.out.println("Tu es majeur !"); }
int age = 20; if (age >= 18) { Console.WriteLine("Tu es majeur !"); }
int age = 20; if (age >= 18) { std::cout << "Tu es majeur !" << std::endl; }
age <- 20 if (age >= 18) { print("Tu es majeur !") }
Note Python : Pas de parentheses ni accolades ! L'indentation (espaces) delimite le bloc.
IF - ELSE
Executer un bloc OU un autre selon la condition
temperature = 15 if temperature > 25: print("Il fait chaud") else: print("Il fait frais")
let temperature = 15; if (temperature > 25) { console.log("Il fait chaud"); } else { console.log("Il fait frais"); }
int temperature = 15; if (temperature > 25) { System.out.println("Il fait chaud"); } else { System.out.println("Il fait frais"); }
int temperature = 15; if (temperature > 25) { Console.WriteLine("Il fait chaud"); } else { Console.WriteLine("Il fait frais"); }
int temperature = 15; if (temperature > 25) { std::cout << "Il fait chaud" << std::endl; } else { std::cout << "Il fait frais" << std::endl; }
temperature <- 15 if (temperature > 25) { print("Il fait chaud") } else { print("Il fait frais") } # Ou avec ifelse() vectorise ifelse(temperature > 25, "Chaud", "Frais")
Conditions multiples (elif/else if)
Tester plusieurs conditions en cascade
note = 85 if note >= 90: print("Excellent ! A") elif note >= 80: print("Tres bien ! B") elif note >= 70: print("Bien ! C") elif note >= 60: print("Passable. D") else: print("A retravailler. F")
let note = 85; if (note >= 90) { console.log("Excellent ! A"); } else if (note >= 80) { console.log("Tres bien ! B"); } else if (note >= 70) { console.log("Bien ! C"); } else if (note >= 60) { console.log("Passable. D"); } else { console.log("A retravailler. F"); }
int note = 85; if (note >= 90) { System.out.println("Excellent ! A"); } else if (note >= 80) { System.out.println("Tres bien ! B"); } else if (note >= 70) { System.out.println("Bien ! C"); } else if (note >= 60) { System.out.println("Passable. D"); } else { System.out.println("A retravailler. F"); }
int note = 85; if (note >= 90) { Console.WriteLine("Excellent ! A"); } else if (note >= 80) { Console.WriteLine("Tres bien ! B"); } else if (note >= 70) { Console.WriteLine("Bien ! C"); } else if (note >= 60) { Console.WriteLine("Passable. D"); } else { Console.WriteLine("A retravailler. F"); }
int note = 85; if (note >= 90) { std::cout << "Excellent ! A" << std::endl; } else if (note >= 80) { std::cout << "Tres bien ! B" << std::endl; } else if (note >= 70) { std::cout << "Bien ! C" << std::endl; } else if (note >= 60) { std::cout << "Passable. D" << std::endl; } else { std::cout << "A retravailler. F" << std::endl; }
note <- 85 if (note >= 90) { print("Excellent ! A") } else if (note >= 80) { print("Tres bien ! B") } else if (note >= 70) { print("Bien ! C") } else if (note >= 60) { print("Passable. D") } else { print("A retravailler. F") } # Ou avec cut() pour classifier (typique R !) cut(note, c(0,60,70,80,90,100), c("F","D","C","B","A"))
Important : L'ordre compte ! Le code s'arrete a la premiere condition vraie.
Switch / Match
Pour comparer une valeur a plusieurs cas possibles
# Python 3.10+ avec match jour = "lundi" match jour: case "lundi": print("Debut de semaine") case "vendredi": print("Bientot le weekend !") case "samedi" | "dimanche": print("Weekend !") case _: print("Jour normal")
let jour = "lundi"; switch (jour) { case "lundi": console.log("Debut de semaine"); break; case "vendredi": console.log("Bientot le weekend !"); break; case "samedi": case "dimanche": console.log("Weekend !"); break; default: console.log("Jour normal"); }
String jour = "lundi"; switch (jour) { case "lundi": System.out.println("Debut de semaine"); break; case "vendredi": System.out.println("Bientot le weekend !"); break; case "samedi", "dimanche": System.out.println("Weekend !"); break; default: System.out.println("Jour normal"); }
string jour = "lundi"; switch (jour) { case "lundi": Console.WriteLine("Debut de semaine"); break; case "vendredi": Console.WriteLine("Bientot le weekend !"); break; case "samedi": case "dimanche": Console.WriteLine("Weekend !"); break; default: Console.WriteLine("Jour normal"); }
// C++ switch ne supporte que int/char int jourNum = 1; // 1=lundi, 5=vendredi... switch (jourNum) { case 1: std::cout << "Debut de semaine" << std::endl; break; case 5: std::cout << "Bientot le weekend !" << std::endl; break; case 6: case 7: std::cout << "Weekend !" << std::endl; break; default: std::cout << "Jour normal" << std::endl; }
# R utilise switch() comme fonction jour <- "lundi" message <- switch(jour, "lundi" = "Debut de semaine", "vendredi" = "Bientot le weekend !", "samedi" = "Weekend !", "dimanche" = "Weekend !", "Jour normal" # default ) print(message)
Attention : En JS/Java/C#/C++, n'oublie pas le break sinon le code continue dans le cas suivant !
L'operateur ternaire
Un if-else en une seule ligne (pour les cas simples)
age = 20 # Syntaxe Python statut = "majeur" if age >= 18 else "mineur" print(statut) # "majeur"
let age = 20; // condition ? siVrai : siFaux let statut = age >= 18 ? "majeur" : "mineur"; console.log(statut); // "majeur"
int age = 20; // condition ? siVrai : siFaux String statut = age >= 18 ? "majeur" : "mineur"; System.out.println(statut); // "majeur"
int age = 20; // condition ? siVrai : siFaux string statut = age >= 18 ? "majeur" : "mineur"; Console.WriteLine(statut); // "majeur"
int age = 20; // condition ? siVrai : siFaux std::string statut = age >= 18 ? "majeur" : "mineur"; std::cout << statut << std::endl; // "majeur"
age <- 20 # ifelse() vectorise (applique sur tout un vecteur !) statut <- ifelse(age >= 18, "majeur", "mineur") print(statut) # "majeur" # Super puissant sur vecteurs ! ages <- c(15, 22, 17, 30) ifelse(ages >= 18, "majeur", "mineur") # "mineur" "majeur" "mineur" "majeur"
Syntaxe : condition ? valeurSiVrai : valeurSiFaux
(Python inverse : valeurSiVrai if condition else valeurSiFaux)
(R : ifelse(condition, siVrai, siFaux) - fonctionne sur vecteurs !)
Exemple pratique : Systeme de login
username = "alice" password = "secret123" is_banned = False # Verification en cascade if is_banned: print("Compte banni") elif username == "" or password == "": print("Champs vides") elif len(password) < 8: print("Mot de passe trop court") elif username == "alice" and password == "secret123": print("Connexion reussie !") else: print("Identifiants incorrects")
let username = "alice"; let password = "secret123"; let isBanned = false; // Verification en cascade if (isBanned) { console.log("Compte banni"); } else if (username === "" || password === "") { console.log("Champs vides"); } else if (password.length < 8) { console.log("Mot de passe trop court"); } else if (username === "alice" && password === "secret123") { console.log("Connexion reussie !"); } else { console.log("Identifiants incorrects"); }
String username = "alice"; String password = "secret123"; boolean isBanned = false; // Verification en cascade if (isBanned) { System.out.println("Compte banni"); } else if (username.isEmpty() || password.isEmpty()) { System.out.println("Champs vides"); } else if (password.length() < 8) { System.out.println("Mot de passe trop court"); } else if (username.equals("alice") && password.equals("secret123")) { System.out.println("Connexion reussie !"); } else { System.out.println("Identifiants incorrects"); }
Erreurs courantes
if (x = 5)
→ Assigne 5 a x !if (x == 5)
→ Compare x a 5
if (x > 5)
doA();
doB(); ← Toujours execute !
if (x > 10 && x < 5)
→ Jamais vrai !
Debugging : Trouver et corriger les erreurs
Ton code ne marche pas ? Pas de panique ! Le debugging est l'art de trouver et corriger les bugs. Voici tes outils :
🖨️ 1. Print / Console.log - Ton meilleur ami
Affiche la valeur de tes variables pour voir ce qui se passe vraiment :
age = 15
print(f"age vaut: {age}")
if age >= 18:
print("Majeur")
let age = 15;
console.log("age vaut:", age);
if (age >= 18) {
console.log("Majeur");
}
💡 Mets des prints AVANT et DANS tes conditions pour voir quel chemin le code prend !
📖 2. Lire les messages d'erreur
Les erreurs ont l'air effrayantes mais elles t'aident ! Voici comment les lire :
Où est le problème
Type d'erreur
Suggestion de fix !
🔍 3. Le Debugger (mode avancé)
Les IDE (VS Code, PyCharm) ont un debugger intégré. Tu peux :
Pause le code à une ligne
Surveille une variable
Exécute ligne par ligne
Voir d'où vient l'appel
✅ Checklist quand ça marche pas :
1. Lis le message d'erreur (ligne + type)
2. Ajoute des print() pour voir les valeurs
3. Vérifie tes = vs == et tes accolades
4. Teste avec des valeurs simples d'abord
5. Prends une pause et reviens avec un regard neuf 🧠
Ce qu'il faut retenir
Teste tes connaissances
Mode Survie
10 questions sur les conditions, zéro erreur autorisée.
Comment as-tu trouvé ce quiz ?