Informatique Cours S1.5 Boucle conditionnelle
Lycée Jules Ferry Cannes Page 2 sur 2 TSI1
Les expressions du test sont les mêmes qu'avec l'instruction conditionnelle if.
2 Précaution lors de l'usage d'une boucle conditionnelle
Le danger particulier d'une boucle while est de ne jamais s'arrêter : le programme tourne indéfiniment dans
la boucle. Cela impose de forcer l'arrêt du programme (ctrl-c par exemple) ce qui n'est jamais souhaitable.
SOLUTION :
il faut s'assurer que le test pourra devenir faux : les instructions de la boucle doivent agir sur les variables
du test de telle façon que le test puisse devenir faux.
Idéalement lors d'opérations répétitives, on utilise un
variant de boucle
(entier positif) qui décroit (ou
croit constamment) jusqu'à atteindre une valeur entière (zéro par exemple).
Exemple :
# Entrée : un tableau T de nombres triés par ordre croissant T[0..n]
# un nombre x
# Sortie : un tableau T de nombres triés par ordre croissant T[0..n+1] contenant x
T=[ 0 , 1.5 , 1.7 , 2] # valeur initiale de la table T
x=1.6 # nombre à insérer à T
i= len(T)-1 # i est affecté du numéro de dernier indice de T
T=T+ [ x ] # on ajoute un élément à la liste T (par défaut x est supposé être le plus grand)
while (T[i] > x and i > 0) :
T[i+1]=T[i]
T[i]=x
i=i-1
print ( 'Nouvelle liste triée :', T)
i est un variant de boucle : entier positif et qui décroit à chaque boucle jusqu'à la valeur 0 (sauf si x
est effectivement le plus grand élément, dans ce dernier cas les instructions de la boucle while ne
sont jamais exécutées).
PREUVE :
Mathématiquement on peut prouver si une algorithme délivre bien le résultat attendu à partir d'un
invariant de boucle
:
- propriété vraie lors de l'initialisation,
- propriété vraie pour chaque valeur du variant de boucle,
- propriété vraie en fin de boucle et qui montre que le résultat est bien celui attendu.
L'invariant de boucle est souvent difficile à trouver.
Exemple : l'invariant de boucle de l'algorithme précédent est :
la juxtaposition des tableaux T[0, i] et T[i+ 2, n+1] est égale au tableau initial et x est plus petit que
tous les éléments du deuxième tableau.
Solution pratique pour vérifier que l'algorithme donne les résultats attendus : tester avec des valeurs
particulières (mais ce n'est pas une preuve).
Exemple : -1, 1.6 puis 3 permettraient de vérifier que l'algorithme classe correctement les valeurs.
Références : http://www.mpsi-lycee-saint-exupery.fr