7. Structures de contrôle

• Instruction d’affectation, instruction vide, bloc
• Instruction if – else
• Structures conditionnelles imbriquées
• Instruction switch
• Exemples et tâches avec if- else et switch
• Boucle, éléments de la boucle
• Instruction while. Exemples et tâches avec while
• Instruction do-while. Exemples et tâches avec do-while
• Instruction for. Exemples et tâches avec for
• Boucles imbriquées. Exemples et tâches

 
 

• Instruction d’affectation, instruction vide, bloc


Le programme comporte une succession d’instructions qui réalisent l’algorithme de la tâche. Les instructions sont des prescriptions pour réalisation des opérations déterminées. Chaque instruction se termine par ; /un point-virgule/. Instruction qui ne fait rien est une instruction vide. L'instruction vide est marquée seulement par ; /un point-virgule. Le bloc est une succession de définitions et d’instructions.
La forme générale d'un bloc:
{
XXXdéfinitions locales (facultatives)
XXXinstruction1 ;
XXXinstruction2 ;
XXX...
XXXinstructionN ;
}
Le bloc est délimité par des accolades { }. Chaque bloc peut comporter au début une ou plusieurs définitions locales. Les objets définis localement / variables, constantes, types etc. / ne sont utilisables (``visibles'') que dans le bloc dans lequel ils sont définis. On peut écrire un bloc partout où une instruction simple est possible.

On désigne l'instruction d’affectation comme opérateur affectation suivi par un point-virgule:

variable = opérande;

• Instruction if – else

Destination: Lorsqu'un traitement doit être subordonné à une condition, on utilise l’instruction if - else.


Forme générale :

if (expression) instruction1;
else instruction2;

if, else – mots - clés;
Instruction1 et instruction2 sont des instructions simples ou composées /blocs/. Les parenthèses qui délimitent l’expression sont obligatoires.

Exécution: L’expression est évaluée. Si la valeur de l'expression est différente de 0 l’instruction1 s'exécute. Sinon l'instruction2 s'exécute.

Forme courte:
if (expression) instruction;

Exécution: L’expression est évaluée. Si la valeur donnée est différente de 0 /ou
true / l’instruction s'exécute. Sinon on passe à la suite du programme.

• Structures conditionnelles imbriquées

On peut considérer l'instruction if – else comme une instruction composée parce que dans leur forme générale sont insérées d'autres instructions de langage C++. Si ces instructions sont encore des instructions pour un branchement on reçoit des structures alternatives plus compliquées, nommées structures alternatives imbriquées. Ces structures ont des formes différentes, par exemple:

if(expression1) if(expression2) instruction1 ; else instruction2 ;

La structure ci - dessus n’est pas parfaitement claire par rapport à l'exécution de l’instruction2 – elle s'execute quand l'expression1 a une valeur différente de 0 ou quand l'expression2 a une valeur différente de 0. Dans ce cas la règle est : l’alternative après else est liée avec la plus proche et avant else if expression.
Exemple:
if(a !=0) if (b==0)c = 10 ; else c = 20 ;

Dans l’exemple c prend la valeur 10 si b a la valeur 0 et c prend la valeur 20 si b est différente de 0. Si a est égale a 0, les affectations ne s’exécutent pas.

• Instruction switch

Destination: Lorsque le choix entre divers traitements dépend de la valeur d'une seule expression, on peut utiliser l’instruction switch.

Forme générale:

switch (expression)
{
XXcase constante1 : liste instructions1; break;
XXcase constante2 : liste instructions2; break;
XX...
XXcase constanteN : liste instructionsN; break;
XXdefault: liste instructionsN+1;
}

Exécution:
L'expression est tout d'abord évaluée. Si la valeur de l'expression est égale à la constante1, alors la liste instructions1 s'exécute. Mais, si la valeur de l'expression est égale à la constante2, alors la liste instructions2 s'exécute, etc. Si la valeur de l'expression n'est égale à aucune des constantes, alors la liste instructionsN+1 s'exécute.

Remarques:
• La partie
default n’est pas obligatoire. Si elle manque et la valeur de l'expression n'est égale à aucune des constantes on passe à la suite du programme.
• Le break à la fin de chaque liste d'instructions sert à ``sauter'' l'évaluation des cas suivants, lorsqu'une comparaison a réussi. L'exécution reprend alors après l'accolade fermante du
switch .
• Le type de l'expression et des constantes doit être un type entier /
int, char, bool, ou énuméré/. Les constantes devant les cas doivent être différents.
• Si une même liste d'instructions doit être exécutée pour différentes valeurs de constantes, on peut utiliser dans le
switch la forme:

case constante1 :
case constante2 :
case constante3 : liste instructions; break;
...