Premiers pas en JavaScript
16.1 IF imbriqués
et fonction aléatoire
cuy copyleft
  See You Why?  

 


test sur la condition IF... ELSE...(15.9) | | la condition IF... ELSE IF... (16.2)

Contenu

 

 

I. Les conditions IF imbriquées

Nombreux sont les cas de programmation où, suite à une réponse donnée, on doive faire appel à un nouveau traitement soumis à condition.

Ainsi, pour le calcul des allocations familiales du travailleur salarié en Belgique, la première question est de savoir si l'on a des enfants à charge, puis savoir combien, puis déterminer à quel rang appartient chacun des enfants (il y a 3 rangs), puis enfin de déterminer à quelle catégorie d'age chacun des enfants appartient... à la lecture d'un extrait du règlement, le lecteur comprendra facilement qu'il y a plusieurs questions à se poser, mais que beaucoup de cas ne sont pas à envisager dans les cas classiques :
"Depuis le 1-1-1997, le supplément d'âge est bloqué pour l'aîné des enfants en cas d'allocations familiales ordinaires.
Ceci a comme conséquence que l'aîné des enfants qui atteint ses 6, 12 ou 18 ans ne touchera plus de supplément d'âge majoré.
Pour l'aîné des enfants né entre le 1-1-1991 et le 31-12-1996, une autre réglementation est d'application. Cet enfant recevra à ses 6, 12 et 18 ans un supplément d'âge diminué de moitié.
Si l'enfant, né entre le 1-1-1991 et le 31-12-1996, obtient un 1er rang parce que l'aîné des enfants n'a plus droit aux allocations familiales ou qu'il quitte le ménage, il continuera à percevoir le supplément d'âge complet qu'il avait au moment du changement de rang.
"

Résoudre le calcul des allocations à l'aide d'un simple IF... ELSE... nous paraît difficile ici.

Autre situation : lors d'un test, ou lors d'un cours, le message ne sera pas le même selon que la réponse est incorrecte, imprécise ou correcte... et le message d'encouragement de l'enseignant ne doit pas être le même en cas de réponse correcte au premier essai ou au cinquième essai de réponse...

À quelqu'un qui n'aime pas l'informatique, il est inutile de demander s'il aime le javascript et encore moins s'il veut poursuivre son apprentissage en JS.

Javascript permet ces imbrications de conditions. La structure générale est :

if(condition1) {
    if(condition2) {
        if(condition3) {
            //actions si les trois conditions 1, 2 et 3 sont vérifiées
        }
        //actions si les deux conditions 1 et 2 sont vérifiées, peu importe la condition 3
    }
    //actions si la condition 1 est vérifiée, peu importe les conditions 2 et 3
}
 

L'usage du ELSE permet d'envisager l'hypothèse contraire...

A. syntaxe et indentation

Nous reprendrons l'exemple ci-dessus :

var informatique = confirm("Aimes-tu l'informatique en général ? ");

Inutile de pousser le bouchon plus loin si votre lecteur répond "Non", un simple message de tristesse "Quel dommage !"... mais s'il répond "Oui", il pourrait être intéressant de savoir s'il aime la programmation car beaucoup d'utilisateurs des ordis aiment l'outil pour des usages autres que la programmation (messagerie, visionnement de photos ou vidéos ou autres)... d'où...

var informatique = confirm("Aimes-tu l'informatique en général ? ");
if (informatique== true){
    var programmation = confirm("Et plus particulièrement la programmation ?");
} else {
   alert("Quel dommage !");
}

Et ici, deux cas possibles votre lecteur répondra "Oui" ou "Non", on peut aimer la programmation sans aimer le JavaScript, et selon les cas, les réactions doivent être différentes :

var informatique = confirm("Aimes-tu l'informatique en général ? ");
if (informatique == true){
    var programmation = confirm("Et plus particulièrement la programmation ?");
    if (programmation == true) {
        var jascri = confirm("La programmation en JS aussi, je suppose ?");
    } else {
        alert("Il n'y a pas que FaceBook sur un ordinateur !");
    }

} else {
   alert("Quel dommage !");
}

Là encore, ceux qui aiment le JS ne sont pas obligés de lire notre tutoriel et donc des réactions différentes selon les réponses données, d'où, par exemple :

var informatique = confirm("Aimes-tu l'informatique en général ? ");
if (informatique== true){
   var programmation = confirm("Et plus particulièrement la programmation ?");
   if (programmation == true) {
      var jascri = confirm("La programmation en JS aussi, je suppose ?");
         if (jascri == true) {
            var poursuite = confirm("Tu restes donc avec nous pour la suite du tutoriel ?");
         } else {
            alert("Dommage, JS te permettrait d'animer tes pages Web.");
         }

   } else {
      alert("Il n'y a pas que FaceBook sur un ordinateur !");
   }

} else {
   alert("Quel dommage !");
}

Et finalement, selon la réponse donnée à cette dernière question :

var informatique = confirm("Aimes-tu l'informatique en général ? ");
if (informatique== true){
   var programmation = confirm("Et plus particulièrement la programmation ?");
   if (programmation == true) {
      var jascri = confirm("La programmation en JS aussi, je suppose ?");
         if (jascri == true) {
            var poursuite = confirm("Tu restes donc avec nous pour la suite du tutoriel ?");
            if (poursuite == true) {
               alert("J'en suis heureux, nous continuerons donc notre travail.");
            } else {
               alert("Bon vent, nos chemins se quittent ici.");
            }

         } else {
            alert("Dommage, JS te permettrait d'animer tes pages Web.");
         }

   } else {
      alert("Il n'y a pas que FaceBook sur un ordinateur !");
   }
} else {
   alert("Quel dommage !");
}

Notre exemple ne comptait que des variables booléennes à vérifier, mais la syntaxe et la structure restent identiques pour les variables d'un autre type. Vous voulez le tester ?

Exemple

<html>
<head><title>IF imbriqués</title></head>
<body>
<script type="text/javascript">

var informatique = confirm("Aimes-tu l'informatique en général ? ");
if (informatique== true){
   var programmation = confirm("Et plus particulièrement la programmation ?");
   if (programmation == true) {
      var jascri = confirm("La programmation en JS aussi, je suppose ?");
         if (jascri == true) {
            var poursuite = confirm("Tu restes donc avec nous pour la suite du tutoriel ?");
            if (poursuite == true) {
               alert("J'en suis heureux, nous continuerons donc notre travail.");
            } else {
               alert("Bon vent, nos chemins se quittent ici.");
            }

         } else {
            alert("Dommage, JS te permettrait d'animer tes pages Web.");
         }

   } else {
      alert("Il n'y a pas que FaceBook sur un ordinateur !");
   }
} else {
   alert("Quel dommage !");
}
 
</script>
</body>
</html>


Le lecteur comprendra que lorsqu'il travaille avec des IF imbriqués, il a intérêt à respecter l'indentation de son code pour pouvoir s'y retrouver plus facilement, même si l'interpréteur n'a pas besoin de ces indentations.

 

B. une condition double par conditions IF imbriquées

Si vous demandez à quelqu'un de deviner votre age, vous pouvez l'encourager s'il est dans la bonne dizaine, mais la condition est alors double... si vous avez 53 ans, il faut vérifier si vous avez bien 50 ans ou plus, puis vérifier que vous n'avez pas atteint la soixantaine. Vous devrez donc écrire :

if(age >= 50) {
    if(age < 60) {
        document.write("En effet, je suis dans la cinquantaine...");
    } else {
        document.write("Et non, je n'ai pas encore atteint la soixantaine... ai-je l'air si vieux ?");
    }
} else {
    document.write("C'est gentil de me rajeunir, mais j'ai plus de 50 ans");
}
 

JS n'a pas de condition "est compris entre..." ; dans le chapitre suivant, nous verrons que JS permet l'usage d'opérateurs ET, OU ou NOT qui nous permettront d'y arriver.

 

II. La condition IF... ELSE IF...

voir suite >>>

 

 

III. L'instruction (condition)?(si_vrai):(sifaux)... ou opérateur ternaire

voir suite >>>

 

IV. La fonction aléatoire

voir suite >>>

 

VIII. Exercices relatifs aux conditions IF imbriquées et fonction aléatoire

voir suite >>>

 

IX. Test relatif aux conditions IF imbriquées et fonction aléatoire

voir suite >>>

 

 


test sur la condition IF... ELSE...(15.9) | | la condition IF... ELSE IF... (16.2)