Informatique Chapitre 9: Variants et invariants de boucle Jérôme D IDIER 19/11/2014 O BJECTIFS VARIANT I NVARIANT Objectifs du cours Compétences visées I Justifier qu’une itération (ou boucle) produit l’effet attendu au moyen d’un invariant I Démontrer qu’une boucle se termine effectivement (variant de boucle) I Connaitre les moyens de sortir des boucles sans les parcourir entièrement J. Didier Informatique Chapitre 9 2 O BJECTIFS VARIANT I NVARIANT Objectif Comment stopper une boucle ? Dans une boucle for ou while, on veut pouvoir s’arrêter si on réalise une condition. Exemple 1 : Chercher le premier entier naturel divisible par 6, par 7 et par 8. Solutions naïves (une avec for et une avec while) ? J. Didier Informatique Chapitre 9 3 O BJECTIFS VARIANT I NVARIANT Objectif Comment stopper une boucle ? Dans une boucle for ou while, on veut pouvoir s’arrêter si on réalise une condition. Exemple 1 : Chercher le premier entier naturel divisible par 6, par 7 et par 8. Solutions naïves (une avec for et une avec while) ? J. Didier Informatique Chapitre 9 3 O BJECTIFS VARIANT I NVARIANT Solution : utiliser la commande break L’instruction break : fin de boucle « brutale » : Si le programme rencontre une instruction break, la boucle indentée correspondante est interrompue. Exemple 1 : Chercher le premier entier naturel divisible par 6, par 7 et par 8. Nouvelles solutions (une avec for et une avec while) ? J. Didier Informatique Chapitre 9 4 O BJECTIFS VARIANT I NVARIANT Solution : utiliser la commande break L’instruction break : fin de boucle « brutale » : Si le programme rencontre une instruction break, la boucle indentée correspondante est interrompue. Exemple 1 : Chercher le premier entier naturel divisible par 6, par 7 et par 8. Nouvelles solutions (une avec for et une avec while) ? J. Didier Informatique Chapitre 9 4 O BJECTIFS VARIANT I NVARIANT Rappels : Les boucles L’instruction while : boucle conditionnelle, tant que while condition : bloc_d_instructions L’instruction for : boucle sur un itérable (liste, range, chaine de caractères) for variable in iterable : bloc_d_instructions Les boucles while et for sont interchangeables mais un type est souvent (beaucoup) plus adapté que l’autre. J. Didier Informatique Chapitre 9 5 O BJECTIFS VARIANT I NVARIANT Rappels : Les boucles L’instruction while : boucle conditionnelle, tant que while condition : bloc_d_instructions L’instruction for : boucle sur un itérable (liste, range, chaine de caractères) for variable in iterable : bloc_d_instructions Les boucles while et for sont interchangeables mais un type est souvent (beaucoup) plus adapté que l’autre. J. Didier Informatique Chapitre 9 5 O BJECTIFS VARIANT I NVARIANT Rappels : Les boucles L’instruction while : boucle conditionnelle, tant que while condition : bloc_d_instructions L’instruction for : boucle sur un itérable (liste, range, chaine de caractères) for variable in iterable : bloc_d_instructions Les boucles while et for sont interchangeables mais un type est souvent (beaucoup) plus adapté que l’autre. J. Didier Informatique Chapitre 9 5 O BJECTIFS VARIANT I NVARIANT Rappels : Les boucles L’instruction while : boucle conditionnelle, tant que while condition : bloc_d_instructions L’instruction for : boucle sur un itérable (liste, range, chaine de caractères) for variable in iterable : bloc_d_instructions Les boucles while et for sont interchangeables mais un type est souvent (beaucoup) plus adapté que l’autre. J. Didier Informatique Chapitre 9 5 O BJECTIFS VARIANT I NVARIANT Rappels : Le variant de boucle Classiquement, la condition porte sur un compteur qui augmente ou diminue à chaque itération de la boucle. La méthode classique et certaine est d’utiliser un entier positif qui décroît car on est sûr que la boucle se finit lorsque l’entier est nul. Cet entier est appelé variant de boucle. Pour identifier si une boucle se termine effectivement, il faut I identifier le variant de boucle et vérifier qu’il est positif I vérifier qu’il décroît effectivement et strictement à chaque itération I dans le cas contraire, on rencontre une boucle infinie. Rappelons enfin qu’on peut très bien choisir un variant qui augmente et mettre une condition sur une valeur qu’il ne doit pas dépasser. J. Didier Informatique Chapitre 9 6 O BJECTIFS VARIANT I NVARIANT Exemples Soit la suite numérique un+1 = un − 2n avec u0 = 21. Exemple 1 : Calcul des n premiers termes inc ,u = n ,21 while inc >=0: print (’Terme ’+ str(n−inc) +’ = ’+str(u)) u=u−2∗(n−inc) inc=inc−1 Qui est le variant ? Vérifie-t-il les conditions ? J. Didier Informatique Chapitre 9 7 O BJECTIFS VARIANT I NVARIANT Exemples Soit la suite numérique un+1 = un − 2n avec u0 = 21. Exemple 2 : Pour quel rang la suite devient-elle négative inc ,u = n ,21 while u >=0: print (’Terme ’+ str(n−inc) +’ = ’+str(u)) u=u−2∗(n−inc) inc=inc−1 Qui est le variant ? Vérifie-t-il les conditions ? J. Didier Informatique Chapitre 9 8 O BJECTIFS VARIANT I NVARIANT Principe général Lors de la réalisation d’un algorithme, il est nécessaire : I de vérifier que celui-ci permet bien de répondre au problème initial ; I de s’assurer que celui-ci se termine sans quoi le résultat du problème ne sera jamais délivré à l’utilisateur. Une des manières les plus efficaces pour démontrer qu’un algorithme est correct, est d’établir un invariant de boucle, c’est à dire une propriété qui est vraie tout au long de l’exécution d’une boucle. Pour démontrer qu’un algorithme se termine bien, on utilise un variant de boucle. L’utilisation d’un variant et d’un invariant est différente, mais complémentaire. J. Didier Informatique Chapitre 9 9 O BJECTIFS VARIANT I NVARIANT Principe général Lors de la réalisation d’un algorithme, il est nécessaire : I de vérifier que celui-ci permet bien de répondre au problème initial ; I de s’assurer que celui-ci se termine sans quoi le résultat du problème ne sera jamais délivré à l’utilisateur. Une des manières les plus efficaces pour démontrer qu’un algorithme est correct, est d’établir un invariant de boucle, c’est à dire une propriété qui est vraie tout au long de l’exécution d’une boucle. Pour démontrer qu’un algorithme se termine bien, on utilise un variant de boucle. L’utilisation d’un variant et d’un invariant est différente, mais complémentaire. J. Didier Informatique Chapitre 9 9 O BJECTIFS VARIANT I NVARIANT Principe général Lors de la réalisation d’un algorithme, il est nécessaire : I de vérifier que celui-ci permet bien de répondre au problème initial ; I de s’assurer que celui-ci se termine sans quoi le résultat du problème ne sera jamais délivré à l’utilisateur. Une des manières les plus efficaces pour démontrer qu’un algorithme est correct, est d’établir un invariant de boucle, c’est à dire une propriété qui est vraie tout au long de l’exécution d’une boucle. Pour démontrer qu’un algorithme se termine bien, on utilise un variant de boucle. L’utilisation d’un variant et d’un invariant est différente, mais complémentaire. J. Didier Informatique Chapitre 9 9 O BJECTIFS VARIANT I NVARIANT Invariant de boucle Définition Un invariant de boucle est une propriété ou une formule logique, I qui est vérifiée après la phase d’initialisation ; I qui reste vraie après l’exécution d’une itération (conservation) ; I et qui, conjointement à la condition d’arrêt (terminaison), permet de montrer que le résultat attendu et bien le résultat calculé. Principe similaire à la récurrence en Maths J. Didier Informatique Chapitre 9 10 O BJECTIFS VARIANT I NVARIANT Invariant de boucle Définition Un invariant de boucle est une propriété ou une formule logique, I qui est vérifiée après la phase d’initialisation ; I qui reste vraie après l’exécution d’une itération (conservation) ; I et qui, conjointement à la condition d’arrêt (terminaison), permet de montrer que le résultat attendu et bien le résultat calculé. Principe similaire à la récurrence en Maths J. Didier Informatique Chapitre 9 10 O BJECTIFS VARIANT I NVARIANT Invariant de boucle Définition Un invariant de boucle est une propriété ou une formule logique, I qui est vérifiée après la phase d’initialisation ; I qui reste vraie après l’exécution d’une itération (conservation) ; I et qui, conjointement à la condition d’arrêt (terminaison), permet de montrer que le résultat attendu et bien le résultat calculé. Principe similaire à la récurrence en Maths J. Didier Informatique Chapitre 9 10 O BJECTIFS VARIANT I NVARIANT Invariant de boucle Définition Un invariant de boucle est une propriété ou une formule logique, I qui est vérifiée après la phase d’initialisation ; I qui reste vraie après l’exécution d’une itération (conservation) ; I et qui, conjointement à la condition d’arrêt (terminaison), permet de montrer que le résultat attendu et bien le résultat calculé. Principe similaire à la récurrence en Maths J. Didier Informatique Chapitre 9 10 O BJECTIFS VARIANT I NVARIANT Invariant de boucle Définition Un invariant de boucle est une propriété ou une formule logique, I qui est vérifiée après la phase d’initialisation ; I qui reste vraie après l’exécution d’une itération (conservation) ; I et qui, conjointement à la condition d’arrêt (terminaison), permet de montrer que le résultat attendu et bien le résultat calculé. Principe similaire à la récurrence en Maths J. Didier Informatique Chapitre 9 10 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 1 : Division euclidienne de n par d q,r=0,n while r >=d: q = q + 1 r= r − d Testons cela sur l’exemple n = 13 et d = 3. Vérifions que cet algorithme se termine bien et qu’il renvoie bien un résultat correct. I Déterminer un invariant de boucle I Vérifier que cette propriété est vraie avant la boucle (initialisation) I Vérifier qu’elle reste vraie à chaque itération (conservation) Vérifier que la boucle se termine (terminaison) I J. Didier Informatique Chapitre 9 11 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 1 : Division euclidienne de n par d q,r=0,n while r >=d: q = q + 1 r= r − d Testons cela sur l’exemple n = 13 et d = 3. Vérifions que cet algorithme se termine bien et qu’il renvoie bien un résultat correct. I Déterminer un invariant de boucle n = q∗d + r I Vérifier que cette propriété est vraie avant la boucle (initialisation) I Vérifier qu’elle reste vraie à chaque itération (conservation) Vérifier que la boucle se termine (terminaison) I J. Didier Informatique Chapitre 9 11 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 2 : Calcul de 2n y, n_loc = 1,0 while n_loc < n: y = y ∗2 n_loc += 1 Vérification Invariant : Initialisation : Conservation : I Avant le passage dans la boucle : I Après le passage dans la boucle : Terminaison : J. Didier Informatique Chapitre 9 12 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 2 : Calcul de 2n y, n_loc = 1,0 while n_loc < n: y = y ∗2 n_loc += 1 Vérification Invariant : y = 2∗∗n_loc Initialisation : Conservation : I Avant le passage dans la boucle : I Après le passage dans la boucle : Terminaison : J. Didier Informatique Chapitre 9 12 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 2 : Calcul de 2n y, n_loc = 1,0 while n_loc < n: y = y ∗2 n_loc += 1 Vérification Invariant : y = 2∗∗n_loc Initialisation :y =1 et n_loc = 0 Conservation : I Avant le passage dans la boucle : I Après le passage dans la boucle : Terminaison : J. Didier Informatique Chapitre 9 12 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 2 : Calcul de 2n y, n_loc = 1,0 while n_loc < n: y = y ∗2 n_loc += 1 Vérification Invariant : y = 2∗∗n_loc Initialisation :y =1 et n_loc = 0 Conservation : I Avant le passage dans la boucle : y = 2∗∗n_loc I Après le passage dans la boucle : Terminaison : J. Didier Informatique Chapitre 9 12 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 2 : Calcul de 2n y, n_loc = 1,0 while n_loc < n: y = y ∗2 n_loc += 1 Vérification Invariant : y = 2∗∗n_loc Initialisation :y =1 et n_loc = 0 Conservation : I I Avant le passage dans la boucle : y = 2∗∗n_loc Après le passage dans la boucle : y = 2∗y = 2∗2∗∗n_loc et n_loc = n_loc + 1 Terminaison : J. Didier Informatique Chapitre 9 12 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 2 : Calcul de 2n y, n_loc = 1,0 while n_loc < n: y = y ∗2 n_loc += 1 Vérification Invariant : y = 2∗∗n_loc Initialisation :y =1 et n_loc = 0 Conservation : I Avant le passage dans la boucle : y = 2∗∗n_loc I Après le passage dans la boucle : y = 2∗y = 2∗2∗∗n_loc et n_loc = n_loc + 1 Terminaison : n_loc croit strictement à chaque itération, la sortie de boucle est assurée par le fait que l’on ne peut dépasser la valeur n. J. Didier Informatique Chapitre 9 12 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 3 : Suite de Fibonacci Réaliser un programme qui calcule les n premiers termes de la suite de Fibonacci. La suite de Fibonacci est la suite de nombres définie par récurrence par u0 = 1, u1 = 1 et pour n ≥ 2 par un = un−1 − un−2 Vérification I Prouver que votre programme se termine bien (terminaison) I Montrer que votre algorithme produit bien le résultat attendu à l’aide d’un invariant de boucle I I Vérifier que cette propriété est vraie avant la boucle (initialisation) Vérifier qu’elle reste vraie à chaque itération (conservation) J. Didier Informatique Chapitre 9 13 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 3 : Suite de Fibonacci - Solution possible Vérifier que l’invariant proposé est correct. Vérification n = 20 fprec ,f = 1,1 #i n i t i a l i s a t i o n fib = [fprec ,f] i = 2 while i < n: temp = f + fprec fprec = f f = temp i = i + 1 fib. append (f) print (fib) # invariant fprec = fib [ i−1] et f = fib [ i ] J. Didier Informatique Chapitre 9 14 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [Valet] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [9,Valet] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [9,Valet,As] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [9,10,Valet,As] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [9,10,Valet,Roi,As] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : [7,9,10,Valet,Roi,As] Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [4, 12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [4, 7, 12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [3, 4, 7, 12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [2, 3, 4, 7, 12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [2, 3, 4, 7, 8, 12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 4 : Tri par insertion Il s’agit de l’algorithme classique que vous utilisez lorsque vous triez un jeu de carte. On trie en plaçant l’élément à sa place. Exemple avec un jeu de cartes On veut trier cette main : [Valet,9,As,10,Roi,7]. On réalise le tri suivant : Exemple sur une liste On veut trier la liste L = [12, 4, 7, 3, 2, 8, 9]. On réalise le tri suivant : [2, 3, 4, 7, 8, 9, 12] Invariant Quelle propriété est vérifiée à chaque itération ? J. Didier Informatique Chapitre 9 15 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 5 : Tri par selection Pour une liste de n éléments (numérotée de 1 à n) : I On détermine le plus petit élément puis on le place à l’indice 1 I On détermine le second plus petit élément puis on le place à l’indice 2 I ... Code L = [12 ,4 ,7 ,3 ,2 ,8 ,9] # Algorithme de t r i par selection for k in range (0, len(L)) :#parcours de la l i s t e min = k for l in range(k+1, len(L)) :#determination if L[l] < L[min] : min = l if min is not k :#si k différent L[k],L[min] = L[min],L[k] J. Didier du minimum de min on i n t e r v e r t i t les élément Informatique Chapitre 9 16 O BJECTIFS VARIANT I NVARIANT Exemples Exemple 5 : Tri par selection Pour une liste de n éléments (numérotée de 1 à n) : I On détermine le plus petit élément puis on le place à l’indice 1 I On détermine le second plus petit élément puis on le place à l’indice 2 I ... Code L = [12 ,4 ,7 ,3 ,2 ,8 ,9] # Algorithme de t r i par selection for k in range (0, len(L)) :#parcours de la l i s t e min = k for l in range(k+1, len(L)) :#determination if L[l] < L[min] : min = l if min is not k :#si k différent L[k],L[min] = L[min],L[k] J. Didier du minimum de min on i n t e r v e r t i t les élément Informatique Chapitre 9 16