Licence 2ème année - NTE 3 – 2005-06 Bernard Maurin [email protected] NTE 3 – Algorithmique et programmation Visual Basic TD 3 : structures répétitives Notions de référence de la séance 3 Structures répétitives : Indicées (Pour) ; conditionnelles (Répéter Jusqu’à; Tant que) I – Introduction : somme des n premiers nombres entiers Un des algorithmes les plus classiques est celui de la somme de n valeurs. Nous choisirons comme exemple la somme des n premiers nombres entiers. Pour simuler manuellement cet algorithme, nous fixerons n à 4. Nous devons donc décrire, d’un point de vue algorithmique, comment faire S = 1+2+3+4 (en fait S = 0+1+2+3+4). L’idée est de faire la somme de proche en proche (comme les comptables, à l’époque où les comptes se faisaient à la main) : 0+1 = 1 ; 1+2 = 3 ; 3+3 = 6 ; 6+4 = 10. La première valeur de S est 0. Ensuite, on additionne à la valeur courante de S, la prochaine valeur entière, notée i. Ce qui en algorithmique se note S := S+i. Cette opération se répétant de i allant de 1 à 4, on dit qu’on a une structure répétitive, ou en boucle. II – Gestion automatique des répétitions : la boucle indicée Pour Syntaxe Pour i := indice_inférieur à indice_supérieur faire Instruction(s) Fin Pour NB : si indice_inférieur > indice_supérieur, l’instruction répétitive Pour n’est pas exécutée. Algorithme de la somme des n premiers entiers (n=4). NB : En fait il s’agit de la somme des n+1 premiers entiers, puisque qu’on inclue 0 dans la somme. Algorithme SommeEntiers1 Const n = 4 Var i : entier ; S : entier Début 1 – S := 0 2 – ‘boucle Pour Pour i := 1 à n faire S := S+i Fin Pour 3 – Ecrire("la somme des " ; n ; " premiers entiers vaut : " ; S) Fin La variable i prenant automatiquement les valeurs 1, 2, 3 et 4, on obtient bien de proche en proche le résultat cherché pour la variable S. NB : la variable i s’appelle aussi un compteur (elle permet de compter le nombre de passages dans la boucle) Une simulation manuelle permet de s’assurer de la compréhension de la méthode. instructions 1 (initialisation de S) 2 (boucle Pour) 1 2 3 4 3 (écriture de S = 10) 5 i S 0 0+1=1 1+2=3 3+3=6 6 + 4 = 10 10 NB : pour des raisons liées à la gestion du compteur i, à la sortie de boucle Pour, i vaut n+1 (ici 5). Exercice : Simuler manuellement l’algorithme précédent si n=0. III – Gestion des répétitions liée à une condition : la boucle conditionnelle Répéter jusqu’à Syntaxe Répèter Instruction(s) Jusqu’à condition NB : les instructions sont répétées jusqu’à ce que condition soit vraie Algorithme SommeEntiers2 Const n = 4 Var i : entier ; S : entier Début 1 – S := 0 2 – i := 0 2 – ‘boucle Répéter Répéter i := i+1 S := S+i Jusqu’à i = n 3 – Ecrire("la somme des " ; n ; " premiers entiers vaut : " ; S) Fin Que se passe-t-il si l’on fixe la valeur de la constante n à 0 ? IV – Gestion des répétitions liée à une condition : la boucle conditionnelle Tant que Syntaxe Tant que condition faire Instruction(s) Fin Tant que Bernard Maurin Algorithmique – séance 3 2/3 NB : les instructions sont exécutées si condition est vraie. Algorithme SommeEntiers3 Const n = 4 Var i : entier ; S : entier Début 1 – S := 0 2 – i := 0 2 – ‘boucle Tant que Tant que i < n faire i := i+1 S := S+i Fin Tant que 3 – Ecrire("la somme des " ; n ; " premiers entiers vaut : " ; S) Fin Que se passe-t-il si n = 0 ? NB : pour s’assurer que les algorithmes où l’on gère le compteur i à l’aide d’une condition, sont correctement écrits, il suffit de les tester manuellement pour un seul passage dans la boucle (ici tester les algorithme pour n=1) V – Exercices : produits de n valeurs Valeur future. On veut déterminer la valeur future d’une somme S placée durant n années au taux r, en faisant de proche en proche le produit Valeur_future = S(1+r)(1+r)(1+r)(1+r) (n=4 dans cette écriture). Factoriel. On veut déterminer de proche en proche le produit des n premiers entiers (factoriel n). F = 1*2*3*4*5 (ici n=5) NB : Cette notion intuitive d’une somme ou d’un produit « de proche en proche », s’appelle mathématiquement une récurrence. Bernard Maurin Algorithmique – séance 3 3/3