Algorithmique et Structures de Données II Année Universitaire 2006-2007 Chapitre 1 Les procédures et les fonctions Introduction La conception d'un algorithme procède en général par des affinements successifs : On décompose le problème à résoudre en sous-problèmes, puis ces derniers à leur tour, jusqu'à obtenir des problèmes "faciles à résoudre". Pour chaque sous-problème, on écrira un module. Ainsi, la résolution du problème sera composée d'un algorithme principal et d'un certain nombre de modules. L'algorithme principal a pour but d'organiser l'enchaînement des modules. Un module est une unité fonctionnelle formée d'un bloc d'instructions, nommée et éventuellement paramétrée, que l'on déclare afin de pouvoir l'appeler par son nom en affectant s'il y a lieu des valeurs à ses paramètres. Les données fournies au module et les résultats produits par ce dernier sont appelés des arguments ou des paramètres. Un module peut être une procédure ou une fonction. I. LES PROCEDURES 1. Définition et déclaration Une procédure est un module réalisant une action sur une partie des données de l'algorithme. La structure d'une procédure est identique à celle d'un algorithme. Elle est constituée d'un en-tête, d'une partie déclarative et d'un corps. Dans l'algorithme, la procédure se présente sous la forme : Procédure Nom_Procédure (paramètres) Var déclarations Début Instructions… Fin • • • L'identificateur Nom_Procédure est utilisé, dans l'algorithme appelant la procédure, comme instruction d'appel ou d'activation de la procédure. Les paramètres sont utilisés dans le cas où la communication des informations entre l'algorithme appelant et la procédure devrait se réaliser sous une forme spécifique. Nous reviendrons plus tard sur les modes de passage des paramètres. La liste de paramètres peut être vide. La partie des déclarations et le corps de la procédure sont structurés respectivement comme la partie déclarative et le corps d'un algorithme. Application 1 : Ecrire une procédure qui permet d’afficher un caractère un certain nombre de fois. BEN MAHMOUD Chaker Page 1 / 3 Algorithmique et Structures de Données II Année Universitaire 2006-2007 Solution : Procédure Afficher (C :caractère ; N :entier) Var i : entier Début Pour i de 1 à N faire Ecrire(c) Fin pour Fin Suite Application : Ecrire un algorithme qui affiche sur l’écran : ***** --2 année ESCEM --***** 2. Déclaration et accès aux objets : a. les objets locaux :Tous les objets (constantes, types, variables) déclarés dans un sous-programme sont dits locaux à celui-ci. Les objets locaux sont accessibles et connus uniquement que dans programme dans lequel ils sont déclarés le sous- b. les objets globaux : ce sont les objets qui sont déclarés dans le programme principal. Tout objet global peut être utilisé par un sous-programme sans être déclaré dans celui-ci. 3. Paramètres des procédures • • • Les procédures appelante et appelée peuvent avoir besoin de se communiquer des informations. Cette communication est établie à l’aide de paramètres qui vont apparaître à la fois dans l’instruction d’appel et dans l’en-tête de la procédure appelée. Lorsque l’en-tête de la procédure contient des paramètres, ceux-ci portent le nom de paramètres formels (ou paramètres fictifs). Ils sont représentés par des identificateurs sur lesquels la procédure va travailler et qui sont locaux à la procédure. Lorsque l’instruction d’appel contient des paramètres, ceux-ci portent le nom de paramètres effectifs (ou paramètres réels). Ils communiquent des informations à la procédure appelée, dans laquelle ils viennent se substituer aux paramètres formels. 4. Passage de paramètre Le passage d e par a mèt r e es t la substitution des paramètres effectifs aux paramètres formels. 8 Paramètres par valeur : Ce mode de passage indique que les objets qui sont transmis ne seront pas modifiés après l’exécution du sous-programme. Ils gardent leurs valeurs. Le sens de transfert est unique c.à.d du programme principale vers la procédure. 8 Paramètres par variable ou par référence : Les paramètres de ce mode retournent les résultats d’exécution du sous programme. Le sens de transfert est dans le deux sens. Dans la structure de l’entête de la procédure, le mot réservé Var précède les paramètres formels. Application 2 : Ecrire un algorithme qui permet la permutation de deux variables A et B. BEN MAHMOUD Chaker Page 2 / 3 Algorithmique et Structures de Données II Année Universitaire 2006-2007 II. LES FONCTIONS Définition et déclaration Un sous programme « fonction » est une suite d’actions à la quelle est associée une désignation typée et qui retourne un résultat unique. Dans l'algorithme, la fonction se présente sous la forme : Fonction Nom_Fonction (Paramètres) : Type_Résultat Var déclarations Début … Nom_Fonction ß (a) Fin § § Type_Résultat : c'est le type de la valeur retournée par la fonction. (a) : c'est une instruction d'affectation de l'identificateur de la fonction. Ce dernier (Nom_Fonction) doit impérativement prendre une valeur pour que la fonction puisse la retourner dans l'expression du module appelant. Appel : Le programme appelant appel la fonction en l’affectant à une variable de même type Remarques : • Les paramètres d'appel doivent correspondre en nombre, en type et en position aux paramètres formels de la fonction. • La liste des paramètres peut être vide mais elle comporte généralement au moins un paramètre. • Une fonction peut se transformer en une procédure qui retourne le même résultat dans un paramètre déclaré parmi la liste des paramètres de la procédure. • Toute procédure, qui retourne un seul résultat, peut être remplacée par une fonction. Le résultat sera récupéré dans l'identificateur de la fonction. Application 3 : Donner un algorithme qui permet la saisie de trois variable X (compris entre 10 et 20), variable Y (compris entre 30 et 40) et variable Z (compris entre 50 et 60). BEN MAHMOUD Chaker Page 3 / 3