Fonctions

À partir des instructions d'affectation, des structures de contrôle de flux (conditionnelles et boucles), et des entrées-sorties, on peut en théorie implémenter n'importe quel programme. Cela dit, un programme écrit à partir de ces seuls éléments sera "monolithique": constitué d'une seule séquence d'instructions, potentiellement très longue: un logiciel complexe moderne peut nécessiter des milliers voire des millions de lignes de code. Il serait impossible pour un programmeur d'appréhender la logique complète d'un tel programme.

Pour gérer cette complexité, il est utile de construire un logiciel à partir de différentes "briques", qu'on définit et qu'on compose en faisant abstraction des détails de leur implémentation. La principale sorte de "brique" qu'on peut définir est une fonction. Ce terme fait une analogie avec une fonction mathématique, par exemple la fonction qui associe à un nombre réel le carré de ce nombre. En programmation une fonction prend habituellement une ou plusieurs données en entrée, et renvoie une donnée en sortie. Par exemple, une fonction PGCD peut prendre deux entiers en entrée, et retourner leur PGCD calculé à partir de l'algorithme d'Euclide. On pourra ensuite réutiliser cette fonction à plusieurs endroits du code, où on a besoin de calculer un PGCD pour différentes valeurs (par exemple, pour simplifier une fraction). On pourra à ce moment faire appel à la fonction PGCD en faisant abstraction de l'algorithme qui permet de la réaliser.

Un autre bénéfice de décomposer un programme en éléments plus simples est pour la vérification: pour s'assurer qu'un programme fonctionne correctement, on peut commencer par tester toutes ses composantes séparément, ce qui est plus gérable que de tester un programme complet.

Dans cette partie du cours, on commence par montrer comment appeler une fonction existante, en regardant les fonctions de bibliothèque, puis on présente la méthode générale pour spécifier, définir, et tester nos propres fonctions.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
Ce travail est distribué sous une Licence Creative Commons Attribution - Pas d'Utilisation Commerciale 4.0 International.