Chapitre 5 Les procédures et les fonctions 5.1 Introduction Motivation Il arrive fréquemment d'avoir à utiliser des calculs ou des traitements plusieurs fois dans un algorithme à des endroits différents. A chaque fois on est alors obligé de répéter la séquence d‘actions qui se rapportent à ces calculs ou traitements. Dans le cas d’un problème simple, il est aisé d’écrire une suite d’actions constituant un seul algorithme pour le résoudre totalement. Par contre si le problème est complexe, son algorithme serait très long, difficile à concevoir, à comprendre, et à corriger. © Nabil Guellati 2007/2008 5.1 Introduction Solution Pour remédier à ce type de problèmes, on doit adopter un mode de programmation appelé programmation modulaire, en décomposant le problème en tâches indépendantes. Le fait de décomposer le problème complexe en plusieurs tâches permet de faciliter la conception de l’algorithme, car dans ce cas on fait la conception de plusieurs modules (petits algorithmes, ou sous-programmes) au lieu d’un seul algorithme complexe. Aussi, si un programme vient à être développé par une équipe de programmeurs, chacun peut travailler sur la partie qui lui a été assignée. Le programme final sera la réunion de chaque module dont le développement aura été indépendant. © Nabil Guellati 2007/2008 5.1 Introduction Exemple illustratif Considérons le problème des délibérations pour les étudiants de première année LMD sciences de la matière. Ce problème étant complexe, il est difficile de le résoudre par un seul algorithme. Il est plus approprié de luis trouver une solution en le décomposant en taches et en associant à chacune d’elle un module. Ces taches peuvent être : Saisie des notes par module. Calcul de la moyenne générale. Affichage de la liste des étudiant admis. Affichage de la liste de rattrapage par module,… © Nabil Guellati 2007/2008 5.2 Nature d’un module Un module peut être une procédure ou une fonction. Définitions : Une procédure est un module regroupant une suite d’actions. Une fonction est un module qui réalise un calcul et produit un résultat unique. Comme un algorithme, un module est composé d’une entête, d’une partie déclaration et d’une partie regroupant les actions. © Nabil Guellati 2007/2008 5.3 Format d’un module L’en-tête: Elle commence par le mot clé Procédure ou Fonction, suivi du nom du module puis par une liste de paramètres comme suit: Procédure <nom procédure> (liste de paramètres) Fonction <nom fonction> (liste de paramètres) : <type-fonction> Un paramètre est une variable qui permet à deux modules de communiquer entre eux. <type-fonction> est le type du résultat unique produit par la fonction Exemples: Procédure affichage (Msg : Chaîne) Fonction somme (A, B : entier) : entier © Nabil Guellati 2007/2008 5.3 Format d’un module La partie déclaration définit les objets locaux (variables, constantes, …) utilisés dans le module. Il est à noter que cette partie peux être vide. Exemples : voici la description complète des deux modules affichage et somme. Procédure affichage (Msg : Chaîne) Fonction somme (A, B : entier) : entier Début Variable S : entier écrire (Msg) Début Fin SÅA+B somme Å S Fin Remarque: puisque une fonction renvoit un résultat, elle doit se terminer par l’action: <nom-de-fonction> Å <expression> © Nabil Guellati 2007/2008 5.4 Format d’un algorithme Un algorithme qui utilise des modules possède la forme suivante: Algorithme <nom-de-l’algorithme> <Déclarations globales> <Description complète des différents modules> Début <Actions> … Procédure principale ou programme principal Fin © Nabil Guellati 2007/2008 5.4 Format d’un algorithme Remarque 1: la partie regroupant les actions de l’algorithme est appelée procédure principale ou programme principal. Remarque 2 : les objets utilisés dans le programme principal doivent être déclarés dans la partie déclarations globales. Ces objets peuvent être utilisés dans tous les modules de l’algorithme. Remarque 3 : les objets déclarés dans un module ne peuvent être utilisés que dans ce module. © Nabil Guellati 2007/2008 5.5 Appel d’un module Pour exécuter un module nous devons faire appel à ce module à partir du programme principal. La syntaxe de l’appel d’une procédure est comme suit: <Nom de procédure> (liste de paramètres) Exemple : Variable M: chaîne début M Å ‘Hello world’ affichage (M) Pour appeler une fonction il faut l’utiliser dans une expression. Exemple : V Å 1 + Somme (50, 24) © Nabil Guellati 2007/2008 5.5 Appel d’un module Lorsque un module est appelé, l’ordinateur va suspendre l’exécution du programme principal, copier le contenu des paramètres de l’appel vers les paramètres du module, puis exécuter les actions du module. Lorsque l’exécution des actions du module est terminée, l’ordinateur reprend l’exécution du programme principal. Exemple: {Programme principale} … M Å ‘Hello world’ affichage (M) V Å 50 … Procédure affichage (Msg : Chaîne) Début écrire (Msg) Fin © Nabil Guellati 2007/2008