Fonctions
Objectifs du Chapitre
Comprendre l’intérêt de structurer un programme en fonctions.
Savoir définir, appeler et utiliser une fonction.
Comprendre la différence entre paramètre, argument et valeur de retour.
Être capable de construire des algorithmes clairs et modulaires.
Quand un même traitement revient à plusieurs endroits, le recopier est la garantie qu'un jour on corrigera l'un et pas les autres. Une fonction lui donne un nom, des entrées et une sortie : on l'écrit une fois, on l'appelle partout. C'est aussi ce qui permet de lire un algorithme long sans le lire en entier.
Qu’est-ce qu’une fonction ?
Une fonction est un bloc d’instructions regroupées sous un nom, qui exécute une tâche précise. Une fois définie, elle peut être appelée plusieurs fois depuis différents endroits de l’algorithme.
On peut comparer une fonction à une machine-outil dans un atelier :
on lui donne un nom (ex. « machine à calculer »), on lui fournit éventuellement une ou plusieurs données d’entrée, et elle renvoie un résultat.
Exemple
Cet algorithme définit une fonction Bonjour qui affiche un message. Elle est ensuite appelée deux fois depuis le programme principal. Plutôt que de recopier les mêmes instructions, on les regroupe dans une seule fonction réutilisable.
Déclaration et appel de fonction
La structure générale d’une fonction est la suivante :
et pour l’appeler :
nom()
L’intérêt est de factoriser le code : si une action se répète plusieurs fois, il suffit de l’écrire une seule fois dans une fonction, puis de l’appeler à chaque besoin.
Exemple
Résultat : Bienvenue
Les fonctions permettent donc de rendre un algorithme plus lisible, plus organisé, et plus facile à maintenir.
Paramètres et arguments
Un paramètre est une donnée transmise à une fonction pour qu’elle puisse travailler avec. Lorsqu’on appelle la fonction, la valeur fournie est appelée argument.
Autrement dit, les paramètres servent de ponts entre le programme principal et la fonction.
Exemple
Ici, la fonction Bonjour reçoit un paramètre nom. Quand on appelle Bonjour("Alice"), la variable nom prend temporairement la valeur "Alice". La fonction devient donc un modèle générique que l’on peut réutiliser avec différentes valeurs.
Une fonction peut avoir plusieurs paramètres séparés par des virgules :
L’appel Somme(4, 7) affichera alors Résultat : 11.
Valeur de retour
Une fonction peut renvoyer une valeur au programme principal. Cette valeur peut ensuite être utilisée dans un calcul ou stockée dans une variable.
Pour renvoyer une valeur, on utilise l’instruction Retourner.
Exemple
La fonction Carré calcule le carré du nombre reçu et renvoie le résultat au programme principal.
L’intérêt est que la fonction ne se contente plus d’agir, elle produit un résultat réutilisable.
C’est un principe fondamental : un bon programme est composé de fonctions qui effectuent des tâches précises et renvoient des résultats clairs.
À toi de jouer
Écris chaque fonction, puis son appel : une fonction qu'on n'appelle jamais ne sert à rien.
Exercice 1 : écrire une fonction Double(x) qui renvoie le double d'un nombre, et l'appeler pour x = 8.
Afficher la solution
Retourner renvoie la valeur et sort immédiatement de la fonction. Le programme principal récupère cette valeur dans resultat, comme si Double(8) était le nombre 16.
Écrire Écrire 2 * x à l'intérieur de la fonction au lieu de Retourner 2 * x. La fonction affiche alors le résultat mais ne le rend pas : impossible de le réutiliser dans un calcul. Afficher et retourner ne sont pas la même chose.
Exercice 2 : écrire une fonction Moyenne(a, b) qui renvoie la moyenne de deux nombres, et la tester avec 10 et 16.
Afficher la solution
Les parenthèses autour de a + b sont indispensables : sans elles, a + b / 2 calculerait a + (b / 2), soit 18 au lieu de 13.
On peut appeler la fonction directement dans le Écrire : la valeur retournée prend la place de l'appel.
Exercice 3 : écrire une fonction EstPair(n) qui renvoie Vrai si le nombre est pair, Faux sinon.
Afficher la solution
Une fonction peut renvoyer un booléen, c'est-à-dire Vrai ou Faux. Elle s'utilise alors directement comme condition : Si EstPair(n) Alors se lit « si n est pair ».
Version plus courte, puisque la comparaison produit déjà un booléen :
- Une fonction est un bloc d'instructions réutilisable, désigné par un nom.
- Les paramètres lui transmettent des données ; la valeur de
Retourneren ressort. - Afficher n'est pas retourner :
Écriremontre à l'utilisateur,Retournerrend une valeur au programme. - Une fonction qui renvoie un booléen s'emploie directement comme condition.
Et ensuite ? Le chapitre Modularité montre comment répartir un programme entier entre plusieurs fonctions, et ce qu'on y gagne.