Raisonner par cas : conditions imbriquées
Organiser des décisions complexes : conditions imbriquées, ordre des tests et cas limites.
Ce que tu vas apprendre
- Imbriquer des conditions sans ambiguïté
- Découper un problème en cas qui ne se recouvrent pas
- Penser aux cas limites (égalité, zéro, bornes)
Imbriquer des conditions
Un if peut contenir d'autres if. Mets toujours des accolades : un else se rattache au if le plus proche, ce qui crée des erreurs difficiles à voir.
Découper en cas
Avant d'écrire du code, liste les cas sur papier : chaque situation possible doit tomber dans un seul cas. Un tableau à deux entrées aide souvent.
Vérifie ensuite les cas limites : valeurs égales, zéro, bornes des intervalles, fin de mois, fin d'année…
Exemples commentés
1.Tarif selon l'âge et le jour
#include <stdio.h>
int main(void) {
int age, mercredi; // mercredi : 1 si oui, 0 sinon
scanf("%d %d", &age, &mercredi);
int prix;
if (age < 12) {
prix = 5;
} else {
if (mercredi) {
prix = 7; // tarif réduit le mercredi
} else {
prix = 9;
}
}
printf("%d euros\n", prix);
return 0;
}Entrée
30 1
Sortie
7 euros
Le premier test sépare les enfants ; pour les autres, un second test regarde le jour.
2.Ranger deux valeurs
#include <stdio.h>
int main(void) {
int a, b;
scanf("%d %d", &a, &b);
if (a > b) { // on échange pour avoir a <= b
int tmp = a;
a = b;
b = tmp;
}
printf("%d %d\n", a, b);
return 0;
}Entrée
9 4
Sortie
4 9
Plutôt que d'écrire un cas pour chaque ordre possible, on normalise d'abord les données, puis on traite un seul cas.
Chaque exemple est compilé et exécuté automatiquement pour garantir la sortie affichée.
Erreurs fréquentes
Le else qui se rattache au mauvais if
À éviter
if (a > 0)
if (b > 0)
printf("deux positifs\n");
else
printf("a négatif\n");À préférer
if (a > 0) {
if (b > 0) {
printf("deux positifs\n");
}
} else {
printf("a négatif\n");
}Malgré l'indentation, le else appartient au if (b > 0). Les accolades lèvent l'ambiguïté.
Oublier l'égalité
« plus grand » et « plus petit » ne couvrent pas le cas où les deux valeurs sont égales. Demande-toi toujours ce qui se passe à la frontière.
Entraîne-toi
5 questions variées pour fixer la leçon : choix, résultat à prévoir, ligne à compléter, code à remettre dans l'ordre, erreur à trouver.
À toi de jouer !
20 exercices pour mettre cette leçon en pratique, du plus simple au plus avancé.