Lorsquon a le choix dune alternative, ce qui est extrêmement fréquent, on utilise linstruction de branchement simple if, dont la syntaxe est la suivante :
if (condition) action1; else action2;
Ici, condition désigne nimporte quelle expression donnant un résultat numérique (entier ou à virgule flottante). Cette quantité est calculée ; si elle est non nulle, linstruction action1 est exécutée ; dans le cas contraire, linstruction action2 est exécutée. Dans les deux cas, le déroulement du programme se poursuit normalement sur linstruction suivante.
Par exemple, linstruction suivante donne un message différent selon que la variable nombre est nulle ou non :
if (nombre) cout << "Nombre non nul"; else cout << "Nombre nul";
Notons bien que les parenthèses entourant lexpression de condition, même lorsquelle se réduit à la valeur dune seule variable comme ici, sont absolument obligatoires.
Dans la pratique, on utilisera plutôt des opérateurs spéciaux permettant de comparer deux quantités. Ces opérateurs sont < (inférieur à), > (supérieur à), <= (inférieur ou égal), >= (supérieur ou égal), == (égal à), != (différent). Ils renvoient 1 si linégalité ou légalité est vérifiée, 0 sinon.
Ainsi, linstruction suivante place dans y la valeur absolue de x :
if (x < 0) y = -x; else y = x;
Exercice 1.3 | Écrire une fonction abs qui renvoie la valeur absolue dun nombre. |
Voir solution |
Il arrive parfois que lon nait pas dalternative, simplement une action à faire si la condition est réalisée, rien sinon. Dans ce cas, on peut omettre la clause else. Voici une instruction qui remplace x par sa valeur absolue :
if (x < 0) x = -x;
On peut aussi ne rien écrire à la place de action1, comme ceci :
if (erreur) ; else cout << "Aucune erreur";
Notons le point-virgule obligatoire entre la parenthèse fermante et le mot else. On préférera toutefois une écriture plus explicite :
if (erreur == 0) cout << "Aucune erreur";
On peut aussi utiliser lopérateur !
qui change les valeurs nulles en 1 et les autres en 0, inversant ainsi les conditions :
if (!erreur) cout << "Aucune erreur";
Il arrive souvent que lon souhaite faire plusieurs actions ensemble dans le cas où une condition est vérifiée. Dans ce cas, on doit les grouper avec des accolades, comme ceci :
if (x + y < 0) { x = 0; y =0; }else { x = x + y; y = x -y; }
ou de manière plus aérée :
if (x + y < 0) { x = 0; y = 0; } else { x = x + y; y = x -y; }
Observons labsence de point-virgule devant else et à la fin de lensemble : les accolades fermantes les rendent inutiles (devant else, un point-virgule est ici fautif, et produit une erreur Error : Misplaced else, else mal placé ; à la fin de lensemble, il ajoute simplement une instruction vide). Par contre, les points-virgules devant ces accolades fermantes sont obligatoires (message derreur Error : Statement missing ;, ; manquant).
Précédent | Sommaire | Suivant |