Vous êtes sur la page 1sur 19
Cours d’algorithmique: Procedures et Fonctions A. Larhlimi 2010 – 2011
Cours d’algorithmique: Procedures
et Fonctions
A. Larhlimi
2010 – 2011

Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19
Plan •   Sous algorithmes •   Procédures •   Fonctions A. larhlimi 2/19

Plan

Sous algorithmes Procédures Fonctions

3
3

3

3
3
3
3
3

Utilité !

Si on considère l’algorithme de tri par insertion :

Constante MAX = 20 Variables Tableau Tab(MAX) : entiers val_Courante, Permut, i, j : entier

Début Pour i 1 à MAX faire indice_Tempo i

Tant que

((indice_Tempo 0)&&(Tab(indice_Tempo) < Tab(indice_Tempo-1)))

val_tmp Tab(indice_Tempo)Tab(indice_Tempo) Tab(indice_Tempo-1)Tab(indice_Tempo-1) val_Tmp

indice_Tempo indice_Tempo -1 finTantQue

fpout

Fin

4
4

4

4
4
4
4
4

Utilité !

Si on considère l’algorithme de tri par insertion :

Constante MAX = 20 Variables Tableau Tab(MAX) : entiers val_Courante, Permut, i, j : entier

Début Pour i 1 à MAX faire indice_Tempo i

Tant que

((indice_Tempo 0)&&(Tab(indice_Tempo) < Tab(indice_Tempo-1)))

val_tmp Tab(indice_Tempo)Tab(indice_Tempo) Tab(indice_Tempo-1)Tab(indice_Tempo-1) val_Tmp

indice_Tempo indice_Tempo -1 finTantQue

fpout

Fin

Simplification : Permutation (valeur1, valeur2)

5
5
5

5

5
5
5
5
5
5
5
5
5
5

Schéma d’un algorithme

Données

Initialisation des traitements Traitements Communication des résultats
Initialisation des
traitements
Traitements
Communication
des résultats
Données Initialisation des traitements Traitements Communication des résultats Résultats A. larhlimi 5/19

Résultats

A. larhlimi

5/19

6
6
6

6

6
6
6
6
6
6
6
6
6
6

Schéma d’un algorithme

Données

Initialisation des traitements Traitements Communication des résultats
Initialisation des
traitements
Traitements
Communication
des résultats
des traitements Traitements Communication des résultats Résultats A. larhlimi Données Initialisation des

Résultats

Traitements Communication des résultats Résultats A. larhlimi Données Initialisation des traitements

A. larhlimi

Données

Initialisation des traitements Sous-algo 1 Sous-algo 1 Sous-algo 1
Initialisation des
traitements
Sous-algo 1
Sous-algo 1
Sous-algo 1
Communication des résultats
Communication des
résultats

Résultats

6/19

7
7

7

7
7
7
7
7

Principe

Un algorithme principal fait appel à des sous algorithmes

Les sous algorithmes prennent momentanément le contrôle de l’exécution du traitement Les sous algorithmes sont conçus pour des tâches bien définies, ils peuvent être indépendants de l’algorithme appelant Un sous algorithme peut appeler un autre sous algorithme

Deux types de sous algorithmes : procédures et fonctions

A. larhlimi

7/19

Communication d’information algorithme Appelant Paramètres en donnée Paramètres en résultat Paramètres en donnée

Communication d’information

algorithme

Appelant

Paramètres en donnée

Paramètres en résultat

Paramètres en donnée et résultat

Sous algorithme

Appelé

Paramètres et arguments Algorithme appelant Arguments Paramètres en donnée Paramètres en résultat Algorithme

Paramètres et arguments

Algorithme appelant Arguments

Paramètres en donnée

Algorithme appelant Arguments Paramètres en donnée Paramètres en résultat Algorithme appelant Paramètres

Paramètres en résultat

Algorithme appelant Paramètres

Nombre de paramètres = nombre d’arguments Il doit y avoir une correspondance entre les types de paramètres et les types d’arguments

Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,
Procédures et fonctions •   Une procédure est un ensemble d’instructions référencé par un nom,

Procédures et fonctions

Une procédure est un ensemble d’instructions référencé par un nom, et dont l’exécution est provoquée par le simple énoncé de ce nom

Mot clé : procedure

Une fonction est une procédure qui possède une valeur de sortie dont le type est bien défini

Mot clé : fonction

Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou
Les procédures •   Une procédure admet des arguments en entrée/ sortie, en entrée ou

Les procédures

Une procédure admet des arguments en entrée/ sortie, en entrée ou en sortie

Son traitement consiste à modifier les valeurs des variables données en arguments

Elle possède un entête et un corps

Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )
Procédure : notation algorithmique •   Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments )

Procédure : notation algorithmique

Déclaration de la procédure

Procédure Nom_Procedure(Liste des arguments) {Description du traitement de la procédure} Paramètres Constante Variables

Début

Fin

Instructions

Appel depuis l’algorithme appelant

Nom_Procedure(Liste des arguments)

Procédure : notation algorithmique •  Déclaration de la procédure Procédure Nom_Procedure(Liste des arguments)
Procédure : notation algorithmique
•  Déclaration de la procédure
Procédure Nom_Procedure(Liste des arguments)
{Description du traitement de la procédure}
Paramètres
Constante …
Variables …
Paramètres de la procédure en donnée (D) ou en référence (R)
Variables et constantes internes

Début

Fin

Début Fin Instructions

Instructions

Appel dans le programme principal

Nom_Procedure(Liste des arguments)

Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en
Les fonctions •   Une fonction ne modifie pas la valeurs de ses arguments en

Les fonctions

Une fonction ne modifie pas la valeurs de ses arguments en entrée

Elle se termine par une instruction de retour qui rend un résultat et un seul

On l’utilise toujours dans une expression

(affectation,

)

Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique •   Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des

Fonction : notation algorithmique

Déclaration du corps d’une fonction

Fonction Nom_Fonction(Liste des arguments) {Description du traitement de la procédure} Paramètres Valeur de sortie Constante Variables

Début

Instructions Retourner (Valeur)

Fin

Appel de la fonction depuis l’algorithme appelant

Fonction : notation algorithmique •  Déclaration du corps d’une fonction Fonction Nom_Fonction(Liste des
Fonction : notation algorithmique
•  Déclaration du corps d’une fonction
Fonction Nom_Fonction(Liste des arguments)
{Description du traitement de la procédure}
Paramètres
Retourne
Constante …
Variables …
Paramètres de la fonction
Valeur de sortie de la fonction
Variables et constantes internes

Début

Début Instructions Retourner (Valeur) Fin

Instructions Retourner (Valeur)

Fin

Appel de la fonction depuis l’algorithme appelant

Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  
Comparaison : fonction et procédure •   Points communs ▫   Même déclaration ▫  

Comparaison : fonction et procédure

Points communs

Même déclaration Arguments et paramètres

Points de divergence

Arguments non modifiables dans les fonctions Les procédures ne renvoient pas de valeurs

Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro
Exemple : Bloc de conversion de monnaies Fonction Convertir(Val : entier ) {Conversion de l’euro

Exemple : Bloc de conversion de monnaies

Fonction Convertir(Val : entier) {Conversion de l’euro au dollar } Paramètres Val : Entier Retourne Val_Out : entier Constante TAUX = 1.30 Variables Val_Dollar : entier

Début

Val_Dollar Val * TAUX Retourner (Val_Dollar)

Fin

Procédure Convertir(Val_In : entier, Val_Out : entier) {Conversion de l’euro au dollar } Paramètres Val_In : Entier (D), Val_Out : Entier (R) Constante TAUX = 1.30

Début

Val_Out Val_In * TAUX

Fin

A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème
A retenir : pourquoi les sous algorithmes? •   Permettre une analyse descendante du problème

A retenir : pourquoi les sous algorithmes?

Permettre une analyse descendante du problème

Identifier les différents traitements

Mise au point progressive

Organiser l’enchaînement des étapes

Faciliter la maintenance et le débugage des algorithmes