LP2 : fonctions

publicité
LP2 : fonctions
1/3 Principes de base
Pour avoir du style, il faut éviter les redites…
1. Isoler une instruction
Quand une même instruction revient plusieurs fois dans un programme, il est plus élégant et plus
efficace de l’isoler au sein d’une entité séparée, appelée fonction.
Une fonction est un « morceau de code » défini par :



un nom : ma_fonction
des arguments qui transmettront les valeurs communiquées par le programme au moment
de son appel : ma_fonction(arg1 ; arg2 ; …)
éventuellement par une valeur de retour, qui sera renvoyée au programme à la fin de
l’exécution de la fonction.
Exemple 1 : dans le script suivant :
...on évite de répéter trois fois le même code (un pour chaque vol) en créant une fonction appelée
annoncerunVol qui peut être appelée autant que l’on veut. Cette fonction possède deux arguments,
elle ne renvoie aucune valeur, mais elle affiche du texte.
Exemple 2 : On peut très bien construire des fonctions sans argument. Par exemple :
La fonction joli_dessin se contente de faire l’affichage demandé.
Remarque : la fonction est définie à l’aide du mot-clef def, du symbole « : » et de l’indentation.
A la dernière ligne, l’instruction joli_dessin() n’est PAS dans le corps de la fonction
(on le voit à l’indentation).
C’est une instruction séparée qui appelle justement cette fonction (on le voit aux
parenthèses).
Dans un script contenant des fonctions, celles-ci sont définies au début. Ensuite se trouve le corps principal du
programme, dans lequel on trouve éventuellement des appels aux fonctions définies plus haut.
Dans l’exemple précédent, le corps principal du programme ne contient qu’une seule ligne ! (la dernière)
Exemple 3 :
Voici un exemple de fonction qui reçoit des arguments et qui renvoie aussi une valeur en sortie.
Remarques :



Il faut d’abord se rappeler comment fonctionnent les chaînes de caractères (cf le cours sur
les types LP1_3).
On renvoie une valeur grâce au mot-clef return
La valeur renvoyée est créée au moment de l’appel de la fonction, mais elle est « invisible » !
(la fonction ne l’affiche pas, elle a juste stocké quelque part le résultat dans une case
mémoire). Pour l’afficher, il faut faire un print, comme on le voit dans les deux dernières
lignes. Ainsi, compte_les_a(« bonjour Ingrid ») n’est pas une instruction mais une expression (de
quel type à votre avis ?), qu’on pourrait stocker dans une variable par exemple, ou utiliser
dans un test comme ci-dessous :
Attention ! L’ordre des arguments figurant dans l’en-tête devra être respecté lors de l’appel de la
fonction
Exemple : on veut construire l’en-tête d’une fonction qui calculerait la vitesse moyenne d’une
voiture, connaissant son temps de parcours et la distance parcourue.
Exercice 1 :
Une fois que l’en-tête de la fonction est bien défini, on passe à l’écriture de la fonction proprement dite.
Exemple : division décimale
On veut écrire une fonction qui effectue la division décimale de deux nombres entiers.
Exercice 2
2. Modules de fonctions
Pour éviter les confusions entre définitions de fonctions et programme principal, il est souvent
d’usage de placer les fonctions dans un fichier Python séparé, appelé module de fonctions.
Le module turtle
Explorons un module Python permettant de réaliser des « graphiques tortue », c’est-à-dire des
dessins géométriques correspondant à la trace laissée derrière elle par une petite tortue virtuelle,
dont on peut contrôler les déplacements sur l’écran à l’aide d’instructions simples.
Essayez par exemple :
C’est plus amusant en utilisant des boucles :
Les principales fonctions du module « turtle » sont :
Activité préliminaire
Créez un fichier que vous nommerez dessins_tortue.py, et entrez-y les lignes de code suivantes :
Remarque : la première ligne dans le corps de la fonction est une chaîne de caractère, qui est traitée
par Python comme un commentaire ! Mais un commentaire spécial, qui sera mémorisé dans une
documentation interne automatique. On pourra ensuite accéder à ce commentaire en tapant
l’instruction carre._doc_
Un bon programmeur devrait toujours documenter ainsi les fonctions qu’il crée ! Pour les autres,
mais aussi pour lui-même (quand il retrouvera sa fonction quelques jours ou quelques semaines plus tard, et qu’il se demandera
« mais que diable ai-je bien voulu faire à l’époque avec cette fonction ?? »)
Le fichier dessins_tortue.py que vous avez créé est désormais un véritable module de fonctions, au
même titre que les célèbres math.py ou turtle.py ! Vous pouvez l’utiliser dans n’importe quel autre
script, en l’important grâce à la commande :
Voici un exemple : entrez-le dans un nouveau script que vous nommerez par exemple
exercices_tortue.py, et testez-le :
Exercice 3
Compléter le module dessins_tortue.py :

Commencer par ajouter un paramètre angle à la fonction carre(), de manière à ce que les
carrés puissent être tracés dans différentes orientations

Définir une fonction triangle(taille, couleur, angle) qui dessine un triangle équilatéral d’une
taille, d’une couleur et d’une orientation bien déterminées.

Testez votre module à l’aide d’un programme qui fera appel à ces fonctions à plusieurs
reprises, avec des paramètres différents
Exercice 4
Exercice 5
Téléchargement