Conseils
Il faut prendre garde aux points suivants :
-
Faire attention aux conditions initiales, aux conditions d'arrêt et à l'évolution des variables impliquées dans le test de sortie.
-
Pour mettre au point la boucle, il faut savoir exécuter la boucle à la main (simuler l'exécution de l'algorithme ou du programme, instruction par instruction), en faisant évoluer les valeurs des variables.
-
Les instructions contenues dans une boucle « while » ou « do...while » doivent permettre de modifier les variables impliquées dans le test d'arrêt de telle sorte que la boucle se termine. Pour la boucle « for », il ne faut pas que l'exécution des instructions de la boucle change la valeur de l'incrément. En effet, un tel changement risque de rendre la boucle non déterministe.
Pour le point 1, nous avons mis en évidence l'influence de ces éléments dans la présentation des boucles à bornes non définies en C en présentant plusieurs exemples avec la boucle while.
Pour le point 2, tant que l'on ne maîtrise pas le fonctionnement des boucles, il est utile d'effectuer des exemples à la main comme nous l'avons fait. éventuellement, vous pouvez dessiner un organigramme pour vous aider à dérouler la boucle que vous avez construite.
Le point 3 correspond à une erreur classique dont nous donnons un exemple simple ci-après.
Considérons l'exemple suivant :
i=0 ;
while (i<3)
{ printf("\n i=%4d",i); }
Le programme reste bloqué dans une boucle infinie. En effet, i vaut 0 avant d'entrer dans la boucle. La valeur de i n'est jamais modifiée dans le corps de la boucle. La valeur reste à 0 et comme la condition logique évalue si i<3, elle est toujours évaluée à vrai.
La boucle est infinie.
Un exemple plus compliqué vous est fourni dans la proposition de modification de la solution du problème 5 (transvasement). Pour bien le comprendre, il faut suivre précisément les directives.