Vous êtes sur la page 1sur 12

SOUS-PROGRAMMES

PARTIE 3 : FONCTION
- Introduction
- Notion d’un sous programme
- Déclaration, Appel, Paramètres …
- Procédures : déclaration et appel
- Fonctions : déclaration et appel
- Paramètres formelles et effectifs.
- Passage/Transmission de paramètres

Réalisé par : OUZEGGANE Redouane


Département de Technologie
Faculté de Technologie – Université A.Mira, Bejaia
Année Universitaire 2015/2016
DÉCLARATION D’UNE FONCTION
Déclaration d’une fonction - Syntaxe
Program <nom_programme>;
Uses wincrt; Paramètres Formelles
{Déclaration} & type de la fonction
{Déclaration des constantes et variables …..}

{Déclaration d’une fonction …..}


Function <nom_fonction> ( p1:type1; p2:type2; …; pn:TypeN) : TypeFonction;
{Déclaration}
{Déclaration des constantes et variables (Données locales) …..}
Begin {Début de la fonction}
{La partie instruction de la fonction}
<nom_fonction> := <resultat_calcule>; {Une fonction se termine toujours une affectation}
End. {Fin de la fonction}
BEGIN {Début du Programme Principal}
{La partie instruction}
END. {Fin du Programme Principal}

1ère Année Technologie 01/11 Année Universitaire : 2015/2016


DÉCLARATION D’UNE FONCTION
Déclaration d’une fonction – Remarques
 Bonnes pratiques :

 Éviter d’utiliser les données (variables/constantes) globales dans une


fonction – La fonction doit être autonome.

 Utiliser uniquement les paramètres pour communiquer avec une


fonction.

 Éviter de faire les lectures (et éventuellement) les écritures à l’intérieur


d’une fonction.

1ère Année Technologie 02/11 Année Universitaire : 2015/2016


DÉCLARATION D’UNE FONCTION
Déclaration d’une fonction – Exemple
Program Combinaison;
Uses wincrt;
{Déclaration}
var n , k , c : integer; nf , kf , nkf : integer;
Le type de la fonction est entier (La
{Déclaration d’une procédure …..} fonction doit retourner un résultat
Function factoriel ( n : integer) : integer; entier)
{Déclaration}
var i, f: integer;
Begin {Début de la procédure} Il y un seul paramètre formel :
f := 1; - n : entier (paramètre d’entrée)
for i:=2 to n do
f := f * i;
factoriel := f; Une fonction doit se terminer par
End. {Fin de la procédure} une affectation
BEGIN {Début du Programme Principal}
{La partie instruction}
END. {Fin du Programme Principal}
1ère Année Technologie 03/11 Année Universitaire : 2015/2016
APPEL À UNE FONCTION
Appel à une fonction - Syntaxe
Program <nom_programme>;
Uses wincrt; Paramètres Formelles et
{Déclaration} type de la fonction
{Déclaration des constantes et variables …..}
{Déclaration d’une fonction…..}
function <nom_fonction> ( p1:type1; p2:type2; …; pn:TypeN):typeFonction;
{Déclaration}
Begin {Début de la fonction}
….
End. {Fin de la fonction} Paramètres Effectifs

BEGIN {Début du Programme Principal}


Souvent, une fonction est appelée dans la partie droite d’une
instruction1; instruction2; … affectation :
… - <id_var> := <nom_fonction>(<paramètres>);
<id_var> := <nom_fonction>(
Appel_procedure vp1, vp2, ….., vpn);
- <id_var> := Expression_contenant_la fonction;

END. {Fin du Programme Principal}

1ère Année Technologie 04/11 Année Universitaire : 2015/2016


APPEL À UNE FONCTION
Appel à une fonction – Exemple
Program Combinaison;
Uses wincrt;
{Déclaration}
var n, k, c : integer; nf, kf, nkf : integer;
{Déclaration de la fonction factoriel …..}
fonction factoriel( n : integer) : integer;
{Déclaration} Il y un seul paramètre effectif :
var i, f: integer;
Begin {Début de la procédure} - n : passage par valeur (la valeur de n
f := 1; qui sera passé)
for i:=2 to n do
f := f * i;
factoriel := f;
End. {Fin de la procédure} Le résultat est la fonction elle-même
BEGIN {Début du Programme Principal} ( nf := factoriel(n) ). Donc, factoriel(n)
…. représente une valeur calculée par
nf := factoriel (n);
Appel_fonction l’exécution des instructions de la fonction.
….
END. {Fin du Programme Principal}

1ère Année Technologie 05/11 Année Universitaire : 2015/2016


DÉROULEMENT - UNE FONCTION
Appel à une fonction – Déroulement
Program Combinaison; Variables du P.P. Factoriel
Uses wincrt;
… k kf n nf i f n
{Déclaration}
var n, k, c : integer; nf, kf, nkf : integer; … / / 4 0

{Déclaration d’une procédure …..} / 0 4


Procedure factoriel( n : integer; var f : integer);
{Déclaration} / 1 4
Attendre le Résultat
var i: integer; 2 21 4
Begin {Début de la procédure}
f := 1; 3 61 4
for i:=2 to n do
f := f * i; 4 24
1 4
factoriel := f; Factoriel := 24
End. {Fin de la procédure}
/ 4 24
BEGIN {Début du Programme Principal}
….
nf := factoriel (n);
…. Factoriel (n) sera remplacé par
END. {Fin du Programme Principal} la valeur 24
Donc nf = 25

1ère Année Technologie 06/11 Année Universitaire : 2015/2016


DÉROULEMENT - UNE FONCTION
Appel à une fonction – Exécution

Programme
principal
Données Fonction
- n, k, c, nf, kf, nkf factoriel
Données
Instructions i= 234/ , n= / 4, f= / 24
6120
…. Instructions
n=4
f := 1;
nf := factoriel(n);
for i:=2 to n do
.. Fact
o riel = f := f * i;
24

nf = 24 factoriel := f

1ère Année Technologie 07/11 Année Universitaire : 2015/2016


FONCTIONS
Remarques

 Le nombre de paramètres effectifs doit être le même que les


paramètres formels.

 Chaque paramètre effectif doit être du même type (ou type


homogène) que le paramètre formel correspondant.

1ère Année Technologie 08/11 Année Universitaire : 2015/2016


FONCTIONS
Remarques

 Pour le passage de paramètre par valeur, le paramètre effectif


peut être : Valeur immédiate (4.14), Constante (PI), Variable
(x) ou expression (x+y/2).

 Eviter d’utiliser les paramètre passage par variables pour une


fonction (Sauf dans le cas nécessaire).

1ère Année Technologie 09/11 Année Universitaire : 2015/2016


FONCTION
Remarques

 Lors d’appel à une fonction, les valeurs de touts les paramètres


effectifs seront transmis aux paramètres formels correspondant

 Lorsque l’exécution de la fonction est terminée, le résultat est


retourné par l’intermédiaire de la fonction elle-même. Ainsi
l’appel sera remplacé par une valeur (Comment ?).

1ère Année Technologie 10/11 Année Universitaire : 2015/2016


DÉMONSTRATION

 Réaliser la fonction Factoriel présentée dans ce résumé du cours.

 Calculer le nombre de combinaisons Cnk


Cnk = n! / (k! * (n-k)!) si n>=k
Cnk = 0 si n<k

(Cnk est le nombre de sous-ensembles de k éléments qu’on peut


construire à partir d’un ensemble de n éléments)

1ère Année Technologie 11/11 Année Universitaire : 2015/2016

Vous aimerez peut-être aussi