Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Chapitre 4 : Les sous algorithmes Hassen NAKBI ::: hassen.nakbi@gmail.com hassen.nakbi@gmail.com 1ere année Licence 21 novembre 2022 Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 1 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Introduction Pourquoi un sous algorithme ? Dès qu'un algorithme contient une centaine ou milliers des lignes de code, augmente en complexité, ou bien une séquence d'actions se répète plusieurs fois, alors il est conseillé de le décomposer vers des parties relativement indépendantes et simples dont on pourra comprendre facilement leur rôle. Par ailleurs, même dans une petite partie de code d'un algorithme, il est fréquent que l'on ait à réaliser en plusieurs endroits des instructions redondantes comme la saisie au clavier, l'achage à l'écran, ou bien la manipulation de tableaux. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 2 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Introduction Exemple Imaginons que nous avons besoin de résoudre un problème de manipulation d'un tableau, alors nous pouvons décomposer vers un ensemble des sous algorithmes. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 3 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 2 Dénition Types Structure Notion de sous algorithme Dénition Types Structure Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 4 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Types Structure Sous algorithme Dénition Un sous algorithme est un ensemble des actions du code permettant d'eectuer une tâche très précise, à laquelle on aura recours plusieurs fois dans l'algorithme principal. Il s'agit d'un ensemble d'instructions qu'on écrit une seule fois en leur attribuant un nom, ensuite il peut être utilisé en tout point de partie traitement d'un algorithme principal en se contentant d'en écrire leur nom. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 5 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 2 Dénition Types Structure Notion de sous algorithme Dénition Types Structure Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 6 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Types Structure Types d'un sous algorithme Types Un sous algorithme possède deux types de modules : Fonction Procédure. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 7 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 2 Dénition Types Structure Notion de sous algorithme Dénition Types Structure Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 8 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Types Structure Structure d'un algorithme principal ALGORITHME principal nomalgo TYPE tableau ou structure CONST des constantes VAR des variables Déclaration d'une fonction Déclaration d'une procédure DÉBUT Les instructions d'un algorithme. Appel à une fonction Appel à une procédure FIN Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 9 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 3 Dénition Dénition algorithmique d'une fonction Notion de fonction Dénition Dénition algorithmique d'une fonction Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 10 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une fonction Fonction Dénition Une fonction est un sous algorithme nommé et typé qui calcule et retourne une seule valeur résultat de type simple. Le type de cette valeur est celui de la fonction. Une fonction doit être dénie une seule fois dans l'algorithme principal et peut être appelée plusieurs fois par l'algorithme principal et par tous les autres sous algorithmes. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 11 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 3 Dénition Dénition algorithmique d'une fonction Notion de fonction Dénition Dénition algorithmique d'une fonction Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 12 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une fonction Dénition algorithmique Une fonction est composée d'un entête de déclaration et un corps de traitement. Dans l'entête de déclaration, nous commençons par le mot clé fonction suivi par un nom associé unique et une liste des paramètres optionnels alignés entre parenthèses et enn un type de retour. Dans le corps de fonction, nous citons les instructions à traiter dans le bloc début et n. Sachant que la dernière instruction doit contenir impérativement le mot clé renvoyer pour montrer le résultat de fonction. L'appel d'une fonction se fait dans la partie traitement de l'algorithme principal, en utilisant le même nom de dénition de fonction et en remplaçant les paramètres formels par des valeurs eectives. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 13 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une fonction Syntaxe de déclaration algorithmique Algorithme principal fonction VAR Variables globales Fonction nomfonction(p1,p2 : type) : type de retour VAR variables locales DÉBUT Les instructions de fonction Renvoyer résultat FIN DÉBUT Les instructions de l'algorithme principal Appel à une fonction FIN Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 14 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une fonction Syntaxe de dénition d'une fonction en langage C type de retour nomfonction(type p1, type p2){ type variables locales ; Les instructions de fonction ; return résultat ; } int main( ){ Appel à une fonction ; return 0 ; } Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 15 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une fonction Exemple : Fonction somme des valeurs d'un tableau Algorithme principal tab CONST N 11 TYPE TAB = tableau[1..N] d'entiers VAR T : TAB et x : entier Fonction somtab(A : TAB, n1 : entier) : entier VAR s,i : entier DÉBUT Renvoyer s FIN DÉBUT x ←− somtab(T,N) Écrire("somme : ",x) Écrire("somme : ",somtab(T,N)) FIN s ←− A[1] Pour i de 2 à n1 pas←−1 faire s ←− A[i] + s FinPour Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 16 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une fonction Exemple : Fonction somme des valeurs d'un tableau en langage C #include <stdio.h> #dene N 11 short x,T[N] ; short somtab(short A[ ],short n1){ short s,i ; s = A[0] ; for(i=1 ;i<n1 ;i++){ s = A[i] + s ; return s ; } int main( ){ x = somtab(T,N) ; printf("%hi ", x) ; printf("%hi ",somtab(T,N)) ; return 0 ; } Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 17 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 4 Dénition Dénition algorithmique d'une procédure Notion de procédure Dénition Dénition algorithmique d'une procédure Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 18 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une procédure Procédure Dénition Une procédure est un sous algorithme nommé qui représente une ou plusieurs actions qui peuvent calculer et transmettre vers l'algorithme principal une ou plusieurs valeurs. Elle ne possède pas de type de retour. Une procédure doit être dénie une seule fois dans l'algorithme principal et peut être appelée plusieurs fois par l'algorithme principal et par toutes les autres sous algorithmes. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 19 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 4 Dénition Dénition algorithmique d'une procédure Notion de procédure Dénition Dénition algorithmique d'une procédure Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 20 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une procédure Procédure Dénition algorithmique Une procédure est composée d'un entête de déclaration et un corps de traitement. Dans l'entête de déclaration, nous commençons par le mot clé procédure suivi par un nom associé unique et une liste des paramètres alignés entre parenthèses. Dans le corps de procédure, nous citons les instructions à traiter dans le bloc début et n. L'appel d'une procédure se fait dans la partie traitement de l'algorithme principal, en utilisant le même nom de dénition de procédure et en remplaçant les paramètres formels par des valeurs eectives. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 21 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une procédure Procédure Syntaxe de déclaration algorithmique Algorithme principal procédure VAR Variables globales Procédure nomprocédure(p1,p2 : type) VAR les variables locales DÉBUT Les instructions de procédure FIN DÉBUT Les instructions de l'algorithme principal Appel à une procédure FIN Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 22 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une procédure Procédure Syntaxe de déclaration en langage C void nomprocédure(type p1, type p2){ type variables locales ; Les instructions de procédure ; } int main( ){ Appel à une procédure ; return 0 ; } Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 23 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une procédure Procédure Exemple : dénition des procédures remplir et achage Algorithme principal tableaux const N = 5 TYPE TAB=tableau[1 .. N] d'entiers VAR A : TAB Procédure remplir(B : TAB, M : entier) VAR i : entier DÉBUT Pour i de 1 à M pas←−1 faire Lire(B[i]) FinPour FIN Hassen NAKBI ::: hassen.nakbi@gmail.com Procédure achage(C : TAB, D : entier) VAR i : entier DÉBUT Pour i de 1 à D pas←−1 faire Écrire(C[i]) FinPour FIN DÉBUT remplir(A,N) achage(A,N) FIN Chapitre 4 : Les sous algorithmes 21 novembre 2022 24 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Dénition Dénition algorithmique d'une procédure Exemple : dénition des procédures remplir et achage #include <stdio.h> #dene N 5 short A[N] ; void remplir(short B[ ], short M) { short i ; for( i= 0 ; i<M ; i++) scanf("%hi ",&B[i]) ; } Hassen NAKBI ::: hassen.nakbi@gmail.com void achage(short C[ ], short D) { short i ; for ( i= 0 ; i<D ; i++) printf("%hi ",C[i]) ;} int main( ){ remplir(A,N) ; achage(A,N) ; return 0 ;} Chapitre 4 : Les sous algorithmes 21 novembre 2022 25 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 5 Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 26 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres Paramètres Un paramètre est un espace mémoire servant d'intermédiaire entre l'algorithme principal qui fait appel et le sous-algorithme appelé an qu'ils puissent échanger de l'information. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 27 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres Paramètres Lorsque les sous algorithmes ont besoin des informations pour eectuer un traitement, nous devons exprimer des paramètres formels dans l'entête de dénition, pour donner des sources d'informations. Au moment de l'appel d'un sous algorithme, l'algorithme principal devra fournir ses informations sous formes des valeurs réelles concrètes ce qu'on appelle des paramètres eectifs. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 28 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 5 Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 29 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres formels et eectifs Paramètres formels et eectifs Le paramètre formel est le type et le nom donnés au moment de la déclaration (dénition) d'un sous-algorithme de type fonction ou bien procédure. Le paramètre eectif est la valeur réelle utilisée au moment de l'appel d'un sous-algorithme. Le nom du paramètre formel peut être diérent du nom du paramètre eectif. alors que le type doit être le même. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 30 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 5 Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 31 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Passage des paramètres Transmission des paramètres Au moment de l'appel d'un sous-algorithme, les paramètres formels sont substitués par des valeurs réelles des paramètres eectifs. Les paramètres sont passés à l'algorithme principal par valeur. Dans le cas d'un paramètre formel de type tableau, le passage vers l'algorithme principal se fait par adresse, car le nom du tableau représente l'adresse mémoire du premier élément dans l'algorithme principal. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 32 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme 5 Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 33 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Variable locale Variable locale La portée d'une variable est la partie d'un algorithme où une variable peut être utilisée après sa déclaration. Une variable dénie à l'intérieur d'un sous algorithme (fonction ou procédure) est dite variable locale. Deux variables locales peuvent avoir le même nom dans deux sous algorithmes diérents. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 34 / 35 Introduction Notion de sous algorithme Notion de fonction Notion de procédure Paramètres d'un sous algorithme Paramètres Paramètre formel et paramètre eectif Passage des paramètres Portée des variables Variable globale Variable globale Une variable dénie à l'extérieur d'un sous algorithme (fonction ou procédure) est dite variable globale. Une variable globale peut être utilisée par n'importe quel sous algorithme. Hassen NAKBI ::: hassen.nakbi@gmail.com Chapitre 4 : Les sous algorithmes 21 novembre 2022 35 / 35