« Programmation JavaScript/Structures de contrôle » : différence entre les versions

Contenu supprimé Contenu ajouté
m rv vandal
Ligne 5 :
Avant de passer en revue les structures de contrôle, il est utile de lire le paragraphe [[#Établissement d'une expression logique|Établissement d'une expression logique]] qui précise certains aspects de la méthode.
 
== Établissement d'une expression logique ==
jupoiipoiipo
L'usage de '''if''', '''while''' et '''do''' met en œuvre des expressions logiques dont le résultat testé (vrai) conditionnera l'exécution de l'instruction ou du bloc d'instructions associé.<br/>
Ces expressions logiques sont inscrites entre parenthèses.<br/>
Du plus simple au plus complexe, on trouve :
*(5 == 5) est bizarre mais vrai
*(true) La constante true est toujours vraie
*(false) La constante false est toujours fausse
*(var_bool) Si var_bool est vrai, l'expression est vraie
*(!var_bool)Si var_bool est vrai, l'expression est fausse
*(var_bool==false) Si var_bool est faux, l'expression est vraie (et oui...)
Avec des variables numériques ou des variables chaînes, le principe est similaire :
*(ma_var_num == 5)
*(ma_chaine == "foo")
De même avec les opérateurs de comparaison :
*(ma_var > 0) ma_var non nulle
*(ma_var <= 5) inférieure ou égale à 5
*(ma_chaine != "bar") le contenu de ma_chaine différent de "bar"
etc..<br/>
À l'étape suivante, on peut combiner des expressions logiques avec des opérateurs logiques ET ( && ) et OU (||).
*((ma_var==5)&&(ma_chaine=="bar")) Réaliser les deux conditions
*((ma_var==5)||(ma_chaîne=="bar")) Réaliser l'une des conditions
*((ma_var==5)&&(ma_chaine=="bar")||(!var_bool))
... Et ainsi de suite... en faisant très attention aux parenthèses et à l'ordre de priorité des opérateurs, et à conserver une certaine lisibilité au code.
 
== Le piège ==
L'auteur de cet article ne vient pas du C , mais du pascal. Il commet donc encore aujourd'hui l'erreur de confondre l'opérateur d'affectation avec l'opérateur d'égalité logique. Ceci a pour conséquence d'introduire un bug à retardement dû à l'affectation de la variable de test.
<div style="color:red;text-align:center">
if (ma_var = 0) Exécution du code
</div>
L'expression (ma_var = 0) est fausse. L'expression (ma_var = 5) est vraie. Mais dans les deux cas, l'affectation a lieu, écrasant le contenu précédent de la variable.<br/>
Donc cette erreur, si elle n'est pas comprise, plonge le programmeur dans des abîmes de questions et de doutes, avec peu de chances de comprendre pourquoi. Bien entendu, la bonne façon est d'utiliser l'opérateur d'égalité logique ( == ) à la place de l'opérateur d'affectation ( = ).
 
== Branchement conditionnel ==
Ligne 226 ⟶ 256 :
for (i=0; <span style="color:red">i &gt;= 0</span>; i++)
</div>
 
L'incrémentation de i ne changera pas le fait que la variable est supérieure ou égale à zéro...