Les fonctions permettent de décomposer un programme complexe en une série de sous-programmes plus simples. De plus, les fonctions sont réutilisables : si nous disposons d'une fonction capable de calculer une racine carrée, par exemple, nous pouvons l'utiliser un peu partout dans notre programme sans avoir à la réécrire à chaque fois.
La notion de fonction en informatique est comparable à la notion de fonction en mathématiques. Si nous avons $f(x) = 3x+2$, pour une valeur donnée de x, nous aurons une valeur de $f(x)$.
Exemple : Si $x=4$, $f(x)=14$ ($3\times 4+2=14$).
Voici comment, avec Python, répondre à ce problème. Exécutez et analysez la cellule suivante.
def f(x):
y=3*x+2
return y
print(f(4))
Arrêtons-nous un moment sur ce code :
On reconnaît le mot clé def
dont on vient de parler. On le fait suivre du nom de la fonction - ici f - suivi par les paramètres que cette fonction prend en entrée entre parenthèse - ici un seul paramètre¨ est passé : x
.
Pour savoir ou commence et ou finit la fonction, python utilise la notion de bloc. Un bloc
:
Ainsi notre fonction commence à la ligne y=
et se finit après le return
.
On retrouve encore les fameux blocs qui commencent par :
et qui sont décalés par rapport à la marge que nous avons déjà rencontré dans les tests, les boucles for, while etc...
La ligne y=3*x-2
est assez explicite...
La ligne return y
est importante : c'est elle qui indique ce que doit renvoyer la fonction.
Il est très facile, une fois une fonction définie d'afficher des valeurs. On tape simplement sur la ligne de saisie ce que l'on écrirait sur notre cahier de maths :
f(5)
La fonction f est ici un moyen rapide d'exécuter le calcul y=3*x-2
sans avoir à retaper la formule
Une fonction au sens Python généralise l'exemple que nous avons vu ci-dessus au sens ou une fonction en programmation est un morceau de code auquel on peut faire appel par un nom.
Observez l'exemple ci-dessous et répondez aux questions posées ensuite :
def table(n,limite):
print("Table de multiplication de ",n)
for i in range(1,limite+1):
print(i,"x",n,"=",i*n)
Comment s'appelle la fonction ?
...
Quel(s) paramètres prend-elle ?
...
Que retourne t-elle ?
...
Que fait-elle ?
...
Appelez cette fonction pour sortir la table de 7 pour des facteurs allant de 1 à 9.
En mathématiques, on utilise la fonction *factorielle* d'un nombre pour calculer le produit de tous les entiers non nuls entre 1 et ce nombre. Par exemple :
Factorielle 5 (que l'on note 5!) se calcule par la formule : $5!=1\times 2\times 3\times 4\times 5=120$
Voici un programme qui calcule 10! (factorielle 10). Exécutez et analyser la cellule suivante:
factor=1
for i in range(1,11):
factor = factor * i
print(factor)
Ecrire une fonction *Factorielle* prenant en *paramètre* un entier *n* et *retournant* la factorielle de ce nombre.
Testez cette fonction en calculant *Factorielle(5)*
# Definition de la fonction Factorielle
# Appel de la fonction
Les fonctions jouent un rôle fondamental en informatique. Aucun programme n'est écrit d'un bloc. Imaginez un programme comme OpenOffice qui contient plusieurs centaines de milliers de lignes de codes écrites bout à bout sans structure...
Vous devrez prendre l'habitude de concevoir vos propres fonctions pour répondre à un problème donné.