wiki:infofem:lda:cours2021:lda2021-notion-repetition

Faire répéter des actions à la machine


Nous allons maintenant voir un outil supplémentaire qui va nous permettre de créer nos dessins encore plus facilement et rapidement. Pour l'instant si nous voulons faire dessiner 9 cercles à l'ordinateur, nous devons faire 9 appels à la fonction ellipse comme ceci :


Cela fonctionne très bien mais imaginez que nous voulions 100 ou 1000 cercles, cela deviendrait vite laborieux. Pour répondre à ce problème il existe un outil permettant de faire répéter des actions à l'ordinateur sans nous fatiguer : les répétitions. Il existe 2 types de boucles mais pour ce stage nous ne verrons que la boucle for.
Tout d'abord observez le code ci-dessus et principalement les colonnes de nombres des instructions ellipse.
Ne remarquez-vous rien de particulier ?

En effet les nombres rouges sont identiques. Cela s'explique par le fait que :
→ le deuxième nombre correspond à la coordonnée y du centre des cercles. Puisque les cercles sont en ligne, cette information est la même pour les 9 cercles → y = 100
→ les troisième et quatrième nombres correspondent aux diamètres verticaux et horizontaux du cercle. Les nôtres étant tous identiques, ces informations sont communes aux 9 cercles → 30 et 30.
La seule donnée qui change à chaque itération est l'information de la valeur de coordonnée x du centre des cercles (les nombres bleus).
Examinons de plus près les valeurs prises pour cette coordonnée : 40, 70, 100, 130, 160, 190, 220, 250. Nous avons donc une suite d'instructions qui sont presque identiques : ellipse(x,100,30,30) avec x qui prend les valeurs successives dans [40, 70, 100, 130, 160, 190, 220, 250].

On va donc utiliser une boucle for pour faciliter l'écriture de ce traitement qui se répète plusieurs fois presque à l'identique.

Par exemple, pour exprimer le fait que x prend les valeurs successives de 40, 70, 100, 130, 160, 190, 220, 250, on écrit :

for x in [40, 70, 100, 130, 160, 190, 220, 250]:
  ellipse(x, 100, 30, 30)


En effet, ici l'instruction ellipse(x,100,30,30) va s'exécuter 9 fois, et à chaque itération x va prendre une valeur différente (40 puis 70 puis 100 … ).

On peut aller encore plus loin en remarquant que les valeurs successives de x augmentent de 30 en 30. x évolue donc de 30 en 30 (on dit aussi par pas de 30), en commençant à 40 et en s'arrêtant à 250. On peut donc écrire :

# x commence à 40, s'arrête avant 251, et effectue des pas de 30
for x in range(40,251,30):
  ellipse(x, 100, 30, 30)

Ici on utilise la fonction range(début, fin, pas) : x prend d'abord la valeur de début (ici 40). Puis au deuxième tour de boucle on ajoute à x le pas (ici 30), x prend donc,ici, la valeur 70. La machine procède ainsi à chaque tour de boucle tant que x n'atteint pas ou ne dépasse pas la valeur de fin. La dernière valeur de x sera 250 car au prochain tour x vaudra 280, qui est au dessus de 250 donc la boucle s'arrête.



  • wiki/infofem/lda/cours2021/lda2021-notion-repetition.txt
  • Dernière modification : 2024/02/06 18:31
  • de yann.secq