menu prev next

Passage par adresse des paramètres
On peut aussi implémenter des procédures qui changent la valeur originale des variables prises en argument par la procédure. Afin d'illustrer cette possibilité, nous allons développer une petite procédure, que nous nommerons swap, qui prend comme arguments deux entiers et qui les échange.

Les procédures précédentes, qui acceptaient des valeurs comme arguments, ne pouvaient effectuer cette opération car elles ne travaillaient qu'avec une copie des variables originales. Afin de permettre à la procédure de modifier la valeur originale des arguments (c'est-à-dire d'accepter le passage de paramètres par adresse), on fait précéder la déclaration des paramètres (entre parenthèse derrière le nom de la fonction) par le mot-clé var.

La variable originale est par conséquent utilisée et non plus une copie de celle-ci.


	program  Variable_Parameters (output);

	procedure  SWAP ( var value1, value2 : integer );
	var   temp : integer;
	begin
	      temp := value1;
	      value1 := value2;  {value1 is actually number1}
	      value2 := temp     {value2 is actually number2}
	end;

	var   number1, number2 : integer;
	begin
	      number1 := 10;
	      number2 := 33;
	      writeln( 'Number1 = ', number1,' Number2 = ', number2 );
	      SWAP( number1, number2 );
	      writeln( 'Number1 = ', number1,' Number2 = ', number2 )
	end.

Lors de son exécution, ce programme affiche:

	Number1 = 10  Number2 = 33
	Number1 = 33  Number2 = 10


TESTEZ-VOUS
Quelle est l'erreur dans la déclaration de cette procédure?

	procedure Wrong ( A : integer; var B : integer );
	var   A : integer; B : real;

Cliquez ici pour obtenir la réponse


Copyright B Brown/P Henry/CIT, 1988-1995. Tous droits réservés.
Copyright UCL/INGI, 1995. Tous droits réservés
URL: http://candix1.fsa.ucl.ac.be/langages/Pascal/tutoriel/pas045.htm
menu prev next