Dans le chapitre précédent sur la programmation modulaire, nous avons vu l'exemple de code suivant
from oxosnake import *
def square():
repeat 4:
forward(3)
right(90)
makeSnake()
setSpeed(90)
setPos(0, 7)
square()
setPos(4, 7)
square()
Vous pouvez remarquer qu'avant de dessiner un carré à un autre endroit, il faut explicitement repositionner le serpent avec la commande setPos(x, y)
. Cette commande n'est pas la première que nous rencontrons pour laquelle on peut spécifier des valeurs entre parenthèses lors de son appel. Ce genre de valeurs qui influencent le comportement des commandes s'appellent des paramètres de la commande.
Il serait pratique d'étendre un peu notre commande square
pour qu'elle puisse elle aussi accepter de tels paramètres. Cela nous permettrait d'indiquer directement où l'on veut placer le carré (par exemple son coin supérieur gauche) au lieu d'avoir à appeler chaque fois setPos(x, y)
.
C'est en fait très simple à faire. Il suffit de définir la commande square
en spécifiant le nom des paramètres désirés entre parenthèses, séparés par des virgules.
def square(x, y):
# code pour dessiner le carré ici
Une fois que la commande a été définie avec des paramètres, il est ensuite possible d'utiliser ces derniers dans le corps de la commande comme s'il s'agissait de nombres :
def square(x, y):
setPos(x, y)
repeat 4:
forward(3)
right(90)
On peut donc en profiter pour utiliser la commande setPos(x, y)
une seule fois dans la fonction au lieu d'avoir à la répéter à chaque fois avant de dessiner un nouveau carré. On suit ainsi un principe important de la programmation : le principe DRY (Don't Repeat Yourself).
On peut ensuite appeler cette commande en lui passant des paramètres, ce qui permet de la rendre beaucoup plus puissante et réutilisable :
from oxosnake import *
def square(x, y):
setPos(x, y)
repeat 4:
forward(3)
right(90)
makeSnake()
setSpeed(90)
square(0, 7)
square(4, 7)
Lors de l'appel de la commande avec square(0, 7)
, les valeurs x
, y
que Python rencontre à l'intérieur de la commande square
sont remplacées par les valeurs concrètes 0
et 7
fournies lorsque la commande a été appelée.
Refaites les exercices du chapitre précédent en utilisant la fonction square(x, y)
au lieu de développer plusieurs fonctions square
pour chaque cas particulier.
Définissez une fonction square(x, y, size)
dont le troisième paramètre size
permet de spécifier la longueur des côtés du carré à dessiner.
Utilisez ensuite cette nouvelle fonction pour dessiner le motif ci-contre.
Utilisez la fonction square(x, y, size)
de l'exercice précédent pour dessiner le motif représenté ci-contre.