29/11/2016 Algorithmique et structure de données I Cours 5: Les Fonctions et les Procédures Dr. Jihène Tounsi ISG de Sousse Site web: http://www.jihenetounsi.com Email: [email protected] 1 Pourquoi des sous algorithmes Un algorithme est un ensemble de sous-algorithmes Décomposer un problème en sous problème Facilité de résolution (Diviser pour régner) Lisibilité de l’algorithme La réutilisation des instructions sans les réécrire. Algorithme Principal Variables …. Debut Instruction1 Appel Sous-algo1 Appel sous-algo2 …. Fin 2 Sous-algo1 Sous-algo3 Sous-algo2 Dr. Jihène Tounsi 1 29/11/2016 Les sous-algorithmes Entête sous-algorithme Un sous algorithme a la même structure que l’algorithme principal. Variables //déclaration des variables Début Instructions … Fin … L’algorithme principal fait appel à un sous-algorithme Un sous-algorithme peut appeler un ou plusieurs autres algorithmes 3 Dr. Jihène Tounsi Chronologie d’exécution Algorithme Principal Variables …. Debut Instruction1 Appel Sous-algo1 Instruction 2 Fin L’ordre d’exécution Instruction 1 Sous_algo1 1. 2. 3. 1. Instruction 1.1 2. Instruction 1.2 Instruction 2 Sous-Algo1… Variables … Début Instruction 1.1 Instruction 1.2 Fin 4 Dr. Jihène Tounsi 2 29/11/2016 Communication d’information Un algorithme envoie des données au sous-algorithme La donnée est appelée un argument. Un argument peut être une variable ou une valeur. Dans l’entête d’un sous-algorithme les données sont appelées des paramètres. Les arguments sont envoyés aux paramètres. L’ordre de l’envoi des arguments, doit correspondre à l’ordre de déclaration des paramètres. L’argument et le paramètre lui correspondant doivent être de même type. 5 Dr. Jihène Tounsi Passage des paramètres Il existe deux modes de passage des arguments vers les paramètres Passage par valeur : les arguments ne sont pas modifiés lors de l’exécution des instructions des sous-algorithmes. 6 Le paramètre récupère une copie de l’argument. Ce passage est appliqué par défaut. Passage par adresse : La modification des paramètres entraîne la modification des arguments. Le paramètre récupère l’adresse (ou la référence) de l’argument. Après la déclaration du paramètre mettre le mot clé : par adresse. Dr. Jihène Tounsi 3 29/11/2016 Exemple de passage des paramètres Algorithme Principal Variables arg1:entier arg2:chaîne //déclaration du sous-Algo1 Debut Instruction1 Sous-algo ( arg1 , arg2 ) Instruction 2 Fin Sous-Algo1(paramètre1:entier, paramètre2: chaîne par adresse) Variables … Début … Fin 7 Dr. Jihène Tounsi Variables globales vs Variables locales Les variables déclarées au niveau de l’algorithme principal sont appelés des variables globales (V.G). La portée de la V.G est totale : Elle est reconnue par tous les sous-algorithmes de l’algorithme principal Les variables déclarées au niveau d’un sous-algorithme sont appelés des variables locales (V.L). La portée de la V.L est restreinte : Elle est reconnue seulement par le sous-algorithme où elle est déclarée. Dans un sous algorithme lorsqu’une V.G a le même nom qu’une V.L, la V.G est momentanément masquée. 8 Dr. Jihène Tounsi 4 29/11/2016 Les procédures Une procédure est un sous algorithme qui effectue un traitement spécifique Paramètres en entrée Procédure Une procédure peut prendre zéro ou n paramètres. Une procédure effectue un traitement qui ne retourne pas de résultat. Une procédure peut modifier plusieurs variables en même temps si le passage s’est fait par adresse. 9 Dr. Jihène Tounsi Syntaxe d’une procédure Déclaration de la procédure Procédure nom_procédure (paramètre_1:type, …parmètre_n:type) Variables //déclaration des variables locales Début … Instructions Fin Procédure //Appel d’une procédure dans l’algorithme principal Algorithme …; Variables …. //Déclaration de la procédure Début …. //Appel de la procédure Nom_Procédure(argument_1,…,argument_n) … Fin 10 Dr. Jihène Tounsi 5 29/11/2016 Exemple : Saisie et affichage d’un tableau Algorithme Saisie_Tableau; //déclaration d’un type tableau pour alléger les entêtes de procédure Type tab=tableau [0,49] d’entiers //Déclaration procédures Procedure Saisie (T:tab par adresse) //Déclaration variables locales Variables i,n : entier Début //Saisie de la taille du tableau Répeter Ecrire(“donnez le nombre d’entiers”) Lire (n) Jusqu’à (n >0 ET n<50]) //Saisie des éléments du tableau Pour i de 0 à n-1 faire Ecrire(“donnez l’élément n°”,i+1) Lire (T[i]) Fin Pour Fin procédure //Procédure pour l’affichage Procedure Afficher(T:tab) //Déclaration variables locales Variables i : entier Début Pour i de 0 à T.Taille-1 faire Ecrire(T[i]) Fin Pour Fin procédure //Déclaration variable globale Variables T1: tab //programme principal Début //Appel de procédures Saisie (T1) Afficher (T1) Fin 11 Dr. Jihène Tounsi Les fonctions Une fonction est un sous algorithme qui retourne une valeur calculée. Paramètres en entrée Fonction Résultat Une fonction peut prendre zéro ou n paramètres. Une fonction renvoie un seul résultat à l’aide du mot clé Retourne. La valeur retournée par la fonction doit être récupérée dans l’algorithme principal. 12 Dr. Jihène Tounsi 6 29/11/2016 Syntaxe d’une Fonction Fonction nom_Fonction (paramètre: type): type retourné Variables //déclaration des variables locales Début Instructions Retourne (var) Fin Fonction //Appel d’une fonction dans l’algorithme principal Algorithme …; Variables …. //Déclaration de la fonction Début …. Varnom_Fonction(argument) … Fin 13 Dr. Jihène Tounsi Exemple : Calcul Moyenne d’un tableau //Suite de l’exemple des procédures Algorithme Saisie_Tableau; //déclaration d’un type tableau pour alléger les entêtes des procédures Type tab=tableau [0,49] d’entiers //Déclaration procédures //Voir exemple procédure //Déclaration des fonctions Fonction Moyenne (T:tab):réel //Déclaration des variables locales Variables S,i: entier M:réel Début S0 Pour i de 0 à T.Taille-1 faire SS+T[i] Fin pour MS/T.lTaille Retourne (M) Fin Fonction //Déclaration variable globale Variables 14 T1: tab Moy: réel //programme principal Début //Appel de la procédure Saisie (T1) Afficher (T1) //Appel de fonction MoyMoyenne (T1) Ecrire (“la moyenne des éléments du tableau =“, Moy) Fin Dr. Jihène Tounsi 7 29/11/2016 Fin du chapitre 15 8