Privacy Policy Cookie Policy Terms and Conditions

[HOME PAGE] [STORES] [CLASSICISTRANIERI.COM] [FOTO] [YOUTUBE CHANNEL]


Fonction informatique

Fonction informatique

Page d'aide sur l'homonymie Pour les articles homonymes, voir Fonction.

En informatique, une fonction est une routine qui retourne une valeur.

En programmation impérative, une fonction comporte une séquence d'instructions réalisant un calcul ou une tâche. En programmation fonctionnelle, la fonction est l'artifice qui permet de découper le problème global en éléments plus simples. Le terme de routine est aussi utilisé pour les fonctions de bas niveau des systèmes d'exploitation.

La définition d'une fonction comporte des paramètres d'entrée. Au moment de l'exécution et afin d'éviter toute confusion, on les nomme arguments. Travaillant sur ces arguments, elle retourne généralement une valeur de sortie.

Quand une fonction possède des paramètres d'entrée, elle en prend dans les implémentations actuelles (2013) une copie, au lieu de travailler sur les véritables variables[1]. Les fonctions demandent cependant souvent l'adresse mémoire des variables plutôt que leurs valeurs[2]. Ce mécanisme utilise un pointeur (ou une référence, en C++, Perl ou PHP). Une fonction, contrairement à un sous-programme, ne renvoie jamais de valeur par modification de ses arguments[3]. Elle peut renvoyer soit un résultat[4], soit un code d'erreur, ou 0, ou une valeur nulle, si tout s'est bien terminé.

Anatomie d'une fonction

Une fonction possède :

  • Un nom ;
  • Des paramètres comportant chacun un nom et un type (explicite ou implicite) ;
  • Un type de sa valeur de retour ;
  • Un bloc de code qui est celui de la fonction ;
  • L'affectation d'un résultat à une variable qui est sa valeur de retour.

Selon le langage considéré, tous ces éléments n'apparaissent pas forcément.

int max(int a, int b)
{
    return a > b ? a : b;
}

printf("%d", max(123,456));
Cette fonction écrite en C a pour nom max, pour paramètres a et b qui sont de type int et retourne un int. 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 entre a et b. Ce n'est pas une obligation du langage, mais constitue une bonne pratique de programmation : le nom de la fonction n'a d'importance que mnémotechnique : son comportement ne dépend que des instructions délimitées dans le bloc (donc ici entre accolades). Dans certains langages, le nom de la fonction a un sens : en C++, les constructeurs doivent porter le nom de la classe correspondante.

Plus bas, on voit comment la fonction peut être utilisée (on parle « d'appel de fonction ») : max(123, 456). Le résultat de cet appel est 456. Le même résultat pourrait être obtenu dès la compilation par usage d'une macro.

Caractéristiques des fonctions

  • Une fonction sans effets secondaires (parfois improprement nommés « 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. Exemple de fonctions non pures : appel de la date, ou de l'heure, ou d'un nombre aléatoire[5].
  • Une fonction s'appelant elle-même se nomme fonction récursive. Deux exemples sont la fonction factorielle (où la récursivité est seulement didactique, le programme n'en ayant pas vraiment besoin), et le tri récursif, genre quicksort. FORTRAN IV n'autorisait pas la récursivité. PL/I la permettait, mais exigeait dans ses premières versions qu'on déclare la fonction comme telle.
  • Une fonction qui ne renvoie aucun résultat se nomme procédure (ou sous-programme).
  • Pascal exige d'effectuer la distinction.
  • C ne l'exige pas, sauf dans sa version ANSI.
  • En Algol W, tout sous-programme renvoie une valeur, qu'on peut utiliser ou non.
  • PL/I ne considère un sous-programme que comme une fonction dont le résultat n'est pas mémorisé. Une fonction pouvant ne pas y avoir de paramètres, il est commode en cours de développement d'utiliser une variable (par exemple TIME) là où on utilisera ensuite une fonction TIME sans avoir à modifier en quoi que ce soit le code source.
  • 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 se nomme 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)

Le mérite des fonctions imbriquées est le contrôle très strict de leur visibilité (scope) par le reste du programme. Elles sont très utilisées en PL/I.

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 est fixée ; 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 secondaire ou effet « de bord ».
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 considère le calcul en tant qu'évaluation de fonctions mathématiques et n'admet ni changement d'état ni modification des données. Elle décrit l'application des fonctions, contrairement au modèle de programmation impérative qui souligne les changements d'état.

Cette caractéristique rapproche les langages fonctionnels 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. Une fonction Haskell peut très bien désigner un ensemble infini (par exemple : « l'ensemble des nombres pairs »), car c'est la relation de définition qui est stockée et non des valeurs.

Bibliothèque logicielle

Article détaillé : Bibliothèque logicielle.

Une bibliothèque logicielle est une collection de fonctions.

Notes et références

  1. Ce qui n'était pas toujours vrai dans les années 60, par exemple en FORTRAN IV.
  2. Une exception notable — et catastrophique en efficacité — étant le passage de structures par valeurs en C.
  3. En FORTRAN, cela est même interdit par les spécifications du langage et détecté par les compilateurs.
  4. Ce résultat pouvant être de grande taille, comme une chaîne de caractères en PL/I ou une structure en C.
  5. En Linux, par ce qui y est nommé une « réserve d'entropie », où sont enregistrés des événements non reproductibles à l'identique entre deux appels.

Voir aussi

  • Portail de la programmation informatique
This article is issued from Wikipédia - version of the Sunday, November 01, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.
Contents Listing Alphabetical by Author:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Unknown Other

Contents Listing Alphabetical by Title:
# A B C D E F G H I J K L M N O P Q R S T U V W Y Z Other

Medical Encyclopedia

Browse by first letter of topic:


A-Ag Ah-Ap Aq-Az B-Bk Bl-Bz C-Cg Ch-Co
Cp-Cz D-Di Dj-Dz E-Ep Eq-Ez F G
H-Hf Hg-Hz I-In Io-Iz J K L-Ln
Lo-Lz M-Mf Mg-Mz N O P-Pl Pm-Pz
Q R S-Sh Si-Sp Sq-Sz T-Tn To-Tz
U V W X Y Z 0-9

Biblioteca - SPANISH

Biblioteca Solidaria - SPANISH

Bugzilla

Ebooks Gratuits

Encyclopaedia Britannica 1911 - PDF

Project Gutenberg: DVD-ROM 2007

Project Gutenberg ENGLISH Selection

Project Gutenberg SPANISH Selection

Standard E-books

Wikipedia Articles Indexes

Wikipedia for Schools - ENGLISH

Wikipedia for Schools - FRENCH

Wikipedia for Schools - SPANISH

Wikipedia for Schools - PORTUGUESE

Wikipedia 2016 - FRENCH

Wikipedia HTML - CATALAN

Wikipedia Picture of the Year 2006

Wikipedia Picture of the Year 2007

Wikipedia Picture of the Year 2008

Wikipedia Picture of the Year 2009

Wikipedia Picture of the Year 2010

Wikipedia Picture of the Year 2011