funktionen
Deutsh    Français   

4. FONCTIONS

 

 

 

TU APPRENDS ICI...

 

comment structurer tes programmes avec des blocs de programmes auxquels tu donneras des noms, appelés fonctions en Python. L'utilisation de fonctions est très importante car elle permet d'éviter d'écrire le même code plusieurs fois dans le programme (duplication du code), et de décomposer les problèmes en sous-problèmes plus petits donc plus faciles à résoudre.

 

 

EXEMPLE

 

Dans le chapitre précédent, tu as appris comment dessiner un carré à l’aide du serpent. Il s'agit d'une opération typique et indépendante : on voudrait alors regrouper le code de cette opération dans une fonction appelée square (carré en anglais). Pour ce faire, tu définis cette fonction avec le mot-clé def comme suit:

def square():
    repeat 4:
        forward()
        right(90)

L'ordinateur ne fera encore rien en lisant ces lignes, mais se souviendra seulement de ce qu'il est censé faire avec la fonction square.

La définition de la fonction consiste donc en une ligne d'en-tête avec def et le nom de la fonction, suivie d'une parenthèse de paramètre et d'un double-points.

Programme:

from oxosnake import *

def square():
    repeat 4:
        forward(3)
        right(90)

makeSnake()
setSpeed(90)
setPos(0, 7)
square()
setPos(4, 7)
square()
 
► Copier dans le presse-papier

Les lignes de commandes de la fonction forment un bloc du programme et doivent être indentées.

Une fois que tu as défini la fonction, tu peux l'appeler pour l’utiliser dans ton programme, simplement en mentionnant son nom. Tu peux appeler une fonction plusieurs fois.

Ton programme dessine ici deux carrés à des positions différentes.

 

Il serait pratique que tu puisses également indiquer où se trouve le coin inférieur gauche de ces carrés lorsque tu appelles la fonction square(), afin de ne pas avoir à appeler setPos() deux fois dans le programme principal. Ce n'est pas un problème car tu peux insérer les coordonnées x et y comme paramètres dans la définition de la fonction: square(x, y). x et y sont alors les noms de paramètres

Ainsi, lorsque tu appelles square(0, 7), les valeurs de x et de y sont transmises et utilisées par la fonction.

Programme:

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)
► Copier dans le presse-papier


Dans l'exemple suivant, tu veux dessiner une croix Suisse. Tu divises pour cela le programme en sous-tâches et, pour commencer, tu définis une fonction shape(), qui dessinera une figure partielle. Tu appelles cette fonction 4 fois afin de dessiner la figure en entier.  

Le serpent doit ici dessiner une trace blanche sur fond rouge.

 


La commande penDown() fait en sorte que le serpent laisse une trace. La couleur de la piste est définie avec setPenColor(WHITE) et le fond est défini en rouge avec setBgColor(RED).

Programme:

from oxosnake import *

def shape():
    forward(2)
    right(90)
    forward()
    right(90)
    forward(2)       

makeSnake(speed = 70, pos = (3, 3))
setPenColor(WHITE)
penDown()
  
repeat 4:
   shape()
   left(90)
hide()
setBgColor(RED)   
► Copier dans le presse-papier

Avec la commande hide(), le serpent sera dissimulé.

 

 

N’OUBLIE PAS...

 

Pour résoudre un problème plus complexe, il faut le diviser en sous-problèmes et résoudre un sous-problème à la fois. C'est ce qu'on appelle la modularisation ou la programmation structurée. Les fonctions sont des outils fondamentaux pour la programmation structurée, car elles rendent possible l’appel d’un sous-programme plusieurs fois.

Dans la définition de la fonction, tu peux également insérer des paramètres et utiliser les noms des paramètres dans le corps de la fonction. Lorsque la fonction est appelée, les valeurs entre parenthèses sont transmises à la fonction et utilisées à la place des noms de paramètres.
Avec la commande setPenColor(color), tu changes la couleur du stylo, setBgColor(color) change le fond. Le plus simple est d'utiliser les couleurs prédéfinies ROUGE, VERT, BLEU, BLANC, JAUNE, CYAN, MAGENTA et NOIR.

 

 

À TOI DE JOUER

 

 

1a.

La commande setPenColor(YELLOW) permet de définir la couleur du stylo en jaune. Utilise la fonction square(x, y) pour dessiner la figure ci-contre.

 


1b.

Dessine la figure ci-contre, en remplaçant dans un premier temps la couleur de fond avec la commande setBgColor(MAGENTA), puis en dessinant des carrés avec le stylo jaune.

 


1c.

Les couleurs ROUGE, VERT, BLEU, BLANC, JAUNE, CYAN et MAGENTA sont prédéfinies. Cependant, tu peux sélectionner n'importe quelle couleur dans le domaine RGB avec setPenColor(r, g, b), où r, g, b sont les composantes de couleur rouge, verte et bleue (un nombre compris entre 0 et 255). Étant donné que les diodes électroluminescentes brillent très fort, les chiffres compris entre 0 et 50 sont souvent plus agréables. En utilisant la fonction square(x,y), dessinez des images avec des couleurs que vous avez vous-même inventées.

 

2.

La fonction rectangle() doit dessiner un rectangle de hauteur 4 et de largeur 1. À la fin, le serpent doit être de retour au point de départ et regarder vers le haut. Définis cette fonction et utilise-la pour dessiner la figure ci-contre.



 


 



 

 

4-1
Informations Complémentaires:
Les couleurs RED, GREEN, BLUE, WHITE, YELLOW, CYAN, MAGENTA et BLACK sont prédéfinis et utilisables directement :

Exemple.: setPenColor(CYAN)

Mais vous pouvez choisir n'importe quelle couleur :
setPenColor(r, g, b)
r, g, b sont les composants de couleur rouge, vert et bleu (un nombre compris entre 0 et 255).

Exemple: setPenColor(50, 0, 20)