Vous êtes sur la page 1sur 9

ASD1 - Chapitre 5: Les sous-programmes Oct.

2022

Algorithmes et Structures de données


(ASD 1)

Les sous-programmes

Ahmed Dridi
dridi.isik@gmail.com

Objectifs du chapitre

Connaître et manipuler les


sous-programmes:
procédures et fonctions

1
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Introduction
On peut souvent confronter à Solution:
des problèmes complexes Diviser pour régner:
nécessitant des algorithmes décomposer le problème initial
sophistiqués (de grande taille, en sous problèmes de moindre
avec des parties compliqués et Complexité, et de chercher
des blocs d'instructions une solution à chacun.
peuvent se répéter plusieurs
fois)  Programmation modulaire:
La lisibilité
Difficile d’avoir une vision
La structuration
globale sur le fonctionnement
Facilité de maintenance
de programme et de toute
modifications ultérieurs
Réutilisation des programmes
(correction des erreurs) (Gain de temps), …
3

Introduction
Structure Générale d'un programme modulaire
Programme Principal
Const|Type|Var
Sous-programme SP1

Sous-programme SPn

Début
Appel SP1

Appel SPn

FinPP
4

2
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Types de sous-programme
Procédure Fonction
un ensemble d'instructions regroupées sous un nom, et qui réalise
un traitement particulier. Définis dans l’entête de l’algorithme et
peuvent être appeler et exécuter dans son corps plusieurs fois.
peuvent avoir des paramètres et des variables locales
peut contenir dans sa partie déclaration
d’autres sous-programmes qui à leur tour peuvent contenir
d'autres sous-programmes
retourner une, plusieurs ou retourner une et une seule
aucune valeur valeur

Procédures
Déclaration:
PROCEDURE Nom_Procédure ( [Var]NomPar: TypePar, …)
Déclaration des variables locales (Const, Types, Var,…)
Début
Traitement
Fin

La première ligne s’appelle l’en-tête de la procédure.


La liste des paramètres formels est une suite de données à échanger avec le
programme principal ou d’autres sous-programmes.
Les variables locales sont des variables internes à la procédure,
nécessaires pour exécuter sa tâche.

3
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Procédures
Appel:
DébutProgPrincipal
Nom_Procédure (NomPar,…)
//Traitement
FinPP

La déclaration d’une procédure n’entraîne pas son exécution. Pour


l'exécuter, il faut l'appeler dans le programme principal ou un autre sous-prog
Les paramètres utilisées lors de l'appel d'une procédure sont appelés
paramètres effectifs.
Les paramètres formels et les paramètres effectifs doivent correspondre en
nombre, en type et en ordre. Les noms peuvent se différer.

Les différent types de variables


Variable globale Variable locale
déclarée au début de déclarée dans un sous prog
l’algorithme principale.
Elle peut être utilisée dans le Elle ne peut être utilisée qu’à
corps principal de l’algorithme l’intérieur de sous-prog dans
ou par les différentes sous-prog. lequel est crée (n'est pas
connues à l’extérieur).

4
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Les différent types de paramètres


Paramètres Formels Paramètres effectifs
spécifiés dans la déclaration figure dans l’instruction d’appel
du sous-programme de sous-programme
ils servent juste à représenter la Ils sont déclarés dans le
structure et le fonctionnement programme principale, et ils
de sous-programme. peuvent avoir des valeurs
Leurs valeur n'est pas connue Ils transmettent leurs valeurs
lors de la création de sous- aux paramètres formels lors de
prog. l'exécution de sous-prog.

Les différent types de paramètres


Exemple: Algorithme qui lit deux entiers, calcul et affiche la somme
Algorithme Somme
Var
X,Y: entier
Procedure Somme (A,B:entier)
Var //Déclaration du procédure
 Variables globales
S: entier  Variable locales
Début
SA+B  Paramètres formels
Écrire (S) //Affichage de resultat  Paramètres effectifs
Fin
Début
Écrire ("Donner deux entiers")
Lire (X,Y)
Somme(X,Y) //Appel du procédure
Fin
10

5
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Les différent types de paramètres


Exemple: Algorithme qui lit deux entiers, calcul et affiche la somme
Algorithme Somme
Var
X,Y, Z: entier
Procedure Somme (A,B:entier; Var S:entier)
Var //Déclaration du procédure
 Variables globales
Début  Variable locales
SA+B
Fin  Paramètres formels
Début  Paramètres effectifs
Écrire ("Donner deux entiers")
Lire (X,Y)
Somme(X,Y,Z) //Appel du procédure
Écrire (Z) //Affichage de resultat
Fin

11

Les modes de passage des paramètres


Passage par valeur Passage par variable (adresse)
le paramètre formel reçoit le paramètre formel reçoit
uniquement une copie de la l'adresse du paramètre effectif
valeur du paramètre effectif
La valeur du paramètre effectif La valeur du paramètre effectif
ne sera jamais modifiée. sera modifiée.

/*affiche 10*/ /*affiche 10*/


/*affiche 5*/ /*affiche 10*/
12

6
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Les modes de passage des paramètres


Type de Paramètre Mode de passage
Entré (Donnée) Valeur
Sortie (Résultat)
Variable (adresse)
Entré/Sortie

13

Fonctions
Déclaration:
Fonction Nom_Fonction ([Var]NomPar: TypePar, …): Type
Déclaration des variables locales (Const, Types, Var,…)
Début
Traitement
Nom_Fonction Valeur/Expression (Résultat)
Fin

Remarques:
Dans une fonction, le passage de tous les paramètres se fait uniquement par
valeur.
Une fonction contient toujours une instruction de la forme NomF  Expression

14

7
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Fonctions
Appel:
DébutProgPrincipal
Appel Nom_Fonction (NomPar,…)
//Traitement
FinPP

L'appel d'une function peut se faire par:


Affectation: Variable  NomFonction(paramètres effectifs)
Instruction d'écriture: Ecrire (NomFonction(paramètres effectifs))
Une comparaison: Exemple TantQue (NomFonction(Paramètres)<n) Faire

15

Fonctions
Exemple: Algorithme qui lit deux entiers, calcul et affiche la somme
Algorithme Somme Algorithme Somme
Var Var
X,Y: entier X,Y: entier
Procedure Somme (A,B:entier) Fonction Somme (A,B:entier):entier
Var //Déclaration du procédure
Var //Déclaration du fonction
S: entier S: entier
Début Début
SA+B SA+B
Écrire (S) //Affichage de resultat SommeS
Fin Fin
Début Début
Écrire ("Donner deux entiers") Écrire ("Donner deux entiers")
Lire (X,Y) Lire (X,Y)
Somme(X,Y) //Appel de la procédure Écrire (Somme(X,Y))
Fin Fin//Appel du function et affichage du résultat
16

8
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022

Exercices:
1. Écrire une procédure qui lit deux entiers A et B strictement
positifs.
2. Écrire une fonction qui utilise l'algorithme d'Euclide afin de
déterminer le PGCD des deux entiers A et B.
-Si A=B alors PGCD (A,B) = A
-Si A>B alors PGCD (A,B) = PGCD(A-B,B)
-Si A<B alors PGCD (A,B) = PGCD(A,B-A)
3. Écrire une fonction qui cherche le plus petit multiple de A qui
est en même temps multiple de B.
-pgcd(a, b) x ppcm(a, b) = a x b
4. Écrire un algorithme programme principal qui permet de
calculer et d'afficher le PGCD et le PPCM de deux entiers

17

Vous aimerez peut-être aussi