Nous avons évoqué précédemment la nécessité de faire des
choix, c'est à dire de prendre des décisions. Une des formes de choix est la
structure :
Si(une condition est remplie)
Alors effectuer une opération
La structure JavaScript est :
if ( condition) {
opération à effectuer si la
condition est vrai
}
Attention aux parenthèses { } enclosant
l'opération à effectuer
Pour faciliter la lecture des programmes on décale les
lignes, (indentation), encloses dans des instructions.
Exemple avec une boite de dialogue, (prompt)
<SCRIPT>
//Définition et assignation des variables
var reponse
var message = "Bonjour Visiteur"
//Demande à l'utilisateur
reponse = prompt("Entrez un pseudo", "Visiteur")
//Test si le pseudo est "demon"
if ( reponse == "demon" ){
message = "Vous êtes le responsable système"
}
//Réponse du système
alert(message)
</SCRIPT>
Ce script reprend celui illustrant la boite prompt vu à la
page précédente, nous y avons rajouté :
La définition d'une variable "message" assignée
à une valeur de défaut, "Bonjour Visiteur"
Un test vérifiant si le pseudo choisi est "demon"
Nous rappelons que dans reponse nous trouverons
le pseudo entré par le visiteur ou null s'il a cliqué sur annuler.
Attention : la comparaison (reponse
== "demon") utilise deux signes d'égalité à la suite, ==
L'instruction enclose dans les parenthèses du if, n'est
exécutée que si la réponse est exactement "demon". Testez, demon, Demon, démon
Dans tous les cas autres que reponse == "demon" ,
la variable message restera à sa valeur d'origine, "Bonjour
Visiteur". Organigramme
de ce programme
Exercice : Supprimez un des signes égal dans
l'instruction if. Vous observerez
1. Vous n'obtenez pas de message
d'erreur
2. L'if se comporte comme si la
condition était toujours vrai
Vérifiez si vous avez les deux signes d'égalité en cas de
comportement bizarre d'un programme comportant un/des if.
Il serait sympathique de
saluer votre visiteur par son pseudo, du genre "Salut pseudo".
Nous voyons dans l'organigramme
précédent que la boucle Non de réponse au test de l'IF est vide, en fait
cette réponse Non à l'IF correspond à tous les visiteurs choisissant un
pseudo différend de "demon" ou appuyant sur annuler dans la boite
prompt. Nous pourrions nous servir de cette boucle pour afficher le pseudo.
On peut rajouter un autre élément au if, c'est le else,
(autre).
if ( condition) {
opération à effectuer si la
condition est vrai
} else {
opération à effectuer si la
condition est fausse
}
Exercice :
modifier
la forme suivante pour y inclure une clause else
dans cette clause else charger dans message le
texte suivant, Bonjour suivi du pseudo chargé dans reponse.
Voir la syntaxe.
Faire un Organigramme de ce programme, Corrigé Corrigé
du programme, (voir dans la forme ci-dessous)
Si le visiteur appuit sur
annuler dans la boite prompt, la variable reponse est mise à la valeur null. Ce
n'est pas un contenu texte "null" bien que la boite alert le
transforme en texte pour l'affichage. Ce qui donne "Bonjour null", ce
qui n'est pas très gentil. Pour éviter celà, nous pouvons rajouter un test
modifiant le message si reponse à la valeur null.
La valeur null est vue comme fausse par une instruction if.On
peut dans une instruction if tester directement si une valeur est vraie ou
fausse, en écrivant par exemple pour la variable reponse.
if (reponse){
opération
à effectuer si reponse est vrai
}
reponse est vrai si la variable a un contenu, c'est à dire
si elle n'est ni "undefined" ni à la valeur null, dans le cas
contraire elle est reconnue comme fausse.
Pour tester si une variable à une valeur fausse on fait
précéder cette variable du symbole de la négation, le point d'exclamation ! //lire si not reponse
if (!reponse){
opération
à effectuer si reponse est faux
}
On pourrait bien sur faire suivre cette instruction d'un else
qui s'activerait pour reponse vrai.
Nous avons rajouté dans la forme ci-dessous le test suivant,
//Test si null
if ( !reponse){
message = "Vous devez donner un pseudo"
}
Exercice, vérifiez dans la forme ci-dessous que les trois
cas de réponse du visiteur éditent le message approprié.
Nous avons supprimé l'assignation :
var message = "Bonjour Visiteur"
En effet si vous regardez l'organigramme
du programme précédent, vous voyez que quel que soit la valeur entrée par le
visiteur, message a toujours un contenu, nous n'avons donc plus besoin de valeur
par défaut.
Exercice,
Concevez un organigramme tel que, on puisse supprimer la
boucle else du premier if, contenant (message = "Bonjour " + reponse).
Si vous ne trouvez pas,
piste Corrigé Ecrivez dans la forme ci-dessus le nouveau programme Corrigé