FONCTIONS 1 Principe général 2 Commande return

publicité
Lycée Brizeux – 2015/2016
F ONCTIONS
Informatique – PCSI B
C HAPITRE 5
F ONCTIONS
1 Principe général
Lorsqu’un bloc d’instructions revient plusieurs fois dans un programme, il peut s’avérer intéressant
de l’« isoler » pour ne pas avoir à le réécrire entièrement chaque fois qu’on le sollicite : c’est l’un des rôles
joués par les fonctions en informatique.
. Une fonction est suite d’instructions dépendant de paramètres.
. Déclarer une fonction en Python : la syntaxe pour déclarer une fonction nommée fonction, et
ayant pour paramètres parametre_1, parametre_2, ... , parametre_n est la suivante :
def fonction(parametre_1,parametre_2, ... ,parametre_n) :
instructions
Attention à la syntaxe : deux points à la fin de la première ligne et alinéa (indentation).
. Exécution d’une fonction en Python : une fois la fonction fonction déclarée, on l’exécute en
évaluant ses paramètres en des valeurs données, par la commande suivante :
fonction(valeur_1,valeur_2, ... ,valeur_n)
Exemples : On souhaite définir une fonction inverse renvoyant, pour un réel x donné, la valeur de
1
.
x
def inverse(x):
print(1/x)
Exécution :
. l’instruction inverse(2) affiche la valeur
1
;
2
. Problème : on ne peut pas utiliser la réponse dans un autre calcul. L’instruction print ne fait
qu’afficher un résultat (type NoneType).
2 Commande return
Pour qu’une fonction effectue, à partir des paramètres donnés, un calcul dont on veut récupérer la
valeur, on utilisera la commande return, qui a pour effets :
1. de « renvoyer » le résultat souhaité ;
2. de mettre fin à l’exécution de la fonctions (quelles que soient les instructions qui suivent).
1
Exemples : pour définir la fonction x 7→ , on écrira :
x
def inverse(x):
return 1/x
1
Lycée Brizeux – 2015/2016
Pour définir la fonction (x, y) 7→
F ONCTIONS
Informatique – PCSI B
x+y
, on écrira :
2
def moyenne(x,y):
return (x+y)/2
Exécution :
. l’instruction inverse(2) + 3 renvoie la valeur 3.5 ;
. l’instruction moyenne(1,2) renvoie la valeur 1.5 ;
. l’instruction moyenne(0,inverse(2)) renvoie la valeur 0.25.
Il est possible de renvoyer plusieurs résultats à la fois.
Exemple :
def sommeprod(x,y):
return(x+y,x*y)
3 Documentation
Pensez à toujours commenter vos programmes, en particulier les fonctions.
On peut également proposer une documentation de la fonction. Pour cela, il suffit d’écrire, dès la deuxième
ligne de la déclaration d’une fonction fonction, des commentaires délimités par des """ pour que
ceux-ci apparaissent lorsqu’on demande l’aide de Python à propos de fonction.
1
x+y
et (x, y) 7→
en proposant une « documentation » comx
2
plète pour chacune d’elles, on peut enrichir les déclarations précédentes comme suit :
Exemples : pour définir les fonctions x 7→
def inverse(x):
"""inverse(x,réel)->réel
Calcule l'inverse du réel x"""
return 1/x
def moyenne(x,y):
"""moyenne(x,y,réels)->réel
Calcule la moyenne arithmétique de x et y"""
return (x+y)/2
4 Variables locales
Si une variable k est utilisée dans les instructions d’une fonction, la fonction va créer une nouvelle
variable k , dite locale.
Les affectations effectuées à l’intérieur de la fonction portent sur la variable locale et n’auront pas d’influence sur le contenu d’une variable k définie à l’extérieur de la fonction.
Les variables d’entrées, ou arguments sont des variables locales dont le contenu initial est fourni lors de
l’appel de la fonction.
Exemple :
def exemple(n) :
for k in range(1,n):
print(k)
2
Lycée Brizeux – 2015/2016
F ONCTIONS
Informatique – PCSI B
n = 5
k = 18
exemple(3)
print(n,k)
La variable k vaut toujours 5 et la variable k vaut toujours 18 après l’exécution de la fonction carres.
5 Interêt des fonctions
L’utilisation de fonctions facilite la conception de programmes et améliore leur lisibilité. Un morceau
de code assez basique qui sera souvent utilisé peut être écrit comme une fonction et utilisé plusieurs fois
sans copier-coller. De plus, l’utilisation de variables locales limite les conflits de noms de variables (deux
variables utilisées dans des contextes différents portant le même nom).
Mais surtout, l’utilisation de fonctions améliore la lisibilité du code. Un long programme d’une centaine de lignes d’un bloc est absolument illisible. Le même programme structuré en une vingtaine de
fonctions (au nom explicite, et au comportement décrit par un commentaire) de quelques lignes est
beaucoup plus facile à appréhender. De plus, chaque fonction peut être utilisée et testée indépendamment, ce qui facilite le debuggage. Les fonctions sont à utiliser sans modération.
6 Exercices
1. Écrire une fonction estpair, prenant en entrée un entier n, qui retourne True si n est pair et
False sinon.
2. Écrire une fonction factorielle, prenant en entrée un entier n et renvoyant n!.
3. Écrire une fonction carres, prenant en entrée deux entiers n et m et renvoyant la liste des carrés
des entiers compris entre n et m.
1
. Celle-ci est
4. On considère la suite (u n ) définie, pour tout entier naturel n, par u n = 3
n +n +2
décroissante et converge vers 0.
Écrire une fonction seuil prenant en entrée un flottant s et renvoyant le rang n à partir duquel
u n 6 s.
3
Téléchargement