- Fonction (informatique)
-
Fonction informatique
Pour les articles homonymes, voir Fonction.En informatique, une fonction est une portion de code représentant un sous programme, qui effectue une tâche ou un calcul relativement indépendant du reste du programme. En programmation impérative, une fonction est une séquence d'instructions réalisant une certaine tâche En programmation fonctionnelle, la fonction est l'objet de base, qui permet de découper le problème global en plus petits calculs. On utilise parfois le synonyme routine, notamment à propos des fonctions bas-niveau des systèmes d'exploitation.
Sommaire
Anatomie d'une fonction
Éléments constitutifs d'une fonction :
- Nom de la fonction
- Noms et/ou types des paramètres
- Type de la valeur de retour
- Délimitation du bloc de code de la fonction
- Définition de la valeur de retour
Selon le langage considéré, tous ces éléments n'apparaissent pas forcément.
int valeur_max(int a, int b) { if (a > b) return a; else return b; } ... printf("%d",valeur_max(123,456));
Cette fonction écrite en C a pour nom valeur_max
, pour paramètresa
etb
qui sont de typeint
et retourne unint
. Les accolades{
et}
délimitent le bloc d'instructions de la fonction. On remarque que le nom de la fonction décrit son résultat : elle retourne la valeur maximale entrea
etb
. Ce n'est pas une obligation du langage, mais constitue une bonne pratique de programmation : la fonction pourrait s'appeler tout à fait autrement, son comportement est déterminé par les instructions à l'intérieur des accolades. Cependant, dans certains langages, le nom de la fonction a un sens. Par exemple, en C++, les constructeurs doivent porter comme nom le nom de la classe.Plus bas, on voit comment la fonction peut être utilisée (on parle « d'appel de fonction ») :
valeur_max(123, 456)
. Le résultat de cet appel est 456.Caractéristiques des fonctions
- Une fonction qui n'a pas d'effets de bord, et qui renvoie systématiquement la même valeur de retour pour les mêmes paramètres, est une fonction pure. C'est une fonction au sens mathématique du terme.
- Une fonction qui s'appelle elle-même est une fonction récursive.
- Une fonction qui ne renvoie aucun résultat est une procédure. Certains langages de programmation font la différence entre fonction et procédure (par exemple en Pascal), et d'autres pas (par exemple C).
- La programmation orientée objet permet d'attacher des fonctions à des classes ; ces fonctions sont alors appelées fonctions membres ou méthodes.
- Une fonction qui n'a pas de nom est une fonction anonyme. Tous les langages ne permettent pas d'écrire des fonctions anonymes. Exemple de fonction anonyme en haskell qui renvoie le nombre passé en argument multiplié par 2 :
(\x -> 2*x)
.
- Une fonction définie à l'intérieur d'une autre fonction est une fonction imbriquée. Exemple en python :
def pourcentages(a,b,c): def pc(x): return (x*100.0)/(a+b+c) return pc(a),pc(b),pc(c)
Comparaison avec les fonctions mathématiques
Une fonction en informatique se distingue principalement de la fonction mathématique du fait de l'interaction entre la fonction et son environnement.
En mathématiques, le résultat d'une fonction est unique lorsque la valeur de ses arguments sont fixés. En informatique ce n'est pas le cas général : deux appels successifs à une fonction peuvent produire des résultats différents. Le respect de cette propriété est appelée la transparence référentielle.
En outre, en plus de calculer un résultat, la fonction informatique peut, agir sur son environnement (par exemple afficher un message). On appelle cela un effet de bord ou effet secondaire. Une fonction qui n'a pas d'effet de bord est appelée une fonction pure.
Programmation fonctionnelle
Article détaillé : Programmation fonctionnelle.La programmation fonctionnelle est un paradigme de programmation qui considère le calcul en tant qu'évaluation de fonctions mathématiques et rejette le changement d'état et la mutation des données. Elle souligne l'application des fonctions, contrairement au modèle de programmation impérative qui met en avant les changements d'état.
En supprimant la mutation des données, la sémantique des langages fonctionnels tend à se rapprocher du modèle mathématique. Les types sont ainsi des ensembles d'arrivée et de départ. Une fonction est alors une application d'un type vers un autre.
Bibliothèque logicielle
Article détaillé : Bibliothèque logicielle.Une bibliothèque logicielle est une collection de fonctions.
- Portail de l’informatique
Catégories : Programmation informatique | Structure de contrôle
Wikimedia Foundation. 2010.