Académique Documents
Professionnel Documents
Culture Documents
Notion de sous-programmes :
Procédures et Fonctions
Algorithme calcul_CNP
Var
Analyse du problème : I, N, P, FN, FP, FNP, CNP: entiers;
Début
n! Lire(N) ;
CNP C np
p!(n p )! Lire(P) ;
FN (* calcule du factoriel de N : FN*)
CNP
On pose FP * FNP
FN←1 ;
Objet d’Entrées : N,P Pour i←1 à N Faire
Objet de Sortie : CNP
FN←FN*i ;
Objet Intermédiaire : FN,FP,FNP
Formules : Fin Pour
Fx=1*2*3*…………….*x ; (* calcule du factoriel de P : FP*)
FN
CNP FP←1 ;
FP * FNP . Pour i←1 à P Faire
FP←FP*i ;
Fin Pour
(*calcule du factoriel de (N-P) : FNP*)
FNP←1 ;
Pour i←1 à N-P Faire
FNP←FNP*i ;
Fin Pour
CNP←FN/(FP*FNP) ;
1 Pr. R.Allaoui
Ecrire(CNP) ;
Fin
2 Pr. R.Allaoui
Dans cet algorithme, on a calculé le factoriel de 3 nombres. Ce qui induit la répétition des
mêmes lignes (du calcul factoriel) 3 fois dans le même programme. Donc l’algorithme n’est
On peut structurer cet algorithme en remplaçant ces lignes (dans le programme principale) par
l’appel d’un sous-algorithme (du calcul du factoriel). Cette opération nous permettra
Définition
fois à des endroits différents et avec des valeurs différentes dans un programme.
On prend ces lignes et on les met dans un programme à part dont le but est de constituer
En programmation on distingue deux types de S.P : les procédures et les fonctions. Leur
différence réside dans le fait qu’une fonction renvoie une valeur résultante et peut faire partie
d’une expression alors qu’une procédure ne renvoie pas directement de valeur et ne peut pas
Pour définir une procédure, il faut lui attribuer un nom (son identificateur), définir ces
paramètres et les tâches (les instructions) choisis à mettre dans cette procédure.
e1
e2
en Nom_proc
S1
S2
Sm
3 Pr. R.Allaoui
Procédure Nom_proc (e1 : type e1 , e2 : type e2 , …………….,en : type en ) (S1 : type
Début
(*corps de la procédure*)
Fin
Les ei sont des paramètres d’entrée. La procédure (Nom_proc) a besoin des paramètres
d’entrées pour s’exécuter.
Les Si sont des paramètres de sortie et ils font partie des résultats de la procédure Nom_proc.
Exemple :
Début
Sa+b ;
Fin
( La procédure somme a besoin des paramètres d’entrées a et b pour nous préparer le résultat
ceux de la définition (ei , S i ) ainsi que les types des différents paramètres de même ordre.
4 Pr. R.Allaoui
Remarque
Les ei et les Si sont appelés paramètres formels ou paramètres de définition car ils
interviennent dans la forme de la définition de la procédure.
' '
Les ei et les S i sont appelés paramètres réels ou paramètres d’appel car c’est eux qui
contiennent les valeurs à transmettre aux paramètres formels de la procédure.
factoriel. Comme les variables, une procédure avant d’être utilisée doit être déclarée c'est-à-
Algorithme calcul_CNP
procédure factoriel(m : entier)(F : entier) ; x
Factoriel
Var FX
N, P, FN, FP, FNP, CNP: entiers;
procédure factoriel(X : entier)(Fx : entier)
Début
Lire(N) ; Var
Lire(P) ; i: entier ;
Début
factoriel(N)( FN) ;
Fx←1 ;
factoriel(P)( FP) ; Pour i←1 à X Faire
factoriel(N-P)( FNP) ; Fx←Fx*i ;
CNP←FN/(FP*FNP) ; Fin Pour
fin
Ecrire(CNP) ;
Fin
5 Pr. R.Allaoui
II. Les fonctions
1. Définition d’une fonction
Une fonction se définie de la même manière que la procédure, on rajoutant à la définition de
la procédure le type de la fonction c'est-à-dire le type du résultat que la fonction retourne et
l’instruction « retourne ( valeur) » dans le corps de la fonction.
e1
e2
en Nom_fonct
S1
S2
Sm
Fonction Nom_fonct (e1 : type e1 , e2 : type e2 , …………….,en : type en ) (S1 : type S1 , S2 : type S2 ,
Var
valeur : Type_fonction ;
Début
(*corps de la procédure*)
retourne(valeur) ;
Fin
2. Appel de la fonction
Le résultat de l’appel de la fonction est une valeur. On peut trouver ces appels par tous où
l’on peut trouver consultation d’une variable. Les mécanismes mis en œuvre de l’appel sont
identiques à ceux mis en œuvre pour une procédure.
6 Pr. R.Allaoui
Exemple :
' ' '
- l’affectation R nom _ fonction(e1 , e2 )( S1 ) (R doit avoir le même type que
type_fonction).
' ' '
- Dans une expression R(2* nom _ fonction(e1 , e2 )( S1 ) )-4*a)/(c*b) ;
' ' '
- Instruction de test si nom _ fonction(e1 , e2 )( S1 ) =3 alors………
' ' '
- Affichage : écrire ( nom _ fonction(e1 , e2 )( S1 ) ) ;
Remarque :
nom _ fonction(e1' , e2' )( S1' ) 5 (85)
Cette affectation n’a aucun sens car dans ce cas on cherche à affecter une valeur à la fonction
et on ne cherche pas à consulter la valeur de la fonction (c’est comme si on voulait changer la
valeur d’une constante).
3. Résultat de la fonction
Retourne(valeur) ;
Règle :
La dernière instruction d’une fonction doit être le retour d’une valeur résultat du calcul
effectué par la fonction.
Exercice :
Ecrire une fonction permettant de calculer 2n, (n un paramètre de la fonction).
fonction calcul 2n
n
Puissance de 2
R
7 Pr. R.Allaoui
Structure d’un programme appelant cette fonction
Algorithme calcul
Var
a, p : entier ;
Début
Lire(a) ;
P←puissance_de_2(a);
Ecrire(‘le resultat est :’, P) ;
Fin
8 Pr. R.Allaoui