Previous Next Up Index Contents

5.3. if - else if - ... - else


En combinant plusieurs structures if - else en une expression nous obtenons une structure qui est très courante pour prendre des décisions entre plusieurs alternatives:

if - else - ... - else

if ( <expr1> ) 
      <bloc1>
   else if (<expr2>)
      <bloc2>
   else if (<expr3>)
      <bloc3>
   else if (<exprN>)
      <blocN>
   else <blocN+1>

Les expressions <expr1> ... <exprN> sont évaluées du haut vers le bas jusqu'à ce que l'une d'elles soit différente de zéro. Le bloc d'instructions y lié est alors exécuté et le traitement de la commande est terminé.

Exemple

#include <stdio.h>
main()
{
 int A,B;
 printf("Entrez deux nombres entiers :");
 scanf("%i %i", &A, &B);
 if (A > B) 
     printf("%i est plus grand que %i\n", A, B);
 else if (A < B) 
     printf("%i est plus petit que %i\n", A, B);
 else 
     printf("%i est égal à %i\n", A, B);
 return 0;
}

La dernière partie else traite le cas où aucune des conditions n'a été remplie. Elle est optionnelle, mais elle peut être utilisée très confortablement pour détecter des erreurs.

Exemple

...
printf("Continuer (O)ui / (N)on ?");
getchar(C);
if (C=='O')
     {
      ...
     }
else if (C=='N')
     printf("Au revoir ...\n");
else
     printf("\aErreur d'entrée !\n");
...


Exercice 5.2

Considérez la séquence d'instructions suivante:

if (A>B) 
   if (A>10) 
   printf ("premier choix \n"); else if (B<10)
   printf ("deuxième choix \n"); else
   if (A==B) printf ("troisième choix \n");
   else printf ("quatrième choix \n");
a) Copiez la séquence d'instructions en utilisant des tabulateurs pour marquer les blocs if - else appartenant ensemble.

b) Pour quelles valeurs de A et B obtient-on les résultats:
premier choix, deuxième choix, ... sur l'écran?

c) Pour quelles valeurs de A et B n'obtient-on pas de réponse sur l'écran?

d) Notez vos réponses et choisissez vous-mêmes des valeurs pour A et B pour les vérifier l'aide de l'ordinateur.


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber