2.4 LES FONCTIONS


INTRODUCTION


Dans une image plus complexe, il peut être nécessaire de tracer plusieurs triangles ou carrés.
Mais la tortue ne sait pas ce qu'est un triangle ou un carré, il faut donc à chaque fois lui ré-écrire le programme pour lui expliquer comment faire. N'y a-t-il pas plus facile?

Si bien sûr : vous pouvez apprendre à la tortue de nouvelles instructions signifiant par exemple "dessine un carré de 40 pixels de côté", on appelle cela une fonction.
Pour définir une nouvelle fonction, vous choisissez son nom de la manière suivante :  def carre(): par exemple pour un dessiner un carré, et indiquez à la suite les instructions appartenant à la nouvelle fonction.
Pour que l'ordinateur sache quelles instructions font partie de la nouvelle fonction, ces instructions doivent indentées (écrites en retrait).


DEFINIR SES PROPRES FONCTIONS


Dans le programme ci-dessous, nous définissons la fonction def carre() avec le code de programme correspondant.
La tortue sait maintenant ce qu'est un carré, mais elle n'en a pas encore dessiné.

On appelle ensuite la fonction carre() comme une autre instruction : la tortue dessine alors un carré à l'endroit ou elle se trouve, carré dont les côtés mesurent 100 pixels.
Dans notre exemple, elle dessine trois carrés : un rouge, un bleu et un vert.




A MEMORISER


Vous définissez une nouvelle fonction avec def nom_de_la_fonction(): Choisissez un nom de fonction qui rappelle son rôle. Toutes les instructions qui font partie de la nouvelle commande doivent être en retrait.
  def nom_de_la_fonction():
Instructions
de la fonction

Ne pas oublier les parenthèses et le signe ":" après le nom ! En langage Python, ces nouvelles instructions définies dans un programme sont nommées des fonctions.
Au moment où, dans le programme, vous utilisez la fonction, on dit que vous appelez la fonction : vous faites un appel de fonction.

Nous sommes habitués à placer les définitions de fonctions dans l'en-tête du programme, juste après l'import car elles doivent être définies avant d'être appellées.


EXERCICES


1

Définir la fonction hexagone() permettant de dessiner ... un hexagone de côté 50 pixels.
A chaque sommet de l'hexagone, la tortue doit pivoter d'un angle égal à 60°.
Utilisez cette commande pour dessiner la figure ci-contre, composée de 10 hexagones.
Entre deux hexagones, la tortue doit pivoter d'un angle égal à 36°.



2a.

Définir une fonction dessinant un carré et appelez-la pour dessiner les quatre carrés.

LEs côtés des carrés mesurent 50 pixels et leur diagonale

Attention aux couleurs.



2b *.

Vous pouvez dessiner des carrés remplis de leur utilisation les commandes StartPath () et FillPath ().



3a.

Vous allez dans cet exercice résoudre un problème étape par étape à l'aide de fonctions.
Cette manière de programmer est nommée programmation procédurale.

Définissez une fonction arc() traçant un arc de cercle de rayon 100 pixels et d'ouverture 90°.
Vous pouvez ralentir la tortue à l'aide de l'instruction speed(-1).



3b.

Définissez maintenant la fonction pétale() afin d'obtenir le contour du pétale.

La fonction petale() appelera la fonctin arc().

La tortue doit être à la fin orientée dans la direction de départ.



3c.

Modifier la fonction petale() afin de le colorier en rouge.  (sans frontière visible).



3d.

Définissez la fonction fleur()  qui appelera la fonction petale().

Entre chaque pétale, la tortue doit pivoter de 72° (=360°/5)

Rappel : la fleur sera dessinée plus rapidement si vous cachez la tortue en début de programme par hideTurtle().



3e *.

Compléter la fleur avec une tige en arc de cercle.
Le programme principal ne devra contenir qu'une seule instruction : fleur()





Traduit assez librement (et légèrement adapté) de PROGRAMMIERKONCEPT de J. Arnold, T. Kohn, et Aegidius Plüss