Deutsch   English   Français   

8. Structure for

 

 

TU APPRENDS ICI...

 

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.py
from gpanel import *

makeGPanel(0, 20, 0, 20)

for i in range(21):
    line(0, 10, 20, i)
    line(20, 10, 0, i)
    delay(100)
Copy to clipboard
 




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.py
from 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)
Copy to clipboard
 

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.py

from 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)
Copy to clipboard
 


Example 5: 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.py
from 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
Copy to clipboard
 

 

 

À RETENIR...

 

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 :

 
a)
b)

c)