2.4 FONCTIONS

 

 

INTRODUCTION

 

Lors de la réalisation d’une grande image, on veut utiliser à de nombreuses reprises plusieurs figures telles que des triangles ou des carrés. Le souci est que la tortue ne sait pas dessiner des triangles ou des carrés, elle ne sait que tracer des lignes. De ce fait, il est nécessaire d’expliquer à la tortue comment dessiner telle ou telle figure à l’aide de plusieurs instructions, ce qui donne vite lieu à du code répétitif si l’on veut dessiner plusieurs figures de même type. N’y aurait-il pas une solution plus facile pour réaliser ces figures?

Bien sûr que oui! On peut enseigner à la tortue de nouvelles commandes, comme le dessin de carrés ou de triangles. Il suffit ensuite de lui demander de dessiner un carré ou un triangle au lieu de détailler chaque instruction individuelle. Pour ce faire, il faut choisir un nom d’identifiant valide, par exemple square, et écrire def square(): (remarquer le double point qui fait partie de la syntaxe). Ensuite, il suffit d’écrire toutes les instructions individuelles qui constitueront la nouvelle commande. Pour permettre à l’interpréteur de distinguer les commandes qui font partie de la fonction nouvellement définie et ne pas les confondre avec les instructions « indépendantes », il faut indenter toutes les instructions prenant part au bloc définissant la nouvelle fonction.

CONCEPTS DE PROGRAMMATION: Programmation modulaire, définition de fonction, appel de fonctions

 

 

DÉFINIR SES PROPRES COMMANDES

 

Dans ce programme, on utilise le mot-clé def pour définir une nouvelle fonction square(). Die Turtle weiss danach, wie sie ein Quadrat zeichnen kann, sie hat aber noch keines gezeichnet.

Celle-ci va permettre à la tortue de savoir comment dessiner des carrés mais ne va pas encore lui dire d’en dessiner un. Avec l’instruction square(), la tortue va dessiner un carré carré de côté 100 à sa position actuelle. Dans notre exemple, on dessine un carré rouge, un bleu et un vert.

 


from gturtle import *

def square():
    repeat 4: 
        forward(100) 
        left(90) 

makeTurtle()
setPenColor("red")
square()
right(120)
setPenColor("blue")
square()
right(120)
setPenColor("green")
square()
Sélectionner le code (Ctrl+C pour copier, Ctrl+V pour coller)

 

 

MEMENTO

 

Pour définir une nouvelle commande, on utilise la syntaxe def identifiant(): Il est conseillé d’utiliser un nom pertinent qui reflète bien ce que fait la commande. Toutes les lignes d’instructions prenant part au bloc définissant la nouvelle commande doivent être indentées de manière cohérente.

def identifier():
    instructions

Il ne faut pas oublier de placer des parenthèses et le double-point après le nom de la commande ! Dans la terminologie Python, on appelle les commandes définies par le programmeur des fonctions. Lorsqu’on utilise la fonction square(), on dit en termes techniques qu’elle est « appelée ».

Il faut prendre l’habitude de définir les nouvelles fonctions dans l’en-tête du programme puisqu’elles doivent être définies avant d’être appelées.

 

 

EXERCICES

 

1.

Définir une commande hexagon() permettant de dessiner un hexagone. Utiliser ensuite cette nouvelle fonction pour dessiner la figure ci-contre. 

 

 

2a.

Définir une fonction permettant de dessiner un carré posé sur l’un de ses sommets. Utiliser ensuite cette fonction pour dessiner la figure ci-contre. 

 

 

2b*.

Pour dessiner des formes pleines, on peut utiliser les fonctions startPath() et fillPath().

 

 

3a.

Dans les exercices 3a à 3e, on va découvrir comment résoudre un problème complexe par étapes en utilisant des fonctions. Il s’agit d’un concept essentiel en programmation nommé programmation procédurale.

Définir une fonction arc() qui demande à la tortue de dessiner un arc de cercle d’angle au centre -90° (orienté vers la droite). Pour accélérer le dessin, on peut régler la vitesse de la tortue au maximum avec speed(-1).

 

 

3b.

Ajouter au programme la fonction petal() chargée de dessiner deux arcs de cercles consécutifs de sorte que la tortue se retrouve dans sa position et son orientation de départ à la fin du dessin.

 

 

3c.

Modifier le programme précédent pour de sorte que la fonction petal() dessine une forme remplie de rouge sans bord visible.

 

 

3d.

Étendre le programme avec la fonction flower() permettant de dessiner une fleu à cinq pétales. Pour accélérer encore davantage le dessin, on peut utiliser la fonction hideTurtle() pour rendre la tortue invisible.

 

 

3e*.

Ajouter une tige à la fleur en définissant une nouvelle fonction nommée de façon appropriée.