C_facile : Introduction au langage C
Cours

Choix Simple, structures alternatives

Syntaxe

La syntaxe est la suivante :

if (condition) instruction_si_vrai else instruction_si_faux

Remarque

La condition est obligatoirement entre parenthèses. Le compilateur peut ainsi facilement détecter le début de la condition logique et la fin de la condition logique.

Le mot clef "then" utilisé en algorithmique ou dans d'autres langages est inutile car l'instruction_si_vrai est immédiatement après la parenthèse fermante. La partie "else" est facultative.

Nous rappelons qu'une instruction peut être un bloc qui est assimilé à une unique instruction à activer.

La valeur de la condition utilise la convention logique du langage C : 0 est faux, autre chose que 0 est vrai.

On peut imbriquer plusieurs "if". Dans ce cas il est conseillé d'utiliser des indentations (marges décalées) pour améliorer la lisibilité du code.

ExempleExemple 1 : illustration de l'usage de la convention logique du C

void main()

{

float X;

printf("\nTapez un nombre flottant : ");

scanf("%f", &X);

if (X)

   printf("\nx = %f c'est vrai pour le C",X);

else

    printf("\nx= %f c'est faux pour le C",X);

}

Si l'on tape 0.0 ou encore 0, cela affichera "x= 0.0 c'est faux pour le C", dans tous les autres cas cela affichera la valeur saisie suivie de "c'est vrai pour le C". Vous pouvez essayer avec une variable de type int.

ExempleExemple 2 : Equation du premier degré avec C=0

Ecrire un programme qui résout une équation du premier degré Ax+b=0. Elle lit les valeurs de A et B entrées par l'utilisateur.

/*Programme Premier_Degre*/

#include < stdio.h >

Int main()

{

float a,b ;

printf("\nentrez le coefficient a : ");

scanf("%f",&a);

printf("\nentrez le coefficient b : ");

scanf("%f",&b);

printf("\ncoefficients a = %f et b = %f : ",a,b);

if (a==0)

   if (b==0)

          printf("indetermine !! \n") ;

   else

           printf("impossible !! \n") ;

else

    printf("la solution est : %f", -b/a);

printf("\n");

return 0;

}

ExempleExemple 3 : Maximum de deux nombres

Ecrire un programme qui calcule le maximum de deux nombres entrés au clavier

#include < stdio.h >

void main

{

float X,Y ;

float MAX;

printf("\nTapez un nombre : ");

scanf("%f", &X);

printf("\nTapez autre nombre : ");

scanf("%f",&Y);

if (X > Y ) /*évaluation de la condition*/

   MAX = X ;

else

    MAX = Y ;

printf("\nLe plus grand nombre est %f ",MAX);

printf("\n");

}

Attention

voici un code intéressant pour comprendre une erreur classique en C.

void main()

{

int x,y;

printf("\nTapez un nombre : ");

scanf("%d", &x);

printf("\nTapez autre nombre : ");

scanf("%d",&y);

if (x=y)

{

      x = 1;

      y = 1;

}

else

{

    x = 2;

    y = 2;

}

printf("\nx = %d et y = %d ",x,y);

}

Ce programme affichera toujours x=1 et y=1 sauf si y vaut 0. Dans ce cas, quelque soit la valeur de x, on affichera x=2 et y=2.

En effet, nous avons écrit if (x=y) au lieu de if (x==y). L'opérateur d'affectation n'est pas le même que l'opérateur de test. De plus, on a le droit d'utiliser l'opérateur d'affectation dans une expression qui correspond à une condition logique (nous vous le déconseillons fortement pour débuter).

Donc x=y, signifie bien x prend la valeur de y. Mis à part le cas où y vaut 0, l'expression est vrai au sens de la convention logique du langage C (voir exemple 1). Le bloc avec les instructions x=1; y=1; s'effectue et on affiche finalement "x = 1 et y = 1 ".

Si y vaut 0, l'expression est fausse au sens de la convention logique du C. Le bloc x=2; y=2; s'effectue

On affiche finalement "x = 2 et y = 2". C'est une erreur très classique que l'on risque de réaliser régulièrement si l'on tape le code trop vite sans le relire.

Instruction "break" (page suivante)Fonction de lecture : scanf () (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI