Asd1 CH5
Asd1 CH5
Asd1 CH5
2022
Les sous-programmes
Ahmed Dridi
dridi.isik@gmail.com
Objectifs du chapitre
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
3
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022
Procédures
Appel:
DébutProgPrincipal
Nom_Procédure (NomPar,…)
//Traitement
FinPP
4
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022
5
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022
11
6
ASD1 - Chapitre 5: Les sous-programmes Oct. 2022
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
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
SA+B SA+B
Écrire (S) //Affichage de resultat SommeS
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