C plusplus:Structures de contrôle branchements conditionnels

Un article de WikiTuto.

Jump to: navigation, search

Sommaire

Définition

On a souvent besoin de n'effectuer certaines instructions que dans certains cas. On dispose pour cela du IF et du SWITCH.

If - Else (Si - Sinon)

Structure

if (expression) instruction1

ou :

if (expression) instruction1 else instruction2

Si l'expression est vraie on effectue l'instruction1, puis on passe à la suite. Sinon, on effectue l'instruction 2 puis on passe à la suite (dans le cas sans else on passe directement à la suite).

Exercice (jeu)

modifier le jeu de l'exercice (do_while) en précisant au joueur à chaque essai si sa proposition est trop grande ou trop petite.

L'instruction d'un if peut être un autre if (imbriqué). Exemple :

if(c1) i1;
else if (c2) i2;
else if (c3) i3;
else i4;
i5;

Explication

si c1 est vrai alors on exécute i1 puis i5, sinon mais si c2 alors i2 puis i5, ... Si ni c1 ni c2 ni c3 alors i4 puis i5.

Le else étant facultatif, il peut y avoir une ambiguïté s'il y a moins de else que de if. En fait, un else se rapporte toujours au if non terminé (c'est à dire à qui on n'a pas encore attribué de else) le plus proche. Une solution pour lever l'mbiguïté est de délimiter le if sans else en l'entourant de {}.

Exemples

if(c1) if(c2) i1; else i2;
si c1 et c2 alors i1, si c1 et pas c2 alors i2, si pas c1 alors (quel que soit c2) rien.
if (c1) {if (c2) i1;} else i2;
si c1 et c2 alors i1, si c1 et pas c2 alors rien, si pas c1 (quel que soit c2) alors i2.

Switch - Case (brancher - dans le cas)

Le switch est aussi appellé le « goto calculé » Cette structure de contrôle permet de remplacer une suite trop longue de if et else if (mais rien ne vous force à l'utiliser, vous pouvez parfaitement vous limiter aux ifs).

Structure

switch(expression_entière)
{
 case cste1:instructions	
 case cste2:instructions
 ........
 case csteN:instructions
 default :instructions
}

L'expression ne peut être qu'entière (char, int, long). L'expression est évaluée, puis on passe directement au "case" correspondant à la valeur trouvée. Le cas default est facultatif, mais si il est prévu il doit être le dernier cas.

Exemple

fonction vérifiant si son argument c est une voyelle.

int voyelle(char c)
 {
  switch(c)
   {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
    case 'y':return(1); /* 1=vrai */
    default :return(0)
   }
 }

Remarque : l'instruction break permet de passer directement à la fin d'un switch (au } ). Dans le cas de switch imbriqués on ne peut sortir que du switch intérieur. Exemple :

switch (a)
{
 case 1:inst1;inst2;....;break;
 case 2:....;break;
 default:.....
} /*endroit où l'on arrive après un break */

Exercice (calcul)

faire un programme simulant une calculatrice 4 opérations.

Voir aussi


Auteur :Patrick TRAU. Copyright : utilisation de ces documents libre pour tout usage personnel. Utilisation autorisée pour tout usage public non commercial, à condition de citer son auteur (Patrick TRAU, IPST, Université Louis Pasteur Strasbourg, email : Patrick.Trau (à) ipst-ulp.u-strasbg.fr ) et de me signaler tout usage intensif. Utilisation commerciale interdite sans accord écrit de ma part.

Boîte à outils
Annuaire gratuitCe site est listé dans la catégorie Informatique : Aide et astuces en informatique Annuaire