Uploaded by Hazem Ardhaoui

AlgoChapitre04

advertisement
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
Download