Quelques techniques usuelles
CHAPITRE 6
106
Remarque
Les démarches utilisées dans cet exemple et celui du paragraphe 4.2, page 103, sont assez
différentes. Ici, nous avons utilisé ce que l’on nomme une démarche descendante : elle
consiste à décomposer le problème posé en sous-problèmes plus faciles à résoudre, puis à
décomposer à son tour chaque sous-problème... et ceci jusqu’à ce que l’on arrive à une solution entièrement formulée. Dans l’exercice précédent, en revanche, nous avions plutôt utilisé
une démarche opposée qu’on nomme démarche ascendante. En pratique, la réalisation d’un
programme combine souvent les deux démarches.
Exercice 6.4 Que se passe-t-il si, dans le programme précédent, on oublie les { } de la premère boucle en écrivant :
entier i, j, prod
répéter pour i := 1 à 9
écrire «TABLE de », i
répéter pour j := 1 à 10
{ prod := i * j
écrire i, « x », j « = », prod
}
4.4 Une erreur à ne pas commettre
Lorsque l’on imbrique des répétitions inconditionnelles, il faut veiller à ne pas utiliser le
même compteur pour chacune des instructions. Par exemple, supposez que, par mégarde,
nous utilisions le même compteur pour nos deux instructions imbriquées du précédent exemple, en écrivant (nous ne nous intéressons pas ici au contenu détaillé des différentes
boucles) :
répéter pour i := 1 à 9
{ .....
// instructions niveau 1
répéter pour i := 1 à 10
{ .....
// instructions niveau 2
}
}
Certes, ici, la deuxième répétition tente de modifier la valeur du compteur géré par la première. Comme nous l’avons dit, cela est théoriquement interdit mais beaucoup de traducteurs
de langages sont assez laxistes sur ce point et, d’ailleurs, dans beaucoup de langages, la
notion de compteur n’est même pas accessible au traducteur (revoyez la rubrique langages du
chapitre consacré aux structures de contrôle). Ici, il est fort possible qu’à la fin du premier
tour de la boucle interne, le compteur i vaille 10 ; on procède à son incrémentation après la
fin du premier tour de la boucle externe et il prendra donc la valeur 11. Comme cette valeur
est supérieure à 9, il y aura arrêt de la boucle externe qui n’aura ainsi été parcourue qu’une
seule fois.
Précédent

- 129/370

Suivant