Aller au contenu

Complément sur les expressions conditionnelles

Warning

Ce cours a été automatiquement traduit des transparents de M.Noyer par Félix qui continue le travail fait par Lorentzo et Elowan et Mehdi, nous ne nous accordons en aucun cas son travail, ce site à pour seul but d'être plus compréhensible pendant les périodes de révision que des diaporamas.

Crédits

  • Zestedesavoir
  • ≪ Langage \(\texttt{C}\) ≫(Claude Delannoy) Eyrolles

Choix en cascade

Considérons les choix en cascades suivants, dans lesquels les instructions concernées peuvent être des instructions simples (c.a.d suivies d'un point-virgule) ou des blocs :

1
2
3
4
if (x >1) instruction 1
else if (x!=0) instruction 2
else if (x <1) instruction 3
else instruction 4

On peut trouver cette présentation un peu lourde (pas moi). Dans ce cas, le branchement multiple switch a ses avantages.

Branchement multiple

switch (x){
    case constante1:
        sequence_d_instructions_1
        break;
    case constante2:
        sequence_d_instructions_2
        break;
    ...
    case constanten:
        sequence_d_instructions_n
        break;
    default:
        sequence_d_instructions_par_defaut
        break;
}

Dans ce qui précède x est une expression de type entier (ou caractère) mais pas un flottant.

Observations

  • Parenthèses autour de x.
  • case yyy:, case yyy :, case yyy : sont valides. Il faut que yyy soit une expression CONSTANTE (par exemple 12 ou une variable déclarée constante)
  • Il est conseillé de mettre break à la fin d'une liste d'instructions.
  • Le cas par défaut n'est pas obligatoire.
char note;

printf ("Quelle note as−tu obtenue ?"); scanf("%c", &note);

switch(note){
    / Si la note est comprise entre E et C /
    case 'E': case 'D': case 'C':
        printf ("No comment.\n");
        break;
    / Si la note est comprise entre B et A /
    case 'B':
    case 'A':
        printf ("C'est correct voire mieux\n");
        break;

    default:
        printf ("Euh... note improbable ...\n");
        break;
}

Opérateur ternaire

L'opérateur conditionnel ou opérateur ternaire est un opérateur particulier dont le résultat dépend de la réalisation d'une condition. Son deuxième nom lui vient du fait qu'il est le seul opérateur du langage \(\texttt{C}\) à nécessiter \(3\) opérandes : une condition et deux expressions.

(condition) ? expression si vrai : expression si faux
1
2
3
4
5
6
int heure;

scanf("%d", &heure);

(heure >8 && heure <20) ?
printf (" Il fait jour.\n") : printf (" Il fait nuit.\n");