29/05/2012 Tests / branchements conditionnels En fonction d’une condition on agit différemment … Booléen est une expression dont la valeur est: VRAI ou FAUX. Il y a 2 formes possibles pour un test: test: Si booléen Alors Instructions 1 Sinon Instructions 2 Finsi Si booléen Alors Instructions Finsi FSR - M. HIMMI 2012 Cela peut être: une variable de type booléen une condition 1 Tests Tests imbriqués Si booléen1 Alors instructions Si booléen2 Alors instructions Sinon instructions Finsi Finsi une valeur un opérateur de comparaison une autre valeur Algorithmique SMP-SMC S2 2011-2012 2 FSR - M. HIMMI 2012 Tests Une condition est une expression composée de trois éléments: FSR - M. HIMMI 2012 Tests / branchements conditionnels 3 FSR - M. HIMMI 2012 Les tests imbriqués sont des outils de simplification et d'optimisation des algorithmes 4 1 29/05/2012 Tests Exercice 15 SinonSi Sinon et Si peuvent être Si booléen1 Alors fusionnés en instructions un SinonSi. SinonSi. SinonSi booléen2 alors instructions C'est un seul sinon bloc de test, instructions terminé par un seul FinSi Finsi FSR - M. HIMMI 2012 5 Exercice 16 6 Ecrire un algorithme qui lira au clavier l’heure et les minutes, et affichera l’heure qu’il sera une minute plus tard. "Poussin" de 6 à 7 ans "Pupille" de 8 à 9 ans "Minime" de 10 à 11 ans "Cadet" après 12 ans Si l'utilisateur tape 21 puis 32, l'algorithme doit répondre : "Dans une minute, il sera 21 heure(s) 33". On suppose que l'utilisateur entre une heure valide. Peut-on concevoir plusieurs algorithmes équivalents menant à ce résultat ? Algorithmique SMP-SMC S2 2011-2012 FSR - M. HIMMI 2012 Exercice 17 Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur. Ensuite, il l’informe de sa catégorie: FSR - M. HIMMI 2012 Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si le produit est négatif, positif ou nul. On ne doit pas calculer le produit ! 7 FSR - M. HIMMI 2012 8 2 29/05/2012 Boucles / structures itératives Exercice 18 Répéter des instructions tant qu’une condition est vérifiée Un magasin de photocopie facture 0,50Dh les dix premières pages, 0,40Dh les vingt suivantes et 0,20Dh au-delà. une structure de boucle se présente ainsi: TantQue booléen … Instructions … FinTantQue Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies effectuées et qui affiche le montant à payer. FSR - M. HIMMI 2012 9 Boucles / structures itératives Etapes: 1. Si booléen est VRAI, on exécute les instructions jusqu'à FinTantQue. FinTantQue. 2. On retourne ensuite sur la ligne TantQue TantQue,, on évalue booléen,, et ainsi de suite. booléen 3. Si booléen est FAUX on passe directement à la ligne 10 après FinTantQueFSR - M. HIMMI 2012 Boucles / structures itératives Répéter des instructions un nombre de fois… Erreur classique: booléen n'est jamais VRAI. VRAI. Le programme ne rentre alors jamais dans la boucle… booléen ne devient jamais FAUX. FAUX. L'ordinateur tourne alors dans la boucle et n'en sort plus, C'est la "boucle infinie" une autre structure de boucle: Pour Compteur ← Initial à Final Pas ValeurDuPas … Instructions … Compteur suivant TantQue : on ne connaît pas d'avance le nombre de fois Pour : le programmeur connaît d'avance le nombre de fois FSR - M. HIMMI 2012 Algorithmique SMP-SMC S2 2011-2012 11 FSR - M. HIMMI 2012 12 3 29/05/2012 Boucles / structures itératives Boucles Boucles imbriquées mais pas croisées à éviter ! Variables Truc, Trac en Entier Début Pour Truc ← 1 à 15 Ecrire "Il est passé par ici" Pour Trac ← 1 à 6 Ecrire "Il repassera par là" Trac Suivant Truc Suivant Fin FSR - M. HIMMI 2012 Examinons l'algorithme suivant : Variable T en Entier Début Pour T ← 1 à 15 T←T*2 Ecrire "Passage numéro : ", T T Suivant Fin 13 FSR - M. HIMMI 2012 Exercice 19 Exercice 20 Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message : «Plus petit !», et inversement, «Plus grand !» si le nombre est inférieur à 10. Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 à 27. FSR - M. HIMMI 2012 Algorithmique SMP-SMC S2 2011-2012 15 FSR - M. HIMMI 2012 14 16 4 29/05/2012 Exercice 21 Exercice 22 Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la table de multiplication de ce nombre, présentée comme suit (l'utilisateur entre le nombre 7): Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa factorielle. Table de 7 : 7x1=7 7 x 2 = 14 … 7 x 10 = 70 FSR - M. HIMMI 2012 17 FSR - M. HIMMI 2012 18 FSR - M. HIMMI 2012 20 Exercice 23 Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise ensuite quel était le plus grand parmi ces 20 nombres et sa position FSR - M. HIMMI 2012 Algorithmique SMP-SMC S2 2011-2012 19 5