You are on page 1of 14

SOUS-PROGRAMMES

PARTIE 4 :
DIVERS & BONNES
PRATIQUES
- Eviter d'accéder aux variables globales
- Eviter de réaliser deux traitements dans le même SP
- Comment utiliser le type tableau comme paramètre ?
- Comment transformer une procédure à une fonction ?
- Comment transformer une fonction à une procédure ?

Réalisé par : OUZEGGANE Redouane


Département de Technologie
Faculté de Technologie – Université A.Mira, Bejaia
Année Universitaire 2015/2016
ACCÈS AUX VARIABLES GLOBALES

Programme
principal Procedure
Données Puissance
N : integer; Données
x , p: : real; i : integer;
Instructions Instructions
Read(N,X) P := 1;

Puissance; For i:=1 to N do


P := P*x;
Write(P)

1- La procédure Puissance dépends des variables N et P


2- On ne peut pas utiliser cette procédure dans une autre programme !

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


ACCÈS AUX VARIABLES GLOBALES
Paramètre d’entrée
(passage par valeur)
Programme
principal
Données
x n
N : integer;
x , p: : real;
Procédure
Instructions
Puissance
Read(N, X)

Puissance; P = xn

Write(P)
Paramètre de sortie
(passage par variable)

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


ACCÈS AUX VARIABLES GLOBALES
Paramètre d’entrée

Paramètre de sortie

Paramètres effectifs

Un Sous-programme Communique avec l’environnement externe uniquement en


utilisant les paramètres (Paramètres entrées / Paramètre de sortie)

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


DEUX TRAITEMENTS DANS LE MÊME S.P.

Soit une procédure qui permet de calculer n! ainsi que la puissance xn :

Un sous programme doit avoir une seule


« RESPONSABILITÉ »

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


DEUX TRAITEMENTS DANS LE MÊME S.P.

On doit écrire deux procédures, par exemple :

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


TYPE TABLEAU DANS LES S.P.

ERREUR

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


TYPE TABLEAU DANS LES S.P.
1ère Solution

2ème Solution

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


TRANSFORMER UNE PROCÉDURE À UNE FONCTION

Pour Tout appel à la procédure factoriel :


factoriel (m, fm);
function facoriel(n:logint) : longint;
Devient un appel à la fonction factoriel :
var
fm
i:longint; f:longint; := factoriel (m);
Begin {Début de la fonction factoriel}
f := 1;
for i := 1 to n do
f := f*i;
factoriel := f; {Affecter le résultat à la fonction}
End; {Fin de la fonction factoriel}

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


TRANSFORMER UNE PROCÉDURE À UNE FONCTION

Transformer une Procédure à une Fonction


1. remplacer le mot clé procedure par le mot clé function ;
2. supprimer le paramètre formel avec transmission par variable ;
3. le type du paramètre formel supprimé devient le type de la fonction ;
4. créer une variable locale dans le fonction (le même que le paramètre formel
supprimé) ;
5. ajouter, à la fin du corps de la fonction, l’instruction suivante :
<nom_fonction> := <parametre_formel_supprimé>;
6. Pour tout appel à la procédure de la forme suivante :
<Nom_Procedure>(p1, p2, …pn, PFR); devient:
PFR := <Nom_Fonction>(p1, p2, …pn);

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


TRANSFORMER UNE FONCTION À UNE PROCÉDURE

procedure puissance(x:real; n:integer; var z :real);


var
i:longint; p:real;
Begin {Début de la procédure puissance}
p := 1;
for i := 1 to n do
p := p*i;
puissance
z := p; := p; {Affecter le résultat à la fonction}
End; {Fin de la procédure puissance}

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


TRANSFORMER UNE FONCTION À UNE PROCÉDURE

Pour Tout appel à la fonction puissance :


p := puissance(5.25, 2+1);
procedure puissance(x:real; n:integer; var p :real);
Devient un appel à la procédure puissance:
var
puissance(5.25, 2+1, p);
i:longint; p:real;
Begin {Début de la procédure puissance}
p := 1;
for i := 1 to n do
p := p*i;
puissance
End; {Fin de :=
la p; {Affecter
procédure le résultat à la fonction}
puissance}

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


TRANSFORMER UNE FONCTION À UNE PROCÉDURE

Transformer une Fonction à une Procédure


1. remplacer le mot clé function par le mot clé procedure ;
2. supprimer le type de la fonction et ajouter un paramètre formel par variable, du même
type que la fonction, à la nouvelle procédure ;
3. si le paramètre formel (par variable) ajouté est un nouvel identificateur, on replace la
dernière instruction de la fonction par : <paramètre_formel_ajouté> :=
<résultat_calculé>;
4. si le paramètre formel (par variable) ajouté a le même identificateur de la variable local
résultat, supprimer, la dernière instruction de la fonction (Affectation du résultat à la
fonction)
5. Pour tout appel à la fonction de la forme suivante :
<id_var_res> := <Nom_Fonction>(p1, p2, …pn); devient:
<Nom_Procedure>(p1, p2, …pn, <id_var_res>);
1ère Année Technologie 12/13 Année Universitaire : 2015/2016
RÉSUMÉ

1 Un Sous-programme Communique avec l’environnement externe uniquement


en utilisant les paramètres (Paramètres entrées / Paramètre de sortie)

2 Un Sous-programme doit réaliser un seul traitement et calculer un seul


résultat (Possède une seule RESPONSABILITÉ)

3 Pour utiliser le type Tableau (Vecteur / Matrice) comme paramètre, soit on


déclare un nouveau type, ou nous utilisons Array Of <type>

4 Pour transformer une procédure à une fonction (ou vise-versa), un ensemble


d’étapes doivent être appliquées

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

You might also like