Informatique Cours S1.5 Boucle conditionnelle
Lycée Jules Ferry Cannes Page 1 sur 2 TSI1
1 Algorithme de boucle conditionnelle
La structure d'un algorithme de boucle conditionnelle fait intervenir :
l'instruction de boucle conditionnelle (while en python),
un test dont lesultat est un booléen (vrai True ou faux False),
la liste des instructions à répéter tant que le test est vrai.
Exemple : algorithme d'une boucle conditionnelle permettant la saisie de chiffres entiers tant qu'il s'agit
effectivement de chiffre entier.
Entrée : une chaine de caracres chaine supposée contenir un entier
Résultat : une liste liste contenant les entiers saisis
En pseudo code :
Ecrire 'Entrer un chiffre entier (ou un autre caracre pour terminer la saisie) : '
chaine Saisir
Tant que ('0' <= chaine) et (chaine <= '9') alors # les chiffres se suivent dans le codage des caracres
liste ajouter l'entier de la chaine à la liste
Afficher ('La nouvelle liste des entiers saisis est :')
Afficher (liste)
Ecrire ('Entrer un chiffre entier (ou un autre caracre pour terminer la saisie) : ' )
chaine Saisir
Fin Tant que
En python :
chaine = input ( 'Entrer un chiffre entier (ou un autre caractère pour terminer la saisie) : ' )
while ('0' <= chaine) and (chaine <= '9'):
liste = liste + [ int(chaine) ]
print ('La nouvelle liste des entiers saisie est :')
print (liste)
chaine = input ('Entrer un chiffre entier (ou un autre caracre pour terminer la saisie) : ' )
Syntaxe obligatoire :
-
while en minuscule
annonce le test à venir
- le test est une expression dont le résultat est un booen (True ou False)
-
:
les deux points annoncent la fin de l'expression du test et le but des instructions à réaliser
- les instructions àaliser dans le cas d'un test positif (True) doivent être
indentés
(décalées par
rapport à l'instruction while). Une instruction minimum est obligatoire
- la fin de l'indentation annonce la fin des instructions à répéter
Remarque : la variable (ici chaine) utilisée dans le test et modife par les instructions répées doit avoir
reçue une affectation avant l'instruction while.
Remarque :
- une expression est un groupe d'opérandes (nombre, chaine…) ls par des orateurs (+,*,/,==,…)
qui renvoie une valeur,
Exemples : 1+2 '0' <= chaine liste + [ int(chaine) ]
- une instruction est exécutée et peut contenir une ou plusieurs expressions.
Exemples : print (1+2) liste liste + [ int(chaine) ]
En d'autres termes une expression fait plutôtrence à un ément d'une ligne de commande, alors
qu'une instruction correspond à une ligne complète.
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.
Ialement lors d'opérationstitives, on utilise un
variant de boucle
(entier positif) qui décroit (ou
croit constamment) jusquatteindre 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 é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 croit à chaque boucle jusqu'à la valeur 0 (sauf si x
est effectivement le plus grand ément, dans ce dernier cas les instructions de la boucle while ne
sont jamais exécues).
PREUVE :
Mathématiquement on peut prouver si une algorithme délivre bien lesultat attendu à partir d'un
invariant de boucle
:
- proprié vraie lors de l'initialisation,
- proprié vraie pour chaque valeur du variant de boucle,
- proprié vraie en fin de boucle et qui montre que lesultat est bien celui attendu.
L'invariant de boucle est souvent difficile à trouver.
Exemple : l'invariant de boucle de l'algorithme pcé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 éments du deuxième tableau.
Solution pratique pour vérifier que l'algorithme donne lessultats 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
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !