5.2.1 L'alternative if – else et le test if

Icône de l'outil pédagogique L'alternative if – else et le test if

L'instruction if permet d'effectuer une action si et seulement si une certaine condition est satisfaite. Elle se complète éventuellement d'une partie else, optionnelle.

L'instruction if‐else permet de réaliser l'alternative en « pseudo‐code » suivante :

si condition alors faire { ... }
sinon faire { ... }

Sa syntaxe est :

Il n’y a pas de point‐virgule sur les lignes if et else.

Notez le décalage à droite (ou « indentation », obtenu par la touche tabulation du clavier) des instructions conditionnelles du if ou du else. Ce décalage est INDISPENSABLE.

L’instruction else est facultative, l'instruction if peut être utilisée seule. Par exemple :

Si l'expression a==b est vraie (non nulle), l'instruction d’affichage printf est effectuée ; sinon, l'exécution reprend à la ligne suivante. C'est l'expression la plus simple de l'instruction if.

L'instruction if complétée avec else permet de choisir entre deux actions (alternative). Ainsi :

Si l'expression a>=b est vraie (non nulle), l'instruction distance = a-b est exécutée ; dans le cas contraire (expression nulle), c'est l'instruction distance = b-a qui est exécutée.

Exemple 29 : Utilisation de if - else :

Il est possible d'imbriquer les instructions if. Pour lever l'ambiguïté, en l’absence de parenthèses bien placées, C associe toujours le else au if sans else le plus proche.

Un bon usage des tabulations est indispensable pour rendre le programme lisible, surtout avec des if-else imbriqués.

Exemple 30 : Ecriture de if-else imbriqués (deux tabulations sont nécessaires) :

Certains if‐else imbriqués traduisent un choix multiple qu'on ne peut pas réaliser avec switch, parce que le choix ne se fait pas en fonction d'une variable entière. Par exemple, lorsqu'on compare successivement une chaîne de caractères à plusieurs chaînes fixes. Il est alors bien pratique (et c'est la seule exception à la règle de style qui impose les tabulations) de les écrire au même niveau avec else if :

/* Choix multiple (quand switch est inutilisable) : */

if (condition1) { ... }
else if (condition2) { ... }
else if (condition3) { ... }
else { ... }

Exemple 31 : Utilisation de if - else if - else if :

short int n ; /* valeur à saisir au clavier par exemple (non fait ici) */

if (n>0) printf("\n Le nb n est strictement positif") ;
else if (n<0) printf("\n Le nb n est strictement négatif") ;
else printf("\n Le nb n est nul") ;

On prendra garde de ne pas masquer avec des tabulations à quel if se rapporte un else.

L'exemple suivant illustre le danger des instructions if‐else imbriquées. On s'efforcera d'éviter de telles imbrications.

 

Exemple 32 : Danger des if-else imbriqués :