© Éditions Eyrolles
71
chapitre n° 5
Les instructions de contrôle
ou bien comme le suggère celle-ci ?
if (a<=b) if (b<=c) printf ("ordonné") ;
else printf ("non ordonné") ;
La première interprétation conduirait à afficher "non ordonné" lorsque la condition a<=b
est fausse, tandis que la seconde n’afficherait rien dans ce cas. La règle adoptée par le langage
C pour lever une telle ambiguïté est la suivante :
Un else se rapporte toujours au dernier if rencontré auquel un else n’a pas encore
été attribué.
Dans notre exemple, c’est la seconde présentation qui suggère le mieux ce qui se passe.
Voici un exemple d’utilisation de if imbriqués. Il s’agit d’un programme de facturation avec
remise. Il lit en donnée un simple prix hors taxes et calcule le prix TTC correspondant (avec un
taux de TVA constant de 18,6 %). Il établit ensuite une remise dont le taux dépend de la valeur
ainsi obtenue, à savoir :
●
0 % pour un montant inférieur à 1 000 F
●
1 % pour un montant supérieur ou égal à 1 000 F et inférieur à 2 000 F
●
3 % pour un montant supérieur ou égal à 2 000 F et inférieur à 5 000 F
●
5 % pour un montant supérieur ou égal à 5 000 F
Ce programme est accompagné de deux exemples d’exécution.
Exemple de if imbriqués : facturation avec remise
#define TAUX_TVA 18.6
main()
{
double ht, ttc, net, tauxr, remise ;
printf("donnez le prix hors taxes : ") ;
scanf ("%lf", &ht) ;
ttc = ht * ( 1. + TAUX_TVA/100.) ;
if ( ttc < 1000.)
tauxr = 0 ;
else if ( ttc < 2000 )
tauxr = 1. ;
else if ( ttc < 5000 ) tauxr = 3. ;
else
tauxr = 5. ;
remise = ttc * tauxr / 100. ;
net = ttc - remise ;
printf ("prix ttc
%10.2lf\n", ttc) ;
printf ("remise
%10.2lf\n", remise) ;
printf ("net à payer %10.2lf\n", net) ;
}
Delannoy Livre.book Page 71 Mercredi, 6. mai 2009 4:26 16
71
chapitre n° 5
Les instructions de contrôle
ou bien comme le suggère celle-ci ?
if (a<=b) if (b<=c) printf ("ordonné") ;
else printf ("non ordonné") ;
La première interprétation conduirait à afficher "non ordonné" lorsque la condition a<=b
est fausse, tandis que la seconde n’afficherait rien dans ce cas. La règle adoptée par le langage
C pour lever une telle ambiguïté est la suivante :
Un else se rapporte toujours au dernier if rencontré auquel un else n’a pas encore
été attribué.
Dans notre exemple, c’est la seconde présentation qui suggère le mieux ce qui se passe.
Voici un exemple d’utilisation de if imbriqués. Il s’agit d’un programme de facturation avec
remise. Il lit en donnée un simple prix hors taxes et calcule le prix TTC correspondant (avec un
taux de TVA constant de 18,6 %). Il établit ensuite une remise dont le taux dépend de la valeur
ainsi obtenue, à savoir :
●
0 % pour un montant inférieur à 1 000 F
●
1 % pour un montant supérieur ou égal à 1 000 F et inférieur à 2 000 F
●
3 % pour un montant supérieur ou égal à 2 000 F et inférieur à 5 000 F
●
5 % pour un montant supérieur ou égal à 5 000 F
Ce programme est accompagné de deux exemples d’exécution.
Exemple de if imbriqués : facturation avec remise
#define TAUX_TVA 18.6
main()
{
double ht, ttc, net, tauxr, remise ;
printf("donnez le prix hors taxes : ") ;
scanf ("%lf", &ht) ;
ttc = ht * ( 1. + TAUX_TVA/100.) ;
if ( ttc < 1000.)
tauxr = 0 ;
else if ( ttc < 2000 )
tauxr = 1. ;
else if ( ttc < 5000 ) tauxr = 3. ;
else
tauxr = 5. ;
remise = ttc * tauxr / 100. ;
net = ttc - remise ;
printf ("prix ttc
%10.2lf\n", ttc) ;
printf ("remise
%10.2lf\n", remise) ;
printf ("net à payer %10.2lf\n", net) ;
}
Delannoy Livre.book Page 71 Mercredi, 6. mai 2009 4:26 16
