comment utiliser les boucles for comme alternative aux boucles while ou repeat.
EXEMPLES
Dans de nombreux langages de programmation, les boucles for sont une alternative courante aux boucles while et sont utilisées en particulier lorsque, à chaque itération, une variable de boucle est modifiée d’une même valeur (en Python, un entier).
Les formes les plus simples de boucles for sont les boucles de comptage :
for i in range(n):
Anweisung1
Anweisung2
...
range(n) fournit les nombres 0, 1, 2, … jusqu’à n-1, soit au total n nombres (il s’agit en fait d’une liste de nombres [0, 1, …, n-1]).
La valeur initiale de i est 0 et i est augmentée de 1 à chaque itération. Les instructions du bloc sont donc répétées n fois.
Cette boucle correspond à une boucle while avec valeur initiale 0, condition i < n et mise à jour i = i + 1.
Remarque : si i n’est pas utilisé dans le corps de la boucle, on peut, dans TigerJython, utiliser une boucle repeat, qui ne nécessite pas de variable et est donc plus simple pour les débutants.
Example 1: Dessiner un faisceau de lignes avec une boucle for
On trace 21 lignes de gauche à droite et 21 lignes de droite à gauche. La variable i prend les valeurs 0, 1, 2, …, 20, soit 21 valeurs au total.
Programme:
# Gp8a.pyfrom gpanel import *
makeGPanel(0, 20, 0, 20)
for i in range(21):
line(0, 10, 20, i)
line(20, 10, 0, i)
delay(100)
Example 2: Utiliser des boucles for avec 1, 2 ou 3 paramètres
La forme générale d’une boucle for utilise range() avec trois paramètres :
for i in range(start, stop, step):
Anweisung1
Anweisung2
...
La valeur initiale start ne doit pas forcément être 0 et le pas step peut être n’importe quel entier (même négatif).
Si step est positif, les instructions sont répétées tant que i est inférieur à stop.
for i in range(60):
rectangle(i, i)
for i in range(20,40):
rectangle(i, i)
for i in range(10,40,3):
rectangle(i, i)
Example 3: Utilisation de boucles for imbriquées
Pour dessiner un échiquier, on parcourt toutes les cases d’une matrice 8×8 avec un indice de ligne x et un indice de colonne y, à l’aide de deux boucles for imbriquées.
On commence avec y = 0 et, pour chaque valeur de y, on parcourt toutes les valeurs de x, puis on passe à y = 1, etc.
Programme:
# Gp8c.pyfrom gpanel import *
makeGPanel(0, 8, 0, 8)
setColor("blue")
for y in range(8):
for x in range(8):
if (x + y) % 2 == 0:
fillRectangle(x, y, x + 1, y + 1)
if (x + y) % 2 == 0 vérifie si la somme des indices est paire.
L’opération modulo a % b donne le reste de la division entière de a par b. Ainsi, a % 2 vaut 0 si a est pair et 1 s’il est impair.
Example 4: Dessiner un motif de Moiré
Un motif de Moiré apparaît lorsque des ensembles de lignes se superposent. La figure peut être générée avec deux boucles for imbriquées.
Programme:
# Gp8d.pyfrom gpanel import *
makeGPanel(0, 10, 0, 10)
for i in range(0, 11):
for k in range (0, 11):
line(i, 0, k, 10)
delay(100)
for i in range(0, 11):
for k in range (0, 11):
line(0, i, 10, k)
delay(100)
Example5: Dégradé de couleurs
Le dégradé du rouge au bleu est dessiné à l’aide de lignes de largeur 2 pixels. La première ligne est rouge, puis à chaque ligne tracée, la composante rouge diminue et la composante bleue augmente.
Dans une deuxième boucle for, on dessine des cercles remplis de plus en plus petits, en augmentant la composante verte à chaque cercle.
Le dessin est réalisé dans une fenêtre de taille 500×500 avec un système de coordonnées allant de 0 à 255.
Programme:
#Gp8e.pyfrom gpanel import *
makeGPanel(Size(500, 500))
window(0, 255, 0, 255)
lineWidth(2)
for i in range(255):
setColor(255-i, 0, i)
line(i, 0, i, 255)
move(128, 128)
for i in range(60):
setColor(15, 15 + 4*i, 15)
fillCircle(60-i
La fonction range() dans une boucle for peut avoir 1, 2 ou 3 paramètres (start, stop, step).
S’il n’y a qu’un seul paramètre, range(n) fournit les nombres de 0 à n-1, donc les instructions sont répétées n fois (comme avec repeat n).
Une boucle for peut toujours être remplacée par une boucle while, mais l’inverse n’est pas toujours possible, car la boucle for utilise des pas entiers.
À FAIRE PAR TOI-MÊME
1)
Dessine 10 carrés avec une boucle for :
a) en ligne
b) en diagonale
2)
Expérimente avec des faisceaux de lignes et crée de beaux graphiques.
3)
Parcours toutes les cases d’une matrice 8×8 avec des boucles for imbriquées et colore-les selon le modèle donné.
4)
Expérimente avec des dégradés de couleurs et crée les graphiques suivants :