Instruction de branchement simple if

Lorsqu’on a le choix d’une alternative, ce qui est extrêmement fréquent, on utilise l’instruction de branchement simple if, dont la syntaxe est la suivante :

if (condition) action1; else action2;

Ici, condition désigne n’importe quelle expression donnant un résultat numérique (entier ou à virgule flottante). Cette quantité est calculée ; si elle est non nulle, l’instruction action1 est exécutée ; dans le cas contraire, l’instruction action2 est exécutée. Dans les deux cas, le déroulement du programme se poursuit normalement sur l’instruction suivante.

Par exemple, l’instruction 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 l’expression de condition, même lorsqu’elle se réduit à la valeur d’une 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 l’inégalité ou l’égalité est vérifiée, 0 sinon.

Ainsi, l’instruction 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 d’un nombre.

Voir solution

Il arrive parfois que l’on n’ait pas d’alternative, 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 l’opé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 l’on 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 l’absence de point-virgule devant else et à la fin de l’ensemble : 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 l’ensemble, il ajoute simplement une instruction vide). Par contre, les points-virgules devant ces accolades fermantes sont obligatoires (message d’erreur Error : Statement missing ;, ; manquant).

Précédent Précédent Sommaire Sommaire Suivant Suivant