fantasticode.fr
Image default

Comprendre une fonction en programmation

En bref

Une fonction est une machine nommée : elle reçoit des entrées (les paramètres), effectue son travail, et renvoie une sortie (la valeur de retour). Pense à la machine à café — entrées : café et eau ; bouton : l’appel ; sortie : l’expresso — ou à une recette nommée qu’on peut « exécuter » à volonté sans la réécrire. C’est le concept qui transforme des lignes de code en briques réutilisables : on définit la fonction une fois (son nom, ses paramètres, son corps, son return), puis on l’appelle partout où l’on en a besoin. La distinction cruciale que tout débutant doit conquérir : définir une fonction ne l’exécute pas — c’est poser la machine sur le comptoir ; seul l’appel appuie sur le bouton. Ajoute la différence entre renvoyer (return, la valeur ressort utilisable) et afficher (print, la valeur se montre à l’écran), et tu tiens le concept qui structure tous les programmes du monde.

Variables, boucles, conditions : tu sais désormais stocker, répéter et décider. Il manque la brique qui organise tout cela — celle qui transforme un tas d’instructions en programme structuré. Comprendre une fonction est la quatrième marche du socle, et sans doute la plus rentable : ce guide la démonte tranquillement, machine à café en main, Python et JavaScript en parallèle — dans l’esprit de notre guide complet pour apprendre à coder.

Une fonction, expliquée avec les mains

Regarde la machine à café : elle a un nom (on sait la désigner), des entrées (du café, de l’eau), un mécanisme interne (dont tu n’as pas besoin de connaître le détail pour t’en servir), et une sortie (l’expresso). Une fonction est exactement cela : une machine de code nommée — calculer_ttc, verifier_email, afficher_score — qui reçoit des valeurs en entrée (les paramètres), travaille, et renvoie un résultat (la valeur de retour). Une fois la machine posée sur le comptoir, tu appuies sur le bouton autant de fois que tu veux — avec du café différent à chaque fois : c’est l’appel, et c’est toute la magie — écrire une fois, utiliser partout.

Pourquoi ce concept change-t-il tout ? Trois raisons. La réutilisation : le calcul de TVA écrit une fois sert dans dix endroits — et le jour où le taux change, tu corriges UNE machine, pas dix copies. La lisibilité : un programme fait de fonctions bien nommées se lit comme une phrase — total = calculer_ttc(prix) raconte son histoire, là où vingt lignes de calcul brut la noient. La pensée par blocs, enfin : décomposer un problème en fonctions (« il me faut une machine qui vérifie, une qui calcule, une qui affiche ») est LA méthode des programmeurs — le prolongement direct de la décomposition entraînée depuis les premières briques. Une précision d’atelier : les variables créées dans la machine restent dans la machine — la cuisine interne n’envahit pas le comptoir ; on appelle cela la portée, et cette étanchéité est une protection, pas une contrainte.

À quoi ça ressemble dans le code

En Python, la machine se définit avec def : def carre(n): return n * n — lis : « je définis une fonction nommée carre, qui reçoit un paramètre n, et qui renvoie n fois n ». Poser cette définition n’exécute rien : la machine attend sur le comptoir. L’appel appuie sur le bouton : resultat = carre(5) — la valeur 5 entre dans n, le corps s’exécute, 25 ressort par le return et se range dans resultat, prêt pour la suite (une condition, un calcul, un affichage). Plusieurs paramètres se séparent par des virgules — def ttc(prix, taux): — et l’ordre des valeurs à l’appel suit l’ordre des paramètres : première leçon de rigueur, à pratiquer dès les bases du Python.

En JavaScript, même machine, autre carrosserie : function carre(n) { return n * n; } — le mot-clé function, le corps entre accolades, le return identique ; l’appel ne change pas d’un iota : const resultat = carre(5);. Tu croiseras vite une seconde écriture, la fonction fléchée — const carre = (n) => n * n; — très prisée du JavaScript moderne : même machine, syntaxe compacte, rien de conceptuellement nouveau. Le concept voyage ensuite partout — méthodes typées de Java, fonctions à $ de PHP — et prend une importance particulière en JavaScript, langage qui adore passer des fonctions à d’autres fonctions : le guide pratique des fonctions JavaScript prend le relais quand tu y seras, et les bases du langage posent le décor.

Les pièges classiques (et comment les éviter)

Piège 1 : définir sans appeler. Le grand mystère du premier jour — « j’ai écrit ma fonction et il ne se passe rien » : normal, poser la machine ne fait pas le café. Le remède : après chaque définition, écrire immédiatement un appel de test. Piège 2 : confondre return et print. print (ou console.log) montre une valeur à l’écran ; return la renvoie au programme, utilisable pour la suite — une fonction qui affiche au lieu de renvoyer produit un résultat qu’on voit mais qu’on ne peut pas réutiliser (et un calcul qui vaut « rien »). Le remède : par défaut, une fonction return son résultat — l’affichage est la décision de celui qui appelle.

Piège 3 : les paramètres dans le désordre. Appeler ttc(0.2, 100) quand la machine attend (prix, taux) calcule sans broncher… et faux. Le remède : des noms de paramètres parlants, et la vérification de l’ordre à chaque appel — les éditeurs modernes affichent la signature au survol, sers-t’en. Piège 4 : la fonction fourre-tout. Une machine de quarante lignes qui vérifie, calcule, affiche et sauvegarde n’est plus une machine — c’est un atelier en vrac. Le remède tient en une règle d’artisan : une fonction, une mission, dicible en une phrase — sinon, découpe. Le concept est complet, et c’est un sommet : derrière lui s’ouvrent la récursivité (la machine qui s’appelle elle-même — vertige garanti, plus tard) et tout l’édifice du code structuré. D’ici là, fais tourner tes premières machines sur les exercices Python et JavaScript — le convertisseur et la table de multiplication t’y attendent : deux machines classiques, à construire de tes mains.

Questions fréquentes

C’est quoi une fonction en programmation, en une phrase ?

Une machine de code nommée : elle reçoit des entrées (les paramètres), effectue un travail défini une seule fois, et renvoie un résultat (la valeur de retour) — qu’on peut ensuite appeler partout, autant de fois que nécessaire. C’est la brique qui rend le code réutilisable et lisible.

Quelle différence entre définir et appeler une fonction ?

Définir, c’est poser la machine sur le comptoir : le code décrit son nom, ses paramètres et son travail — mais rien ne s’exécute. Appeler, c’est appuyer sur le bouton : carre(5) fait réellement tourner la machine avec la valeur 5. Le réflexe du débutant : après chaque définition, écrire un appel de test.

Quelle différence entre return et print ?

print affiche une valeur à l’écran, pour les yeux humains ; return la renvoie au programme, qui peut la ranger dans une variable et la réutiliser. Une fonction devrait par défaut renvoyer son résultat avec return — l’affichage restant la décision de celui qui l’appelle.

C’est quoi un paramètre de fonction ?

Une entrée de la machine : la valeur que la fonction reçoit pour travailler — le n de carre(n), le prix et le taux d’un calcul de TTC. À l’appel, les valeurs fournies prennent la place des paramètres, dans le même ordre — d’où l’importance de noms parlants et d’un ordre vérifié.

Sources

Cet article a une vocation informative et pédagogique. Les plateformes, outils et formations éventuellement cités le sont à titre d’exemple ; compare plusieurs options avant de t’engager ou de payer.