Livre_silo 30 août 2013 16:32 Page 110
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
110
Informatique pour tous
SAVOIR-FAIRE Construire des boucles imbriquées
Imbriquer des boucles est judicieux si on a identifié une procédure « doublement répétitive ».
1 Si l’une des instructions qui se répète dépend de l’autre, il faut qu’elle constitue la
boucle interne.
2 De même, si l’une des instructions doit se répéter sans « interférence » entre ses
itérations, elle doit être la boucle interne.
3 Ensuite, on s’interroge pour savoir si le compteur de la boucle interne doit ou non
dépendre de celui de la boucle externe.
4 On écrit le corps la boucle interne.
5 On écrit enfin le corps de la boucle externe, ce qui se réduit souvent à ajouter
quelques instructions avant ou après le corps de la boucle interne.
6 On prendra garde aux trois niveaux d’indentation présents dans un tel programme.
Exercice 4.31 Écrire un programme qui affiche à l’écran un rectangle de n lignes sur p colonnes rempli
de caractères * sur le modèle suivant (pour n = 3 et p = 5) :
*****
*****
*****
Modifier ensuite ce programme pour qu’il affiche un triangle rectangle isocèle de taille n constitué de
caractères * sur le modèle suivant (pour n = 3) :
*
**
***
Il faut écrire n lignes identiques, mais nous ne connaissons pour l’instant aucun moyen de créer directement une chaîne de p caractères identiques. Nous allons donc utiliser des boucles imbriquées.
Une fois que l’on est passé à la ligne, il est impossible de remonter. Il faut donc que la boucle interne
affiche une ligne complète et que la boucle externe reproduise n lignes.
Les lignes étant identiques, la boucle interne ne dépend pas de la boucle externe.
La boucle interne consiste simplement à afficher p étoiles sans revenir à la ligne.
for j in range(p):
print("*", end="")
La boucle externe se contente de répéter n fois la boucle externe et de revenir à la ligne à la fin de chaque
itération. Le programme complet est donné ci-après.
for i in range(n):
for j in range(p):
print("*", end="")
print()
Dans le second programme demandé, toutes les lignes ne sont pas identiques : la boucle interne dépend
donc de la boucle externe. Il est facile de voir qu’il faudra afficher i étoiles sur la i-ème ligne. Il suffit donc
de modifier le nombre d’itérations de la boucle interne, en prenant garde que i va parcourir les valeurs
de 0 à n − 1.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
110
Informatique pour tous
SAVOIR-FAIRE Construire des boucles imbriquées
Imbriquer des boucles est judicieux si on a identifié une procédure « doublement répétitive ».
1 Si l’une des instructions qui se répète dépend de l’autre, il faut qu’elle constitue la
boucle interne.
2 De même, si l’une des instructions doit se répéter sans « interférence » entre ses
itérations, elle doit être la boucle interne.
3 Ensuite, on s’interroge pour savoir si le compteur de la boucle interne doit ou non
dépendre de celui de la boucle externe.
4 On écrit le corps la boucle interne.
5 On écrit enfin le corps de la boucle externe, ce qui se réduit souvent à ajouter
quelques instructions avant ou après le corps de la boucle interne.
6 On prendra garde aux trois niveaux d’indentation présents dans un tel programme.
Exercice 4.31 Écrire un programme qui affiche à l’écran un rectangle de n lignes sur p colonnes rempli
de caractères * sur le modèle suivant (pour n = 3 et p = 5) :
*****
*****
*****
Modifier ensuite ce programme pour qu’il affiche un triangle rectangle isocèle de taille n constitué de
caractères * sur le modèle suivant (pour n = 3) :
*
**
***
Il faut écrire n lignes identiques, mais nous ne connaissons pour l’instant aucun moyen de créer directement une chaîne de p caractères identiques. Nous allons donc utiliser des boucles imbriquées.
Une fois que l’on est passé à la ligne, il est impossible de remonter. Il faut donc que la boucle interne
affiche une ligne complète et que la boucle externe reproduise n lignes.
Les lignes étant identiques, la boucle interne ne dépend pas de la boucle externe.
La boucle interne consiste simplement à afficher p étoiles sans revenir à la ligne.
for j in range(p):
print("*", end="")
La boucle externe se contente de répéter n fois la boucle externe et de revenir à la ligne à la fin de chaque
itération. Le programme complet est donné ci-après.
for i in range(n):
for j in range(p):
print("*", end="")
print()
Dans le second programme demandé, toutes les lignes ne sont pas identiques : la boucle interne dépend
donc de la boucle externe. Il est facile de voir qu’il faudra afficher i étoiles sur la i-ème ligne. Il suffit donc
de modifier le nombre d’itérations de la boucle interne, en prenant garde que i va parcourir les valeurs
de 0 à n − 1.
