aide scolaire
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

le passage de paramètres:explication avancée

Aller en bas

le passage de paramètres:explication avancée Empty le passage de paramètres:explication avancée

Message  Admin Dim 13 Mar - 21:37

on a deux modes de passages de paramètres : le passage par valeur et le passage par variable

Le passage de paramètre par valeur correspond à la traduction algorithmique des paramètres uniquement en entrée de la fonction (donnée).

Le passage de paramètre par variable correspond à la traduction algorithmique des paramètres en sortie de la fonction (résultat) ou en entrée et en sortie (donnée devenant un résultat données modifiées), caractérisé par le VAR précédant les paramètres dans l’entête de la fonction ou procédure.

Voyons ceci sur des programmes exemples :

Passage de paramètres par valeur.

Program TEST_PROCEDURE_VALEUR;
var A,B,C : real;

Procedure PROC1(X,Y,Z : real);
var A,B,C : real;
begin
writeln(' début procédure X:=',X:3:2,' Y= ',Y:3:2,' Z= ',Z:3:2);
A:=X;
B:=Y;
C:=Z;
A:=A * 2;
B:=B - 1;
C:=C + 10;
X:=A;
Y:=B;
Z:=C;
writeln(' fin procédure X:=',X,' Y= ',Y,' Z= ',Z);
end;

BEGIN
A:=1.5;
B:=0.5;
C:=100.25;
writeln('avant procédure A:=',A,' B= ',B,' C= ',C);

PROC1(A,B,C);

writeln('après procédure A:=',A,' B= ',B,' C= ',C);
END.



Résultats d'exécution

avant procédure A:=1.50, B= 0.50 et C= 100.25
début procédure X:=1.50 Y= 0.50 Z= 100.25
fin procédure X:=3.00 Y= -0.50 Z= 110.25
après procédure A:=1.50, B= 0.50 et C= 100.25


PROC1 est la procédure que nous étudions, on lui passe 3 paramètres réels par valeurs (aucune modification subie par).


Passage de paramètres par variable

Program TEST_PROCEDURE_ADRESSE;
var A,B,C : real;

Procedure PROC2( VAR X,Y,Z : real);
var A,B,C : real;
begin
writeln(' début procédure X:=',X:3:2,' Y= ',Y:3:2,' Z= ',Z:3:2);
A:=X;
B:=Y;
C:=Z;
A:=A * 2;
B:=B - 1;
C:=C + 10;
X:=A;
Y:=B;
Z:=C;
writeln(' fin procédure X:=',X:3:2,' Y= ',Y:3:2,' Z= ',Z:3:2);
end;

BEGIN
A:=1.5;
B:=0.5;
C:=100.25;
writeln('avant procédure A:=',A:3:2,' B= ',B:3:2,' C= ',C:3:2);

PROC2(A,B,C);

writeln('après procédure A:=',A:3:2,' B= ',B:3:2,' C= ',C:3:2);
END.

Résultats d'exécution.

avant procédure A:=1.50 B= 0.50 C= 100.25
début procédure X:=1.50 Y= 0.50 Z= 100.25
fin procédure X:=3.00 Y= -0.50 Z= 110.25
après procédure A:=3.00 B= -0.50 C= 110.25
PROC2 est identique à PROC1 du programme précédent, mais cette fois ci les paramètres sont passés par variable (on place le mot clé VAR avant l'énumération des variables à passer par adresse)

Observations comparatives

Þ L'observation des résultats montre, que même si le corps de PROC1 et de PROC2 sont identiques ; on obtient des résultats différents.

Analysons les deux précédents programmes

Ä dans les deux cas

On affecte les mêmes valeurs aux paramètres
affichage "Avant procédure"

On exécute la procédure, et l'on note que les paramètres sont bien transmis.
affichage "début procédure"

On transfère les paramètres dans des variables internes à la procédure.

On modifie par calcul les variables internes.

On transfère les valeurs obtenues dans les paramètres.
affichage "fin procédure"

On édite les valeurs des variables globales passées en paramètres de la procédure
affichage "après procédure"

a) Après la procédure PROC1 (paramètres passés par valeur)
Les valeurs des variables passées en paramètres n'ont pas été modifiées dans le programme principal par les calculs effectués dans la procédure.

b) Après la procédure PROC2 (paramètres passés par variable)
Les valeurs des variables passées en paramètres sont le résultat des calculs opérés dans la procédure.



Admin
Admin

Messages : 137
Date d'inscription : 29/12/2010

https://aidescolaire.yoo7.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum