Introduction générale à la programmation/Fonctions
Introduction
modifierUne fonction désigne en programmation un « sous-programme » permettant d'effectuer des opérations répétitives. Au lieu d'écrire le code complet autant de fois que nécessaire, on crée une fonction que l’on appellera pour l'exécuter, ce qui peut aussi alléger le code, le rendre plus lisible.
Un autre avantage de cette manière de travailler est qu'on peut disposer d'éléments de code « préfabriqués ». De plus, une fonction peut être paramétrée de façon à ce que son travail s'adapte à des besoins spécifiques. On pourra par exemple, en une même fonction, chiffrer ou déchiffrer un message selon les souhaits de l'utilisateur.
L'utilisation des fonctions permet de « factoriser » le code, c'est-à-dire d’offrir des procédures générales, partagées par le programme et placées à un endroit précis où l’on pourra les retrouver facilement pour les modifier ou les adapter.
Définition
modifierOn appelle fonction une partie de code recevant une ou plusieurs informations à partir desquelles elle retourne une ou plusieurs informations.
Les informations fournies à la fonction sont appelées arguments ou paramètres de la fonction.
Les informations renvoyées par la fonction sont appelées résultat.
Assez souvent, une fonction ne renvoie qu'une seule information. Par exemple, on donne différents arguments (des nombres) à une fonction qui effectue un calcul (elle calcule la moyenne) et nous redonne un résultat unique (la valeur de cette moyenne).
Cependant, une fonction pourrait tout aussi bien ne renvoyer aucun résultat (par exemple elle ne fait qu'afficher un texte, qui est un argument de la fonction), ou renvoyer plusieurs résultats (par exemple, les 2 valeurs extrêmes : la plus haute et la plus basse, ainsi que la moyenne). Il n'y a pas de réelle limitation.
Souvent, le terme de 'fonction' est confondu avec celui de 'procédure'. Par convention, pour les programmeurs rigoureux, on appelle une fonction qui ne renvoie aucun résultat une procédure, c'est-à-dire une suite d'instructions à exécuter par le programme. Mais le plus simple est de considérer que les fonctions et les procédures sont deux synonymes d'une même réalité, c'est-à-dire un morceau de code préfabriqué que l’on peut réutiliser sans le réécrire à chaque fois.
Pour illustrer cet exemple, une fonction très simple serait la suivante :
fonction exemple1(entier a, entier b)
retourner (a + b)
fin de fonction
Cette fonction prend deux arguments (deux entiers a et b dans cet exemple) et retourne un entier égal à a + b.
Comme expliqué ci-dessus, s'il n'y a pas de différence fondamentale entre les « fonctions » (qui renvoient une information) et les « procédures » (qui n'en renvoient pas), et si la plupart des langages de programmation récents ne font pas de différence, certains langages 'stricts' traitent les deux objets différemment.
On prend pour exemple le code qui suit :
procédure AfficherMessageAttente()
écrire "patientez svp…"
fin de procédure
Cette procédure ne prend aucun argument en entrée et ne retourne aucun résultat, elle ne fait qu'afficher un message.
On peut développer un peu l'exemple en ajoutant un argument :
procédure AfficherMessage(chaîne message)
écrire message
fin de procédure
Cette fois, le message est passé en paramètre de la procédure, elle ne retourne toujours pas de résultat mais affiche le message que nous lui passons. Elle devient donc ré-utilisable avec différents messages.