SlideShare une entreprise Scribd logo
1  sur  14
SOUS-PROGRAMMES
PARTIE 4 :
DIVERS & BONNES PRATIQUES
Réalisé par : OUZEGGANE Redouane
Département de Technologie
Faculté de Technologie – Université A.Mira, Bejaia
Année Universitaire 2015/2016
- 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 ?
ACCÈS AUX VARIABLES GLOBALES
1ère Année Technologie Année Universitaire : 2015/2016
01/11
Programme
principal
N : integer;
x , p: : real;
Données
Instructions
Read(N,X)
Puissance;
Write(P)
Procedure
Puissance
i : integer;
Données
Instructions
P := 1;
For i:=1 to N do
P := P*x;
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 !
ACCÈS AUX VARIABLES GLOBALES
1ère Année Technologie Année Universitaire : 2015/2016
01/11
Programme
principal
N : integer;
x , p: : real;
Données
Instructions
Read(N, X)
Puissance;
Write(P)
Procédure
Puissance
x n
P = xn
Paramètre d’entrée
(passage par valeur)
Paramètre de sortie
(passage par variable)
ACCÈS AUX VARIABLES GLOBALES
1ère Année Technologie Année Universitaire : 2015/2016
01/11
Paramètre d’entrée
Paramètre de sortie
Un Sous-programme Communique avec l’environnement externe uniquement en
utilisant les paramètres (Paramètres entrées / Paramètre de sortie)
Paramètres effectifs
DEUX TRAITEMENTS DANS LE MÊME S.P.
1ère Année Technologie Année Universitaire : 2015/2016
01/11
Soit une procédure qui permet de calculer n! ainsi que la puissance xn :
Un sous programme doit avoir une seule
« RESPONSABILITÉ »
DEUX TRAITEMENTS DANS LE MÊME S.P.
1ère Année Technologie Année Universitaire : 2015/2016
01/11
On doit écrire deux procédures, par exemple :
TYPE TABLEAU DANS LES S.P.
1ère Année Technologie Année Universitaire : 2015/2016
01/11
ERREUR
TYPE TABLEAU DANS LES S.P.
1ère Année Technologie Année Universitaire : 2015/2016
01/11
1ère Solution
2ème Solution
TRANSFORMER UNE PROCÉDURE À UNE FONCTION
1ère Année Technologie Année Universitaire : 2015/2016
01/11
function facoriel(n:logint) : longint;
var
i:longint; f:longint;
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}
Pour Tout appel à la procédure factoriel :
factoriel (m, fm);
Devient un appel à la fonction factoriel :
fm := factoriel (m);
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);
TRANSFORMER UNE PROCÉDURE À UNE FONCTION
1ère Année Technologie Année Universitaire : 2015/2016
01/11
TRANSFORMER UNE FONCTION À UNE PROCÉDURE
1ère Année Technologie Année Universitaire : 2015/2016
01/11
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 := p; {Affecter le résultat à la fonction}
End; {Fin de la procédure puissance}
z := p;
TRANSFORMER UNE FONCTION À UNE PROCÉDURE
1ère Année Technologie Année Universitaire : 2015/2016
01/11
procedure puissance(x:real; n:integer; var p :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 := p; {Affecter le résultat à la fonction}
End; {Fin de la procédure puissance}
Pour Tout appel à la fonction puissance :
p := puissance(5.25, 2+1);
Devient un appel à la procédure puissance:
puissance(5.25, 2+1, p);
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>);
TRANSFORMER UNE FONCTION À UNE PROCÉDURE
1ère Année Technologie Année Universitaire : 2015/2016
12/13
RÉSUMÉ
1ère Année Technologie Année Universitaire : 2015/2016
13/13
Un Sous-programme Communique avec l’environnement externe uniquement
en utilisant les paramètres (Paramètres entrées / Paramètre de sortie)
1
Un Sous-programme doit réaliser un seul traitement et calculer un seul
résultat (Possède une seule RESPONSABILITÉ)
2
Pour utiliser le type Tableau (Vecteur / Matrice) comme paramètre, soit on
déclare un nouveau type, ou nous utilisons Array Of <type>
3
Pour transformer une procédure à une fonction (ou vise-versa), un ensemble
d’étapes doivent être appliquées
4

Contenu connexe

Plus de OlyvierNzighou1

Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptxAlgorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
OlyvierNzighou1
 
Codage_Information.pptx
Codage_Information.pptxCodage_Information.pptx
Codage_Information.pptx
OlyvierNzighou1
 

Plus de OlyvierNzighou1 (13)

Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptxAlgorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
 
Programmation en Python CPGE sup management
Programmation en Python CPGE sup managementProgrammation en Python CPGE sup management
Programmation en Python CPGE sup management
 
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
 
Support de cours et de formation en langage python pour les débutants.
Support de cours et de formation en langage python pour les débutants.Support de cours et de formation en langage python pour les débutants.
Support de cours et de formation en langage python pour les débutants.
 
Support GESPRO-2023-2024.pptx
Support GESPRO-2023-2024.pptxSupport GESPRO-2023-2024.pptx
Support GESPRO-2023-2024.pptx
 
1- Exercices de révision sur les listes.pptx
1- Exercices de révision sur les listes.pptx1- Exercices de révision sur les listes.pptx
1- Exercices de révision sur les listes.pptx
 
Codage_Information.pptx
Codage_Information.pptxCodage_Information.pptx
Codage_Information.pptx
 
Algebre_Boole-1.pptx
Algebre_Boole-1.pptxAlgebre_Boole-1.pptx
Algebre_Boole-1.pptx
 
Cybercriminalité et traitement des incidents.pptx
Cybercriminalité et traitement des incidents.pptxCybercriminalité et traitement des incidents.pptx
Cybercriminalité et traitement des incidents.pptx
 
Présentation_IBOGA_Commission_des_Lois_AN.pptx
Présentation_IBOGA_Commission_des_Lois_AN.pptxPrésentation_IBOGA_Commission_des_Lois_AN.pptx
Présentation_IBOGA_Commission_des_Lois_AN.pptx
 
AG-15-12-2023.ppt
AG-15-12-2023.pptAG-15-12-2023.ppt
AG-15-12-2023.ppt
 
Gestion_de_projetOK.pptx
Gestion_de_projetOK.pptxGestion_de_projetOK.pptx
Gestion_de_projetOK.pptx
 

Dernier

Dernier (12)

Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
 
Système National de Santé au- Maroc-(2017)."pdf"
Système National de Santé au- Maroc-(2017)."pdf"Système National de Santé au- Maroc-(2017)."pdf"
Système National de Santé au- Maroc-(2017)."pdf"
 
Formation IAT pour sonelgaz chlef algérie.ppt
Formation IAT pour sonelgaz chlef algérie.pptFormation IAT pour sonelgaz chlef algérie.ppt
Formation IAT pour sonelgaz chlef algérie.ppt
 
Les débuts de la collection "Le livre de poche"
Les débuts de la collection "Le livre de poche"Les débuts de la collection "Le livre de poche"
Les débuts de la collection "Le livre de poche"
 
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
 
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
 
Traitement des eaux usées par lagunage a macrophytes.pptx
Traitement des eaux usées par lagunage a macrophytes.pptxTraitement des eaux usées par lagunage a macrophytes.pptx
Traitement des eaux usées par lagunage a macrophytes.pptx
 
Webinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctionsWebinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctions
 
rapport de stage gros oeuvre_compressed.pdf
rapport de stage gros oeuvre_compressed.pdfrapport de stage gros oeuvre_compressed.pdf
rapport de stage gros oeuvre_compressed.pdf
 
Quitter la nuit. pptx
Quitter          la        nuit.    pptxQuitter          la        nuit.    pptx
Quitter la nuit. pptx
 
Quitter la nuit. pptx
Quitter        la             nuit.   pptxQuitter        la             nuit.   pptx
Quitter la nuit. pptx
 
PowerPoint-de-Soutenance-de-TFE-infirmier.pdf
PowerPoint-de-Soutenance-de-TFE-infirmier.pdfPowerPoint-de-Soutenance-de-TFE-infirmier.pdf
PowerPoint-de-Soutenance-de-TFE-infirmier.pdf
 

0015- Sous-programmes (Partie 4 - Divers Bonnes Pratiques).ppt

  • 1. SOUS-PROGRAMMES PARTIE 4 : DIVERS & BONNES PRATIQUES Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année Universitaire 2015/2016 - 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 ?
  • 2. ACCÈS AUX VARIABLES GLOBALES 1ère Année Technologie Année Universitaire : 2015/2016 01/11 Programme principal N : integer; x , p: : real; Données Instructions Read(N,X) Puissance; Write(P) Procedure Puissance i : integer; Données Instructions P := 1; For i:=1 to N do P := P*x; 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 !
  • 3. ACCÈS AUX VARIABLES GLOBALES 1ère Année Technologie Année Universitaire : 2015/2016 01/11 Programme principal N : integer; x , p: : real; Données Instructions Read(N, X) Puissance; Write(P) Procédure Puissance x n P = xn Paramètre d’entrée (passage par valeur) Paramètre de sortie (passage par variable)
  • 4. ACCÈS AUX VARIABLES GLOBALES 1ère Année Technologie Année Universitaire : 2015/2016 01/11 Paramètre d’entrée Paramètre de sortie Un Sous-programme Communique avec l’environnement externe uniquement en utilisant les paramètres (Paramètres entrées / Paramètre de sortie) Paramètres effectifs
  • 5. DEUX TRAITEMENTS DANS LE MÊME S.P. 1ère Année Technologie Année Universitaire : 2015/2016 01/11 Soit une procédure qui permet de calculer n! ainsi que la puissance xn : Un sous programme doit avoir une seule « RESPONSABILITÉ »
  • 6. DEUX TRAITEMENTS DANS LE MÊME S.P. 1ère Année Technologie Année Universitaire : 2015/2016 01/11 On doit écrire deux procédures, par exemple :
  • 7. TYPE TABLEAU DANS LES S.P. 1ère Année Technologie Année Universitaire : 2015/2016 01/11 ERREUR
  • 8. TYPE TABLEAU DANS LES S.P. 1ère Année Technologie Année Universitaire : 2015/2016 01/11 1ère Solution 2ème Solution
  • 9. TRANSFORMER UNE PROCÉDURE À UNE FONCTION 1ère Année Technologie Année Universitaire : 2015/2016 01/11 function facoriel(n:logint) : longint; var i:longint; f:longint; 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} Pour Tout appel à la procédure factoriel : factoriel (m, fm); Devient un appel à la fonction factoriel : fm := factoriel (m);
  • 10. 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); TRANSFORMER UNE PROCÉDURE À UNE FONCTION 1ère Année Technologie Année Universitaire : 2015/2016 01/11
  • 11. TRANSFORMER UNE FONCTION À UNE PROCÉDURE 1ère Année Technologie Année Universitaire : 2015/2016 01/11 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 := p; {Affecter le résultat à la fonction} End; {Fin de la procédure puissance} z := p;
  • 12. TRANSFORMER UNE FONCTION À UNE PROCÉDURE 1ère Année Technologie Année Universitaire : 2015/2016 01/11 procedure puissance(x:real; n:integer; var p :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 := p; {Affecter le résultat à la fonction} End; {Fin de la procédure puissance} Pour Tout appel à la fonction puissance : p := puissance(5.25, 2+1); Devient un appel à la procédure puissance: puissance(5.25, 2+1, p);
  • 13. 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>); TRANSFORMER UNE FONCTION À UNE PROCÉDURE 1ère Année Technologie Année Universitaire : 2015/2016 12/13
  • 14. RÉSUMÉ 1ère Année Technologie Année Universitaire : 2015/2016 13/13 Un Sous-programme Communique avec l’environnement externe uniquement en utilisant les paramètres (Paramètres entrées / Paramètre de sortie) 1 Un Sous-programme doit réaliser un seul traitement et calculer un seul résultat (Possède une seule RESPONSABILITÉ) 2 Pour utiliser le type Tableau (Vecteur / Matrice) comme paramètre, soit on déclare un nouveau type, ou nous utilisons Array Of <type> 3 Pour transformer une procédure à une fonction (ou vise-versa), un ensemble d’étapes doivent être appliquées 4