sc2mosta
LE LANGAGE DE PROGRAMATION PASCAL .
 
AccueilPortailGalerieFAQRechercherS’enregistrerConnexion
Derniers sujets
» NOTES EMD2 SUITE
Lun 1 Sep - 20:03 par Anonymous

» Notes EMD2
Lun 1 Sep - 19:59 par Anonymous

» TD NO 04
Ven 30 Mai - 2:23 par Anonymous

» SUJET EMD2 ET CORRECTIONS + NOTES
Mar 27 Mai - 14:48 par Admin

» cours numéro 12
Lun 26 Mai - 20:46 par Anonymous

» NOTES EMD1
Lun 26 Mai - 12:36 par Anonymous

» TD NO 03
Ven 16 Mai - 22:54 par Anonymous

» cours numéro 04
Jeu 1 Mai - 13:36 par Anonymous

» cours numéro 06
Mar 29 Avr - 12:49 par Anonymous

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Partenaires
Rechercher
 


 Résultats par :
 
Rechercher Recherche avancée
cours numéro 12
Dim 16 Mar - 18:16 par Admin
6) Les effets de bord :

Lorsqu'une procédure (ou fonction) modifie une variable non locale, on dit qu'elle a un effet de bord (ou effet secondaire). Il est généralement conseillé aux programmeur d’éviter ce genre de situation parce que ceci entraîne souvent une difficulté à lire et à contrôler le programme en question. Il est donc préférable d'exploiter les deux modes de passage de paramètres (Par valeur ou par adresse) comme unique moyen de communication entre un programme appelant et une procédure. Plus précisément, il faut éviter la communication entre un programme et un autre via les variables globales.

Exemple: Program EffetDeBord;
Var
A: Real;
Procedure Exemple (var X : Real) ;
Var B: Real;
Begin
B := 130 ;
A := B*2 ;
X := X + A
End;
Begin
A:= 21.5;
Exemple (A) ;
Writeln (A)
End.


7) Les fonctions:
Une fonction peut être considérée comme un cas particulier d'une procédure, dans le sens où une fonction retourne toujours une valeur unique et peut avoir autant d’arguments que nécessaire.

Exemple : calcul du PGCD de deux entiers.
Program Exempledefonction ;
Var
A, B, P : Integer ;
Function PGCD (P: Integer; Q : Integer) : Integer;
Var
D: Integer;
Begin
Repeat
D := P mod Q ;
P:=Q;
Q:=D
Until D=0;
PGCD := P;
End;
Begin
Writeln (’Donner les entiers A et B: ') ;
Readln (A,B) ;
P := PGCD (A,B) ;
Writeln (‘Le PGCD de A et B est:’, P)
End.


A travers cet exemple simple nous pouvons énumérer les règles générales de déclaration et d’utilisation des fonctions :
* La déclaration d'une fonction comporte ob1igatoirement la précision du type de la fonction. Ce type représente le type du résultat retourné par la fonction.
* Le type de la fonction doit être un type simple.
* Le corps de la fonction doit obligatoirement comporter une instruction de retour du résultat.

Cette instruction se note comme une affectation dont le membre gauche est exactement le nom de la fonction. C'est généralement la dernière instruction exécutée de la fonction.

* Contrairement à l'appel d'une procédure, l'appel d'une fonction ne peut pas constituer une instruction. Un appel de fonction est généralement placé dans une expression.

Cool Règles générales concernant l'écriture de procédures et fonctions:

Bien que la structuration dès programmes en blocs soit une bonne manière d’écriture de programme, il faut cependant respecter un certain nombre de règles dont voici les principales:

b) Procédures (fonctions) imbriquées:

Le bloc d'une procédure (ou fonction) peut contenir à son tour la définition d'une autre procédure (ou fonction). Dans ce cas les règles à respecter sont:

· L'identificateur d'une procédure (ou fonction) doit être différent de l'identificateur de tout autre objet du bloc en question.

Exemple : Tri d'un tableau d'entiers par ordre croissant, en utilisant la méthode de tri par bulles.

Program Procedures_lmbriquees;

Const
Taille=20 ;
Type
Indice = 1..Taille ;
Vecteur = array [Indice] of integer;
Var
V : Vecteur;
N : Indice ;
Procedure Lire_Vecteur (var T: Vecteur; var m : Indice) ;
Var
I: Indice;
Begin
Writeln (‘Donner le nombre de composantes du vecteur: ') ;
Readln (m) ;
Writeln (‘Donner les composantes du vecteur :') ;
For I:= 1 to m Do
Read (T[I]);
End; (* Lire_Vecteur *)
Procedure Afficher-Vecteur (T : Vecteur; m : Indice) ;
Var
I: Indice;
Begin
For I := 1 To m Do Writeln(‘T’,I, '=', T[i])
End; (* proc Afficher_Vecteur *)
Procedure Tri_Vecteur (var T: Vecteur; m: Indice) ;
Var
I , J : Indice;
Procedure Permutation (K:Indice; L:Indice);
Var
Temp: Integer;
Begin
Temp := T[K]: T[k] := T(L]; T[L]:= Temp
End; (* Proc Permutation')
Begin For I :=1 To m-1 Do For J :=1+1 To m Do If T[I] > Tm Then Permutation(I, J)
End; (* proc Tri_Vecteur *)
Begin (* Programme Principal *)
Lire-Vecteur(V, N) ;
Tri_Vecteur(V, N) ;
Affichage_Vecteur(V, N)
End.


b) Appel d’une procédure par une autre procédure :

Nous avon1J déjà eu l’ocasion de voir une procédure (ou fonction) appeler une autre. Néanmoins ce genre d'appel obéi aux gègles suivantes, :

1. Une procédure (ou fonction) A peut appeler n'importe quelle autre procédure (ou fonction) B qui vérifie l'une des deux conditions suivantes :
*La procédure B est définie directement dans le bloc A.
* Le bloc , dans lequel la procédure B est définie contient le bloc dans lequel la procédure A est
Définie (on dit que B est visible à partir de A).

Program EssaiAppel
Procedure ;
procedure A;
………….
Procedure B;
…………….
Begin
……….
End;
Begin
…………
End;
Proc:dure D;
……………….
Procedure C;
………………
Proœdure E;
....................
Begin
A;
B;
End;
………….
Begin
…………
D;
A;
E;
..............
End;
Begin
E;
B;
End;
Procedure F;
Begin
C;
A;
End;
Begin

End;


2. Un apppel d'une procédure se situe généralement après sa définition, dans ce cas le compilateur n'a aucun problème pour vérifier les paramètres de l' appel, Si par contre, on veut permettre l'appel d'une procédure P avant sa définition on doit écrire la ligne suivante au début de la section de déclaration de procédure et fonctions :

Procedure P ; Forward ;

Cette ligne précise au compilateur que la procédure A sera appelée avant sa définition. En même temps, elle permet au compilateur de réaliser l’opération de vérification des paramètres lors de l’appel.

Exemple : Program EssaiAppel ;
……………………….
Procedure A ;
……………..
Begin
……………….
B ;
……………….
End ;
Procedure B ;
……………… …..
Begin
…………. ………….
End ;
Procedure C ;
…………….
Begin
…………..
A ;
……………..
End;
Begin
……………
……………
End.


Commentaires: 1
Sondage
Forum
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Utilisateurs enregistrés : Aucun


[ Voir toute la liste ]

Le record du nombre d’utilisateurs en ligne est de 5 le Lun 26 Mai - 20:41
Statistiques
Nous avons 16 membres enregistrés
L’utilisateur enregistré le plus récent est HAKIKI MUSTAPHA YACINE

Nos membres ont posté un total de 58 messages dans 21 sujets