Exood4 Studio - Video Game Development, Toulouse (France)
Exood4 Studios Exood4 Tutorials

   
L a n g a g e   C

L e s   i n s t r u c t i o n s   d e   c o n t r ô l e






Les instructions conditionnelles


 Elles permettent d'exécuter des instructions sous certaines conditions.

 if (expression) instruction

 L'expression est évaluée et si elle est non nulle, c'est à dire vraie, l'instruction est exécutée.

 if (expression) instruction_1 else instruction_2

 Dans ce cas, l'expression est évaluée, si elle est non nulle, instruction_1 est exécutée sinon c'est instruction_2.


Exemple :

if (x == 1)
 if (y < 2)
 {
 z = x + y;
 x += 5;
 }
 else z = y;
else
{
 x = y;
 z = 0;
}


L'instruction sélective


 Elle permet de réaliser un branchement calculé suivant la valeur d'une expression.
switch (expression)
{
 case expression_constante_1 : instructions_1
 case expression_constante_2 : instructions_2
 ...
}
 ou
switch (expression)
{
 case expression_constante_1 : instructions_1
 case expression_constante_2 : instructions_2
 ...
 default : instructions_n
}
 L'expression est évaluée et comparée aux valeurs des expressions constantes. Si sa valeur apparaît dans une étiquette case, le contrôle du programme est transféré à cette étiquette, sinon il est transféré à l'étiquette default (si elle existe). L'exécution se poursuit jusqu'à la fin du switch, à moins qu'une instruction de rupture de séquence (break, return, continue, goto) ne soit rencontrée. Les instructions de tous les cases suivant le case de branchement et du default s'il est présent sont également exécutées.

 L'instruction switch est souvent utilisée avec l'instruction break afin d'exécuter seulement les instructions spécifiques au case sélectionné.


Exemple :

switch (x)
{
 case 'o' :
 case 'O' :
 ok = 1;
 break;

 case 'n' :
 case 'N' :
 ok = 0;
 break;

 default :
 ok = -1;
}


Les instructions itératives


 Elles permettent de répéter l'exécution d'instructions.


While

 while (expression) instruction

 L'instruction est exécutée tant que la valeur de l'expression est non nulle. Le test ayant lieu avant l'exécution de l'instruction, celle-ci peut ne pas être exécutée si l'expression est nulle à la première évaluation.

scanf ("%d", &n);
while ( (n < 0) || (n > 100) )
{
 puts ("hors limite");
 scanf ("%d", &n);
}


Do while

 do instruction while (expression)

 L'instruction est exécutée tant que la valeur de l'expression est non nulle. Le test ayant lieu après l'exécution de l'instruction, celle-ci est toujours exécutée au moins une fois, même si l'expression est nulle à la première évaluation.

do
{
 scanf ("%d", &n);
 if ( (n < 0) || (n > 100) ) puts ("hors limite");
} while ( (n < 0) || (n > 100) )


For

 for (exp1; exp2; exp3) instruction

 Chacune des expressions est optionnelle, mais les points virgules sont obligatoires. C'est équivalent à :
exp1
while (exp2)
{
 instruction;
 exp3;
}
 L'instruction for du C est plus générale que celle de la plupart des langages. Néanmoins, si on veut lui faire jouer une rôle équivalent :
  • l'expression exp1 correspond alors à l'initialisation d'une variable de contrôle
  • l'expression exp2 est la condition de continuation de la boucle
  • l'expression exp3 est l'incrémentation de la variable de contrôle (elle est effectuée après l'exécution de l'instruction)
for (i = 0; i < NB; i++) printf("%d", i);

 Mais il est par exemple possible de gérer plusieurs variables de contrôle ce qui peut s'écrire en utilisant l'opérateur d'évaluation séquentielle (la virgule) :

for ( i = 1, j = 0; i != 0 && i > j; i *= 2, j++)
{
 ...
}

 L'instruction for ( ; ; ) ou while(1) sont souvent utilisées pour implémenter une boucle infinie, do while(1) étant bien entendu équivalent (mais plus rare).


Les instructions de ruptures de séquence


Break

 L'instruction break provoque la sortie de l'instruction switch, while, do while ou for la plus interne.
 L'instruction break est souvent indispensable dans un switch. Il est également intéressant pour sortir d'une boucle infinie :

while (1)
{
 ...
 if (...) break;
 ...
 if (...) break;
 ...
 if (...) break;
 ...
}


Continue, goto

 Ces instructions de rupture de séquence (héritées du basic) n'ont pas leur place dans la programmation structurée car elles donnent lieu à des programmes sans queue ni tête, et peuvent toujours être remplacées par des formes plus structurées. De plus, elles peuvent nuire aux performances du compilateur.


  Retour en haut de page Page suivante