Une fonction (également appelée procédure, méthode, sous-routine ou routine) est une portion de code destinée à exécuter une seule tâche spécifique. Utilisez cette balise pour les questions qui impliquent spécifiquement la création ou l'appel de fonctions. Pour obtenir de l'aide sur l'implémentation d'une fonction pour effectuer une tâche, utilisez plutôt [algorithme] ou une balise spécifique à la tâche.

De Wikipedia:

Un sous-programme (également connu sous le nom de procédure, fonction, routine, méthode ou sous-programme) est une portion de code dans un programme plus large qui effectue une tâche spécifique et est relativement indépendant du code restant.

Le contenu d'un sous-programme est son corps, qui est exécuté lorsque le sous-programme est appelé ou appelé.

Un sous-programme peut être écrit de sorte qu'il s'attende à obtenir une ou plusieurs valeurs de données - appelées paramètres ou arguments - du programme appelant. Il peut également renvoyer une valeur calculée à son appelant (sa valeur de retour), ou fournir diverses valeurs de résultat ou paramètres de sortie (put). En effet, une utilisation courante des sous-programmes est d'implémenter des fonctions mathématiques, dans lesquelles le sous-programme a uniquement pour but de calculer un ou plusieurs résultats dont les valeurs sont entièrement déterminées par les paramètres transmis au sous-programme. (Les exemples peuvent inclure le calcul du logarithme d'un nombre ou du déterminant d'une matrice.)

Cependant, un appel de sous-programme peut également avoir des effets secondaires, tels que la modification des structures de données dans la mémoire de l'ordinateur, la lecture ou l'écriture sur un périphérique, la création d'un fichier, l'arrêt du programme ou de la machine, ou même le retard de l'exécution du programme pour une période spécifiée. temps. Un sous-programme avec des effets secondaires peut renvoyer des résultats différents chaque fois qu'il est appelé, même s'il est appelé avec les mêmes arguments. Un exemple est une fonction de nombre aléatoire, disponible dans de nombreuses langues, qui renvoie un nombre pseudo-aléatoire différent à chaque appel. L'utilisation généralisée de sous-programmes avec effets secondaires est une caractéristique des langages de programmation impératifs.

Un sous-programme peut être codé de sorte qu'il puisse s'appeler récursivement, à un ou plusieurs endroits, afin d'accomplir sa tâche. Cette technique permet la mise en œuvre directe de fonctions définies par induction mathématique et algorithmes de division et de conquête récursifs.

Un sous-programme dont le but est de calculer une seule fonction à valeur booléenne (c'est-à-dire de répondre à une question oui / non) est appelé prédicat. Dans les langages de programmation logique, souvent tous les sous-programmes sont appelés "prédicats", car ils déterminent principalement le succès ou l'échec. Par exemple, tout type de fonction est un sous-programme mais pas main().

Il s'agit d'une unité de code commune à la plupart des autres langages de programmation.

La fonction a également une définition mathématique, qui est importante en informatique et en statistiques. La fonction mathématique est une relation biunivoque où, pour un argument, elle renvoie toujours la même valeur. Dans les langages fonctionnels purs comme Haskell, seules les fonctions mathématiques sont autorisées.