Licence 2ème année - NTE 3 – 2005-06 Bernard Maurin [email protected] NTE 3 – Algorithmique et programmation Visual Basic TD 2 : structure alternative Notions de référence de la séance 2 Structure alternative Si ; opérateurs de comparaison ; opérateurs logiques ; type booléen I – L’instruction SI…. Fin Si simple Dans un algorithme on est souvent amené à tester si une condition est vraie (par exemple la variable X est-elle négative ?). On emploie pour cela l’instruction structurée alternative Si … Fin Si, de syntaxe : Si condition logique Alors Instruction(s) Fin Si II – Opérateurs de comparaison utilisés dans les tests logiques : Les opérateurs de comparaison sont : ¾ Plus petit que < ; Plus grand que > ; Egal = ¾ Plus petit que ou égal <= ; plus grand ou égal >= ¾ Différent de : <> Exemple : algorithme à « dérouler manuellement » Algorithme Test1 Var Message : chaîne ; X : réel Début 1 - Message := "La valeur est correcte" ‘initialisation de Message 2 - Lire (X) 3 - Si X < 0 Alors 3-1 - Message := "La valeur est incorrecte" Fin si 4 - Écrire (Message) Fin NB : Les instructions de même rang sont numérotées (de 1 à 4). Les instructions propres à l’instruction structurée Si sont « indentées » dans le bloc Si (et numérotées 3-1, etc, s’il y en avaient d’autres). Dérouler manuellement l’algorithme dans le tableau suivant pour une valeur strictement négative 1 - Message 2 – Lire(X) 3 – Instruction Si X<0 Message (ex : X = -2), et pour une valeur positive ou nulle (ex : X = 0) 4 - Ecrire III – L’instruction SI…. Fin Si complète La structure générale d’une instruction Si …. Fin Si, permet, si on le souhaite, de préciser ce que l’on fait quand la condition testée est fausse. Si condition logique Alors Instruction(s) Sinon Instruction(s) Fin Si Exemple : Si vous obtenez une note supérieure à 10 à votre examen, vous êtes reçu(e), sinon vous êtes refusé(e). Algorithme Examen1 Var Note : réel ; Message : Chaîne Début Lire (Note) Si Note >= 10 Alors Message := "Vous êtes reçu(e)" Sinon Message := "Vous êtes refusé(e)" Fin Si Écrire (Message) Fin IV - Conditions logiques imbriquées Il est possible de tester une nouvelle condition, soit dans le bloc Alors, soit dans le bloc Sinon : « Si imbriqués » Exemple, si vous n’avez pas 10, vous avez le droit à un oral de rattrapage (à condition d’avoir au moins 8). Algorithme Examen2 Var Note : réel ; Message : Chaîne Début Lire (Note) Si Note >= 10 Alors Message := "Vous êtes reçu(e)" Sinon Si Note >= 8 Alors Message := "Vous devez passer l’oral" Fin Si Fin Si Écrire (Message) Fin Ceci étant, quand vous avez une note inférieure à 8, vous êtes refusé(e). Exercice : Complétez l’algorithme Examen2, pour indiquer le cas où vous êtes refusé(e). Exercice : Reprendre cet exercice en partant du test Si Note < 10 Alors (en traitant les cas, reçu(e), oral, refusé(e)) Exercice : Reprendre l’exercice, mais en partant maintenant du test Si Note < 8 Alors. Bernard Maurin Algorithmique – séance 2 2/4 V - Opérateurs logiques : Et, Ou Il est possible de relier deux conditions logiques par Et ou par Ou Condition1 Et Condition2 est vrai si les 2 conditions sont vraies. Condition1 Ou Condition2 est vrai si au moins l’une des 2 conditions est vraie Exemple : Une note doit être comprise entre 0 et 20. Il y a deux manières d’écrire le test : soit avec Et, soit avec Ou. Algorithme TestNoteEt Var Note : réel ; Message : Chaîne Début Lire (Note) Si Note >= 0 Et Note <= 20 Alors Message := "La note " ; Note ; " est correcte" Sinon Message := "La note " ; Note ; " est incorrecte" Fin Si Écrire (Message) Fin Algorithme TestNoteOut Var Note : réel ; Message : Chaîne Début Lire (Note) Si Note < 0 Ou Note > 20 Alors Message := "La note " ; Note ; " est incorrecte" Sinon Message := "La note " ; Note ; " est correcte" Fin Si Écrire (Message) Fin VI – Négation logique : l’opérateur logique Non Admettons que l’on veuille transposer « directement » en algorithmique, la condition suivante : « si X n’est pas positif ou nul, la valeur de X est incorrecte » La négation logique de condition, s’écrit NON(condition) NON (condition) prend la valeur opposée de condition. Si condition = Vrai, NON(condition) = FAUX Si condition = FAUX, NON(condition) = VRAI Dans notre exemple, il suffit de comprendre que si X >= 0 est faux (ex X = -1) ; NON (X >= 0) est vrai, parce que la négation de X >= 0 est X < 0 (Si X n’est pas positif ou nul, c’est qu’il est négatif). NON(X >= 0) = X < 0 Algorithme Test3 Var Message : chaîne ; X : réel Début 1 - Message := "La valeur est correcte" ‘initialisation de Message 2 - Lire (X) Bernard Maurin Algorithmique – séance 2 3/4 3 - Si Non (X>=0) Alors 3-1 - Message := "La valeur est incorrecte" Fin si 4 - Écrire (Message) Fin Exercices Pour relancer la consommation des ménages et favoriser la croissance, le gouvernement déclare accorder une réduction d’impôt de 10% aux ménages déclarant un revenu annuel supérieur ou égal à 80 000 €. Exercice : Écrire un algorithme utilisant un test Si Revenu >= 80 000 Alors, en éditant soit "Vous avez droit à une réduction d’impôt", soit "Vous n’avez pas droit à une réduction d’impôt". Exercice : Reprendre l’exercice précédent, mais à partir du test : Si Non(Revenu < 80 000) Alors VII –Complément : le type booléen. Dans l’instruction Si, condition est une expression logique, on dit aussi booléenne, qui est soit vraie, soit fausse. En plus des types de données déjà vus (entier, réel, chaîne), il existe un type booléen, qui ne peut prendre que 2 valeurs, notées, VRAI et FAUX. Ainsi, dans l’exemple ci-dessus, X < 0 est une expression booléenne, car elle ne peut prendre que deux valeurs : Vrai ou Faux. Il est tout à fait possible de définir une variable B de type booléen et de lui affecter la valeur X < 0, comme dans l’exemple ci-dessous (même si on pense ici que cela alourdit peut-être inutilement l’écriture). Algorithme Test bool Var Message : chaîne ; X : réel ; B : booléen Début 1 - Message := "La valeur est correcte" ‘initialisation de Message 2 - Lire (X) 3 - B := X < 0 4 - Si B Alors 4-1 - Message := "La valeur est incorrecte" Fin si 5 - Écrire (Message) Fin Bernard Maurin Algorithmique – séance 2 4/4