Choix Simple, structures alternatives
La syntaxe est la suivante :
if (condition) instruction_si_vrai else instruction_si_faux
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.
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.
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;
}
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");
}
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.