540 likes | 650 Views
Tutorat en bio-informatique. Le 10 octobre 2012. Au programme…. Rappel sur les variables Constantes Conditions Comparaisons Tables de vérité Switch. Rappel. var a = 7; var b = 11; var c = 2; b += Number(a + "4"); a += 1.5 * c; a = b / a + c; c = a / c; b = c + b % 20;
E N D
Tutorat en bio-informatique Le 10 octobre 2012
Au programme… • Rappel sur les variables • Constantes • Conditions • Comparaisons • Tables de vérité • Switch
Rappel var a = 7; var b = 11; var c = 2; b += Number(a + "4"); a += 1.5 * c; a = b / a + c; c = a / c; b = c + b % 20; Quelle est la valeur de b à la fin? (b = 85) (a = 10) (a = 10.5) (c = 5.25) (b = 10.25)
Rappel • Il n'existe pas d'opérateur exponentiel, ou racine carré, ou valeur absolue en JS. • On doit utiliser des méthodes de l'objet Math : varexpo = Math.pow(2,3); // 2^3 var racineC = Math.sqrt(49); // 49^1/2 var vAbs = Math.abs(-6); // |-6|
Post / pré-(dé/in)crémentation var entier = 0; print(entier++); //0 print(entier); //1 entier = 0; print(++entier); //1 print(entier); //1
Post / pré-(dé/in)crémentation Qu'est ce qui sera imprimé? var cpt = 3; print("cpt = " + cpt + " cpt-- = " + cpt-- + " --cpt = " + --cpt);
Post / pré-(dé/in)crémentation Qu'est ce qui sera imprimé? var cpt = 3; print("cpt = " + cpt + " cpt-- = " + cpt-- + " --cpt = " + --cpt); cpt = 3 cpt-- = 3 --cpt = 1
Constantes • Les constantes sont des variables qui, une fois initialisées, ne devraient jamais changer de valeur. • Elles sont utiles pour garder en mémoire des valeurs qui seront utilisées souvent et qui ne doivent pas être modifiées. • Exemples: le nombre de minutes dans une heure, le nombre de cents dans un dollar, etc.
Constantes • La plupart des fureteurs et des interprètes de JS permettent l'utilisation du mot réservé 'const' pour déclarer une constante (au lieu de 'var'). • On écrit le nom de la constante en lettres majuscules et on sépare les mots par des ‘_’ (convention).
Constantes Lorsque le mot réservé 'const' est reconnu par le fureteur ou l'interprète, une seule affectation est permise. Les affectations suivantes n'auront aucun effet. Exemple : const MINUTES_DANS_HEURE = 60;
Conditions • Dans 99 % (± 1 %) des programmes que vous allez écrire, vous allez utiliser les conditions… • Une condition, c’est une expression qui est soit vraie, soit fausse. • Utiliser une condition, c’est dire à l’ordinateur : • Dans une telle situation, fait ceci. • Sinon, fait cela.
Conditions • Un exemple concret : Lorsque vous arrivez à un feu de circulation en voiture, vous allez (normalement) : • Freiner si le feu est rouge. • Continuer si le feu est vert.
Conditions • Un exemple en programmation : Vous avez écrit un programme qui demande à l’utilisateur son âge et vous avez mémorisé cette valeur dans la variable age. Si age < 18, écrire dans la console : « Vous êtes un enfant. » Sinon écrire dans la console : « Vous êtes un adulte. »
Conditions • L’instruction 'if' : • C’est la traduction de « si »! • Doit être suivie (sur la même ligne) d’une condition entre parenthèses. • Doit être suivie (sur la ou les lignes suivantes) d’une ou de plusieurs instructions à faire dans le cas où la condition serait vraie. • Exemple : if (2 < 5) { print(" C’est vrai! "); }
Conditions • L’instruction 'else' : • Signifie « sinon »! • Ne peut évidemment pas être utilisée sans être précédée d’un 'if'. • Ne doit pas être suivie d’une condition. • Doit être suivie (sur la ou les lignes suivantes) d’une ou de plusieurs instructions à faire dans le cas où la condition du 'if' précédent est fausse. • Est relié directement et seulement au 'if' qui le précède. • Exemple : else { print(" La condition du if était fausse! "); }
Conditions • Un exemple en programmation (version 1.2) : if (age < 18) { print(" Vous êtes un enfant. "); } else { print(" Vous êtes un adulte. "); }
Conditions • Pourquoi on utilise le 'else'? • Pour éviter d’écrire une autre condition : • if (age < 18) • { • print(" Vous êtes un enfant. "); • } • if (age >= 18) • { • print(" Vous êtes un adulte. "); • } • Pour éviter des vérifications inutiles : • L’ordinateur n’a qu’à vérifier la condition du 'if'. Si elle est vraie, les instructions du 'if' seront exécutées. Si elle est fausse, ce sont les instructions du 'else' qui seront exécutées.
Exercice 1 • Vous avez écrit un programme qui va chercher la température sur Internet et vous la gardez en mémoire dans une variable nommée temp. Il ne vous reste qu’une petite partie à coder : vous voulez que votre programme écrive dans la console de porter des gants s’il fait moins de 0 °C et de ne pas porter de gants sinon. Écrivez cette partie manquante du programme.
Exercice 1 (solution) if (temp < 0) { print("Il faut porter des gants!"); } else { print("Pas besoin de gants!"); }
Conditions • Rappel : Dans une structure de 'if' – 'else', un seul des deux blocs d’instructions sera exécuté (soit le bloc du 'if', soit le bloc du 'else'). • Que fait-on lorsqu’on a plus de deux cas à vérifier? • On doit utiliser plusieurs 'if'…?
Conditions • Retour sur l’exemple concret : Lorsque vous arrivez à un feu de circulation en voiture, vous allez (normalement) : • Freiner si le feu est rouge. • Continuer si le feu est vert. • Ralentir si le feu est jaune.
Conditions • Mais on sait que les feux de circulation ne peuvent être que d’une seule couleur à un moment donné. • Dès qu’on a trouvé de quelle couleur est le feu de circulation, il est inutile de continuer à vérifier pour les autres couleurs.
Conditions • L’instruction 'else if' : • Signifie « sinon, si… ». • Doit être utilisée immédiatement après un 'if' ou un autre 'else if'. • Doit être suivie (sur la même ligne) d’une condition entre parenthèses. • Doit être suivie (sur la ou les lignes suivantes) d’une ou de plusieurs instructions à faire dans le cas où la condition du 'if' ou 'else if' précédent est fausse et la condition du 'else if' courant est vraie. • Exemple : if (nombre < 10) { print(" Le nombre est strictement inférieur à 10. "); } else if (nombre > 20) { print(" Le nombre est strictement supérieur à 20. "); }
Conditions • Retour sur l’exemple concret : if (le feu est rouge) { Freiner; } else if (le feu est vert) { Continuer; } else //sinon, le feu ne peut être que jaune { Ralentir; }
Conditions • Un exemple de trèsmauvaise programmation : if (age < 18) { print(" Vous êtes un adolescent. "); } if (age < 13) { print(" Vous êtes un enfant. "); } else { print(" Vous êtes un adulte. "); } Si age est égal à 10 : Si age est égal à 15 : Vous êtes un adolescent. Vous êtes un enfant. Vous êtes un adolescent. Vous êtes un adulte.
Conditions • Un exemple en programmation (version 1.3) : if (age < 13) { print(" Vous êtes un enfant. "); } else if (age < 18) { print(" Vous êtes un adolescent. "); } else { print(" Vous êtes un adulte. "); }
Conditions • Les 'if' imbriqués : • Il est possible de mettre des 'if' à l’intérieur des instructions d’un 'if'. • Dans certaines situations, il semble plus simple pour le programmeur d’utiliser des 'if' imbriqués. • Une bonne technique d’indentation devient essentielle afin de ne pas se perdre dans les 'if' et les 'else'…
Conditions • Un exemple en programmation (version 1.4) : if (age < 18) { if (age < 13) { print(" Vous êtes un enfant. "); } else { print(" Vous êtes un adolescent. "); } } else { print(" Vous êtes un adulte. "); }
Conditions • D’autres faits importants : • On peut utiliser plusieurs 'if' de suite si les conditions de ces 'if' ne sont pas interdépendantes. • On peut utiliser autant de 'else if' qu’on le désire, en autant qu’il y ait un 'if' avant le premier 'else if'. • Il n’est jamais obligatoire d’utiliser un 'else' après un 'if' ou un 'else if', mais pour utiliser un 'else', il doit absolument y avoir un 'if' ou un 'else if' avant.
Exercice 2 • Toujours dans votre programme qui a sauvegardé la température actuelle dans la variable temp, vous désirez être plus précis dans vos conseils vestimentaires. • Réécrivez la dernière partie du code afin d’écrire dans la console : • de porter un chandail chaud s’il fait moins de 5 °C • de porter une chemise s’il fait entre 5 °C et 15 °C • de porter un t-shirt s’il fait plus de 15 °C • de porter des gants s’il fait moins de 0 °C
Exercice 2 (solution) if (temp < 5) { print("Il faut porter un chandail chaud!"); } else if (temp < 15) { print("Il faut porter une chemise!"); } else { print("Il faut porter un t-shirt!"); } if (temp < 0) { print("Il faut porter des gants!"); }
Conditions • On peut utiliser directement un boolean comme condition. • Type boolean : • 2 valeurs possibles: 'true' et 'false'. • 'true' veut dire vrai et 'false' veut dire faux… étonnant!
Conditions • Exemple : var vrai = true; var faux = false; if (vrai) { print("On écrit."); //Écriture dans la console } if (faux) { print("On n'écrit pas."); //Pas d’écriture dans }//la console
Conditions • Conversion automatique de Number ou String en Boolean : • lorsqu'on utilise seulement un Number ou une String dans une condition (sans comparateur) • lorsqu'on compare un Number ou une String avec un Boolean • Les valeurs 0, "", null et undefined seront évaluées à false • Toutes les autres valeurs possibles seront évaluées à true
Conditions • Exemple : var nb1 = 1; if (nb1) { print("On écrit."); //Écriture dans la console } var nb0 = 0; if (nb0) { print("Pas d'écriture."); //nb0 == 0 == false }
Opérateurs de comparaison • On peut comparer deux expressions représentant des Number ou des String avec ces opérateurs : == identique != différent < strictement inférieur <= inférieur ou égal > strictement supérieur >= supérieur ou égal
Opérateurs de comparaison • On peut utiliser ces opérateurs pour construire des conditions ou des variables de type boolean : if (nb1 != nb2) { print("Les nombres sont différents."); } var differentBool = nb1 != nb2;
Opérateurs de comparaison • La comparaison de deux String peut nous indiquer un ordre lexicographique à un certain degré. Source : www.asciitable.com
Opérateurs de comparaison • Pour la comparaison d'un seul caractère, on compare le code du caractère : var a = 'a'; var b = 'b'; var D = 'D'; var bool1 = a < b; //true var bool2 = a < D; //false!
Comparaison de String • Pour la comparaison de chaînes de caractères, on compare le premier caractère qui est différent : var s1 = "test2"; var s2 = "tesT25"; var compareBool = s1 < s2; //compareBool = false
Comparaison de String • Comment comparer deux String en ignorant la casse (majuscules/minuscules)? • En mettant tous les caractères en majuscules (upper case) ou en minuscules (lower case) • On utilise les méthodes toUpperCase() ou toLowerCase()
Comparaison de String • Exemple : var s1 = "test"; var s2 = "TeSt"; if(s1.toUpperCase() == s2.toUpperCase()) { print("Chaînes identiques!"); }
Comparaison de String • Lorsqu'on compare un Number avec une String, JavaScript fait une conversion automatique pour vérifier l'égalité • Exemple : var s = '2'; var nb = 2; var bool = s == nb; //bool est true!
Comparaison de String • Si on veut comparer non seulement la valeur mais aussi le type, on peut utiliser les opérateurs === et !== • Exemple var s = '2'; var nb = 2; var bool = s === nb; //bool est false maintenant
Comparaison de nombres décimaux • Pour comparer des nombres décimaux, il est préférable de vérifier la différence entre les deux nombres plutôt que de vérifier directement l'égalité : var a = 0.1 + 0.1 + 0.1; if (Math.abs(a - 0.3) < 0.001) { System.out.println("0.1 + 0.1 + 0.1 est égal à 0.3"); } a = 0.30000000000000004 !!!
Opérateurs logiques • Pour alléger le code, on peut utiliser des opérateurs logiques : && et logique || ou logique ! non logique
Opérateurs logiques • && (et logique) : if (age >= 13) { if (age < 18) { print("Vous êtes un adolescent."); } } est équivalent à if ( age >= 13 && age < 18 ) print("Vous êtes un adolescent.");
Opérateurs logiques • || (ou logique) : if (age < 13) print("Vous avez droit à un rabais."); else if (age > 65) print("Vous avez droit à un rabais."); est équivalent à if (age < 13 || age > 65) { print("Vous avez droit à un rabais."); }
Opérateurs logiques • ! (non logique) : var s = "string"; if (s == "mot magique") { } else print("Ce n'est pas le mot magique…"); est équivalent à if (s != "mot magique") print("Ce n'est pas le mot magique…");