Aller au contenu principal
algorithmiqueFonctions

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.

Où on va

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.

Jusqu’à présent, nos algorithmes étaient écrits d’un seul bloc : toutes les instructions se suivaient du début à la fin. Cette approche fonctionne pour les programmes simples, mais elle devient vite difficile à relire, à corriger ou à réutiliser lorsque le code s’allonge. C’est là qu’interviennent les **fonctions**, qui permettent de découper un programme en plusieurs parties autonomes et réutilisables.

Qu’est-ce qu’une fonction ?

Définition

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

Algorithme
Fonction Bonjour()
Écrire "Bonjour !"
FinFonction
Début
Bonjour()
Bonjour()
Fin

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 :

Algorithme
Fonction nom()
instructions
FinFonction

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

Algorithme
Fonction Ligne()
Écrire "-"
FinFonction
Début
Ligne()
Écrire "Bienvenue"
Ligne()
Fin

Résultat : Bienvenue

Les fonctions permettent donc de rendre un algorithme plus lisible, plus organisé, et plus facile à maintenir.

Paramètres et arguments

Définition

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

Algorithme
Fonction Bonjour(nom)
Écrire "Bonjour ", nom, " !"
FinFonction
Début
Bonjour("Alice")
Bonjour("Bob")
Fin

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.

Astuce

Une fonction peut avoir plusieurs paramètres séparés par des virgules :

Algorithme
Fonction Somme(a, b)
Écrire "Résultat : ", a + b
FinFonction

L’appel Somme(4, 7) affichera alors Résultat : 11.

Valeur de retour

Définition

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

Algorithme
Fonction Carré(x)
Retourner x * x
FinFonction
Début
a 5
résultat Carré(a)
Écrire "Carré de ", a, " = ", résultat
Fin

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
Algorithme
Fonction Double(x)
Retourner 2 * x
FinFonction
Début
resultat Double(8)
Écrire "Le double de 8 est ", resultat
Fin

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.

Erreur fréquente

É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
Algorithme
Fonction Moyenne(a, b)
Retourner (a + b) / 2
FinFonction
Début
Écrire "Moyenne de 10 et 16 : ", Moyenne(10, 16)
Fin

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
Algorithme
Fonction EstPair(n)
Si n MOD 2 = 0 Alors
Retourner Vrai
Sinon
Retourner Faux
FinSi
FinFonction
Début
Lire n
Si EstPair(n) Alors
Écrire n, " est pair"
Sinon
Écrire n, " est impair"
FinSi
Fin

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 :

Algorithme
Fonction EstPair(n)
Retourner n MOD 2 = 0
FinFonction
À retenir
  • 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 Retourner en ressort.
  • Afficher n'est pas retourner : Écrire montre à l'utilisateur, Retourner rend 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.