Vous êtes sur la page 1sur 23

UNIVERSITÉ CONSTANTINE 3

FACULTÉ DE MÉDECINE
DÉPARTEMENT DE PHARMACIE

Chapitre IV
Fonctions et Procédures

1
Dr Asma BENCHIHEB
Plan
Introduction
Les Fonctions
Déclaration d’une fonction
Appel d’une

Les Procédures
Déclaration d’une procédure
Appel d’une procédure

Les modes de transmission

2
Introduction
Fonctions Mathématique :

F(x,y,z) = x + 2y +z : F(1,2,3) = F(x=1, y=2, y=3) = 8

Sous programmes G(x)= sinx : G(π /2 ) = G(x= π /2 ) = 1

Procédures

3
Les Fonctions Déclaration d’une fonction
FONCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat
Variable
VarLocal1 : typeVarLocal1
…..
VarLocalN : typeVarLocalN
Syntaxe DEBUT

Algorithmique { corps de la fonction}


NomFonction < valeur ou Expression >
FIN

FUNCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat ;


Var
VarLocal1 : typeVarLocal1 ;
…..
VarLocalN : typeVarLocalN ;
Syntaxe Begin
Pascal { corps de la fonction}
NomFonction := < valeur ou Expression > ;
End;

4
Les Fonctions Déclaration d’une fonction
FONCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat
Variable
VarLocal1 : typeVarLocal1
…..
VarLocalN : typeVarLocalN Nom de la fonction type du résultat retourné
par la fonction
Syntaxe DEBUT

Algorithmique { corps de la fonction}


NomFonction < valeur ou Expression >
FIN

FUNCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat ;


Var
VarLocal1 : typeVarLocal1 ;
…..
Nom de la fonction type du résultat retourné
VarLocalN : typeVarLocalN ;
par la fonction
Syntaxe Begin

Pascal { corps de la fonction}


NomFonction := < valeur ou Expression > ;
End;

5
Les Fonctions Déclaration d’une fonction
FONCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat
Variable
VarLocal1 : typeVarLocal1
…..
VarLocalN : typeVarLocalN Paramètres formels
Syntaxe DEBUT

Algorithmique { corps de la fonction}


NomFonction < valeur ou Expression >
FIN

FUNCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat ;


Var
VarLocal1 : typeVarLocal1 ;
…..
VarLocalN : typeVarLocalN ; Paramètres formels
Syntaxe Begin
Pascal { corps de la fonction}
NomFonction := < valeur ou Expression > ;
End;

6
Les Fonctions Déclaration d’une fonction
FONCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat
Variable
VarLocal1 : typeVarLocal1
…..
VarLocalN : typeVarLocalN Types des Paramètres formels
Syntaxe DEBUT

Algorithmique { corps de la fonction}


NomFonction < valeur ou Expression >
FIN

FUNCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat ;


Var
VarLocal1 : typeVarLocal1 ;
…..
VarLocalN : typeVarLocalN ; Types des Paramètres formels
Syntaxe Begin
Pascal { corps de la fonction}
NomFonction := < valeur ou Expression > ;
End;

7
Les Fonctions Déclaration d’une fonction
FONCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat
Variable
VarLocal1 : typeVarLocal1
….. Variables locales
VarLocalN : typeVarLocalN
Syntaxe DEBUT

Algorithmique { corps de la fonction}


NomFonction < valeur ou Expression >
FIN

FUNCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat ;


Var
VarLocal1 : typeVarLocal1 ;
….. Variables locales
VarLocalN : typeVarLocalN ;
Syntaxe Begin
Pascal { corps de la fonction}
NomFonction := < valeur ou Expression > ;
End;

8
Les Fonctions Déclaration d’une fonction

A retenir :

- Les variables locales sont définies et reconnues par la fonction uniquement (où elles sont déclarées) donc,
elles ne peuvent pas être accessibles ni par le programme principal ni par les autres fonctions ou procédures.
Ainsi, dès que se termine l’exécution de la fonction, ces variables locales disparaissent de la mémoire.
- Une fonction doit toujours renvoyer un seul résultat. Ce dernier est contenu dans son nom.
- Les paramètres de la fonction sont des variables qui vont recevoir des données. Ces dernières proviennent du
programme ou du sous-programme appelant.

9
Les Fonctions Appel d’une fonction

 on doit utiliser le nom de la fonction suivi de ses paramètres effectifs placés entre parenthèse
Syntaxe Algorithmique X  NomFonction(var1, var2, .. varN)
Syntaxe Pascal X := NomFonction(var1, var2, .. varN)

 La fonction peut être utilisée dans une expression


Exemple 1
Syntaxe Algorithmique X  A* NomFonction(var1, var2, .. varN) + B
Syntaxe Pascal X := A* NomFonction(var1, var2, .. varN) + B ;
 La fonction peut être utilisé dans un affichage.
Exemple 2
Syntaxe Algorithmique Afficher( ‘ x=’, NomFonction(var1, var2, .. varN) )
Syntaxe Pascal Writeln ( ‘ x=’, NomFonction(var1, var2, .. varN) ) ;

10
Les Fonctions Exemple
Exemple 3: Ecrire un algorithme qui utilise la fonction pour le calcul d’un périmètre d’un rectangle.

11
Les Procédures Déclaration d’une procédure

Syntaxe Algorithmique Syntaxe Pascal


Procédure NomProcedure ( A1 : typea1, A2 : typea2,.., An : typean ; Procedure NomProcedure ( A1 : typea1, A2 : typea2,.., An : typean ;
Var B1 : typeb1, B2 : typeb2,.., Bn : typebn ) ; Var B1 : typeb1, B2 : typeb2,.., Bn : typebn ) ;
Var
Var VarLocal1 : typeVarLocal1 ;
VarLocal1 : typeVarLocal1 ; …..
….. VarLocalN : typeVarLocalN ;
VarLocalN : typeVarLocalN ;

Début
Begin
{corps de la procédure} {corps de la procédure}
B1 := <expression1> ; B1 := <expression1> ;
…….. ……..
Bn := <expressionN> ; Bn := <expressionN> ;

Fin ; End ;

NomProcedure nom de la procédure


A1, .., An paramètres d’entrés pour une transmission par valeur des données
B1, .., Bn paramètres d’entrés pour une transmission par adresse des données
typea1, .., typean, typeb1, .., typebn type du paramètre
VarLocal1, .., VarLocalN les variables locales
typeVarLocal1, .., typeVarLocalN les types des variables locales
12
Les Procédures Appel d’une procédure

 on doit utiliser le nom de la procédure suivi de ses paramètres


effectifs placés entre parenthèse

NomProcedure (Variable_1, Variable _2,.., Variable _N)

Exemple 4: Ecrire un algorithme qui calcul les racines réelles des


équations du second ordre de la forme : 𝑎 ∙ 𝑥2 + 𝑏 ∙ 𝑥 + 𝑐 = 0

13
Les Procédures Exemple
Algorithme Racine
Variable a, b, c, X1, X2, Signe: réel
Procédure
Procédure Calcul
Solutions (a,b,(a,c b,
: réels ; ;
c : réels
Var Signe, X1,X2
Var Signe, X1,X2 : réels) : réels); ;
Variable
Variable
Delta
Delta :: réel
réel
Début
Début
Delta 
Delta  b*bb*b –– 4*a*c
4*a*c
Si (Delta
Si (Delta ≥0.)
≥0.) alors
alors Déclaration et
Signe
Signe =1=1 définition de la
𝑋1(−𝑏
𝑋1(−𝑏 + + 𝑆𝑞𝑟𝑡(𝐷𝑒𝑙𝑡𝑎))/(2
𝑆𝑞𝑟𝑡(𝐷𝑒𝑙𝑡𝑎))/(2 × × 𝑎)
𝑎)
𝑋2(−𝑏 procédure
𝑋2(−𝑏 − 𝑆𝑞𝑟𝑡(𝐷𝑒𝑙𝑡𝑎)/(2 × 𝑎)
− 𝑆𝑞𝑟𝑡(𝐷𝑒𝑙𝑡𝑎)/(2 × 𝑎)
Sinon
Sinon
Afficher
Afficher (‘Pas
(‘Pas dede Solution
solutionsréels’)
réels’)
Signe =-1
Signe =-1
FinSi
FinSi
Fin
Fin {Fin
{Fin dede la
la procédure
procédure Calcul}
Calcul}
DEBUT
Afficher (’a =’)
Lire (a)
Afficher (‘b =‘)
Lire (b)
Afficher (‘c =‘)
Lire (c)
Signe = 0
Appel de la
Solutions (a,b,c, Signe ,X1,X2)
procédure
Si (Signe =1) alors
Afficher (‘X1 =‘, X1)
Afficher (‘X2 =‘, X2)
FinSi
Afficher (‘Fin de calcul ‘) 14
FIN
Les Modes de transmission
Les paramètres formels utilisés dans les déclarations des sous-programmes/sous-algorithmes (fonction
ou procédure) permettent d’avoir deux types de transmission :
 transmission par valeur
 transmission par adresse (ou variable ou référence).

15
Les Modes de transmission Transmission par valeur
La transmission par valeur consiste à copier la valeur transférer au sein du sous-algorithme pour que
ce dernier puisse l’utiliser dans ses calculs sans jamais modifier la valeur originale.
Le paramètre transmis par valeur n'est jamais affecté par les modifications dans la procédure ou la
fonction.
Pour réaliser une transmission par valeur d’une variable, il faut juste spécifier son nom et son type dans
la liste des paramètres formels.

FUNCTION NomFonction (Param1 : type1, Param2 : type2,.., ParamN : typeN) : typeResultat ;

Variables transmises par valeur

PROCEDURE NomProcedure ( A1 : typea1, A2 : typea2,.., An : typean ;


Var B1 : typeb1, B2 : typeb2,.., Bn : typebn ) ;
16
Les Modes de transmission Transmission par adresse

Dans une transmission par adresse (ou par référence ou par variable), lors de l’appel du sous-
algorithme/sous-programme, il y a non seulement copie des valeurs mais également une transmission
des adresses des variables
Le paramètre transmis dans ce cas peut être modifié et on récupère le résultat dans la variable.

PROCEDURE NomProcedure ( A1 : typea1, A2 : typea2,.., An : typean ;


Var B1 : typeb1, B2 : typeb2,.., Bn : typebn ) ;

Variables transmises par adresse

17
Les Modes de transmission Exemple
Exemple 5 : Observer les écritures des deux algorithmes ci-dessous et déduire les valeurs des variables
A et B qui seront affichées à la fin.

18
Les Modes de transmission Exemple
Exemple 6 : Observer l’écriture de l’algorithme ci-dessous et déduire les valeurs affichées dans
chaque cas :

19
Les Modes de transmission Exemple
Exemple 6 : Observer l’écriture de l’algorithme ci-dessous et déduire les valeurs affichées dans
chaque cas :

Ici b est une variable globale sans être


un paramètre formel de la fonction.
Elle peut être modifiée à l’intérieur du
sous-programme et cette modification
sera conservée même en quittant le
sous-programme

20
Les Modes de transmission Exemple
Exemple 7 : Observer l’écriture de l’algorithme ci-dessous et déduire les valeurs affichées de x
dans chaque cas :

21
Les Modes de transmission Exemple
Exemple 7 : Observer l’écriture de l’algorithme ci-dessous et déduire les valeurs affichées de x
dans chaque cas :

Ici x est déclarée comme variable


globale et une autre variable locale
au sous-programme MODIF porte
le même nom x. Toute modification
de x à l’intérieur du sous-
programme ne sera pas conservée à
la sortie de ce sous-programme: il
faut faire très attention à ne jamais
confondre une variable locale avec
une variable globale même si elles
portent le même nom.
22
Les Modes de transmission Exemple
Exemple 8 : Écrire un programme qui lit les valeurs d’un tableau de dimension maximale égale à 10 et de type entier
puis fait appel à un sous programme qui multiplie chacun de ses éléments par 3.

Algorithme Exemple8
Type
Table : TABLEAU [1..10] DE entier
Variable
i, N : entier
Tab : Table;
Procédure MultMAT (N : integer ; Var Tab : Table);
Var j: integer
Début
Pour j De 1 A N Faire
Tab [j] 3 * Tab [j]
FinPour
Fin
Début
Afficher (’Donnez la dimension N du tableau avec N≤ 10 : N=’)
Lire (N)
Pour i De 1 A N Faire
Afficher (‘Table[‘, i, ‘] =‘)
Lire (Table [i])
FinPour
MultMAT (N, Tab);
Pour i De 1 A N Faire
Afficher (‘Table[‘, i, ‘] =‘, Table [i] )
FinPour
Fin
23

Vous aimerez peut-être aussi