La notion de fonction utilisée en programmation et algorithmique se rapproche de celle des mathématiques sur certains points. En mathématiques, une fonction associe à un paramètre une valeur. À partir de cette association, une fois qu'elle est définie et posée, on peut faire une étude sur les diverses propriétés de la fonction.
Comme c'est souvent le cas avec les notions, en informatique, le principe de fonction va ressembler à celui des mathématiques. L'objectif n'est cependant pas de faire une étude, mais de fonctionner d'une certaine manière avec l'ordinateur.
Voici l'exemple d'une fonction mathématique prenant un paramètre $x$ :
$$ f : x \mapsto 4x + 1 $$On peut aussi écrire l'égalité :
$$ f(x) = 4x + 1 $$En programmation, on utilise généralement des noms longs, tout comme pour les variables, car c'est encore une occasion de mieux décrire ce que fait notre programme. Ensuite, une fonction gérera en principe un nombre fixe de paramètres (ou arguments), qui peut être nul ou multiple. Au sein de la fonction, ces paramètres seront naturellement des variables (avec un nom les décrivant si possible).
En mathématiques, une fonction associe à ses paramètres une valeur. En programmation, cela pourra être le cas : on dit alors que la fonction retourne une valeur. Néanmoins, une fonction pourra également se contenter d'exécuter des instructions.
Dans la plupart des langages de programmation (généralement impératifs ; tous ceux du site sauf OCaml),
la définition d'une fonction ne ressemble pas du tout à celle que l'on fait en mathématiques.
En revanche, une requête à une fonction, dite « appel », en est très proche :
par exemple fonction(arg1, arg2, arg3)
pour une fonction à trois paramètres.
Cette écriture vous éveille certainement quelque chose ? Et oui : nous avons déjà fait appel à de nombreuses fonctions, notamment pour les opérations terminales de notre robot : afficher du texte, récupérer la saisie, se déplacer, bouger des objets.
Dans le chapitre, nous commencerons par manipuler des fonctions sans aucun argument et sans valeur de retour. Nous verrons ensuite que les fonctions peuvent être bien plus intéressantes lorsqu'elles sont paramétrables ; et enfin, nous écrirons des fonctions qui retournent une valeur.