“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 240 — #250
i
i
i
i
i
i
i
i
240
5
• La programmation avec état explicite
Nous codons cet exemple ainsi :
proc {Sqr A}
A:=@A * @A
end
local C={NewCell 0} in
C:=25
{Sqr C}
{Browse @C}
end
Pour l’appel {Sqr C}, le A à l’intérieur de Sqr est un synonyme du C à l’extérieur.
Le passage par valeur (« call by value »)
Une valeur est passée à la procédure et mise dans une cellule locale à la procédure.
L’implémentation est libre de copier la valeur ou de passer une référence, pourvu que
la procédure ne puisse pas changer la valeur dans l’environnement à l’appel. Voici un
exemple :
procedure sqr(a:integer);
begin
a:=a+1;
browse(a*a)
end;
sqr(25);
Nous codons cet exemple ainsi :
proc {Sqr D}
A={NewCell D} in
A:=@A+1
{Browse @A * @A}
end
{Sqr 25}
La cellule A est initialisée avec l’argument de Sqr. Le langage Java utilise le passage
par valeur pour les valeurs et les références aux objets (voir section 6.5).
Le passage par valeur-résultat (« call by value-result »)
C’est une modification du passage par variable. Quand la procédure est appelée, le
contenu d’une cellule (une variable affectable) est mis dans une autre cellule locale à
la procédure. Quand la procédure retourne, le contenu actuel de cette dernière est mis
dans la première. Voici un exemple :
i
i
i
i
i
i
i
i
240
5
• La programmation avec état explicite
Nous codons cet exemple ainsi :
proc {Sqr A}
A:=@A * @A
end
local C={NewCell 0} in
C:=25
{Sqr C}
{Browse @C}
end
Pour l’appel {Sqr C}, le A à l’intérieur de Sqr est un synonyme du C à l’extérieur.
Le passage par valeur (« call by value »)
Une valeur est passée à la procédure et mise dans une cellule locale à la procédure.
L’implémentation est libre de copier la valeur ou de passer une référence, pourvu que
la procédure ne puisse pas changer la valeur dans l’environnement à l’appel. Voici un
exemple :
procedure sqr(a:integer);
begin
a:=a+1;
browse(a*a)
end;
sqr(25);
Nous codons cet exemple ainsi :
proc {Sqr D}
A={NewCell D} in
A:=@A+1
{Browse @A * @A}
end
{Sqr 25}
La cellule A est initialisée avec l’argument de Sqr. Le langage Java utilise le passage
par valeur pour les valeurs et les références aux objets (voir section 6.5).
Le passage par valeur-résultat (« call by value-result »)
C’est une modification du passage par variable. Quand la procédure est appelée, le
contenu d’une cellule (une variable affectable) est mis dans une autre cellule locale à
la procédure. Quand la procédure retourne, le contenu actuel de cette dernière est mis
dans la première. Voici un exemple :
