Méthodologie
La conception d'une boucle tant que nécessite plusieurs points d'attention :
la situation avant d'entrer dans la boucle (pré-condition) est-elle celle souhaitée ?
Par exemple, l'instruction qui suit peut être source d'erreur.
while sommet_trefle(1) :
deplacer_sommet(1,2)
En effet, la condition du tant que porte sur la couleur de la carte au sommet du tas 1. Pour cela on utilise la fonction sommet_trefle
. Mais pour être utilisée, celle-ci est nécessite que le tas numéro 1 ne soit pas vide.
la situation à la sortie de la boucle (post-condition) est-elle bien celle souhaitée ?
la boucle ne risque-t-elle pas d'être infinie (problème de l'arrêt) ?
Par exemple, l'instruction qui peut conduire à une répétition infinie de déplacement d'une carte du tas 1 vers le tas 2, puis d'un retour de la carte déplacée vers son tas d'origine. En effet si le tas 1 n'est pas vide au moment d'exécuter cette instruction, la condition du tant que est satisfaite et l'action est exécutée, action qui aboutit à la même situation que celle de départ : le tas 1 ne sera jamais vide.
while tas_non_vide(1) :
deplacer_sommet(1,2)
deplacer_sommet(2,1)
Exemple : Exemples en vidéo avec le module cartes
Nous allons illustrer les différents concepts vus dans cette séquence.