Un logiciel polyvalent d'apprentissage de la programmation
Chapitre 1. Introduction
Chapitre 2. Le logiciel en bref
Chapitre 3. Premiers pas en algorithmique
Chapitre 4. Instructions conditionnelles
4.1. Alternatives simples et doubles
4.2. Alternatives multiples
4.3. Travaux dirigés
4.4. Travaux pratiques
Chapitre 5. Boucles
Chapitre 6. Sous-programmes
Chapitre 7. Tableaux à une dimension
Chapitre 8. Tableaux à deux dimensions
Chapitre 9. Enregistrements
Annexe : comment tester vos programmes ?
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module

4.2. Alternatives multiples

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.

Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module