Nous allons maintenant envisager différents taux de remise :
-
1 article : 0%
-
2 ou 3 articles : 10%
-
4 ou 5 articles : 20%
-
au moins 6 articles : 30%
Une première solution pour ce problème est d'écrire une instruction conditionnelle par taux de remise :
Programme Larp |
Programme Javascool |
...
SI (quantite<=1) ALORS
remise = 0
FINSI
SI (quantite=2) OU (quantite=3) ALORS
remise = 0.1
FINSI
SI (quantite>=4) ET (quantite<=5) ALORS
remise = 0.2
FINSI
SI (quantite>=6) ALORS
remise = 0.3
FINSI
...
|
...
if (quantite<=1) {
remise = 0;
}
if ((quantite==2) || (quantite==3)) {
remise = 0.1;
}
if ((quantite>=4) && (quantite<=5)) {
remise = 0.2;
}
if (quantite>=6) {
remise = 0.3;
}
...
|
L'inconvénient de cette solution est qu'elle fait faire à la machine
des tests inutiles : par exemple, quand la quantité vaut 1, l'ordinateur
ne devrait pas avoir à tester si les conditions des taux de 10%, 20%
ou 30% sont vérifiées ou non.
C'est pourquoi nous allons envisager une deuxième solution imbriquant
des instructions conditionnelles à 2 branches :
Programme Larp |
Programme Javascool |
...
SI (quantite<=1) ALORS
remise = 0
SINON
SI (quantite<=3) ALORS
remise = 0.1
SINON
SI (quantite<=5) ALORS
remise = 0.2
SINON
remise = 0.3
FINSI
FINSI
FINSI
...
|
...
if (quantite<=1) {
remise = 0;
}
else {
if (quantite<=3) {
remise = 0.1;
}
else {
if (quantite<=5) {
remise = 0.2;
}
else {
remise = 0.3;
}
}
}
...
|
L'inconvénient de cette solution est que plus il y aura de taux de remise, plus
l'algorithme deviendra difficile à écrire.
C'est pourquoi nous allons envisager une troisième solution tout aussi efficace
que la deuxième, mais plus lisible :
Programme Larp |
Programme Javascool |
...
SI (quantite<=1) ALORS
remise = 0
SINON SI (quantite<=3) ALORS
remise = 0.1
SINON SI (quantite<=5) ALORS
remise = 0.2
SINON
remise = 0.3
FINSI
...
|
...
if (quantite<=1) {
remise = 0;
}
else if (quantite<=3) {
remise = 0.1;
}
else if (quantite<=5) {
remise = 0.2;
}
else {
remise = 0.3;
}
...
|
Dès que la condition d'une branche intermédiaire est vérifiée, les suivantes
sont ignorées : ainsi, pour une quantité de 2, la remise sera de 10%.
En effet, même si la troisième condition (quantite<=5) est vérifiée, l'instruction
associée (remise=0.2) sera ignorée car la deuxième condition (quantite<=3) est elle
aussi vérifiée.