Les variables du programme principal sont accessibles dans une procédure à moins que celles-ci ne soient redéclarées en variables locales ou en paramètres formels.
program ex1;
var n, x : integer;
procedure P1(var a : integer);
begin
a:=x+1;
end;
begin
n:=0;
x:=1;
P1(n);
writeln(n);
end.
est différent de
program ex1;
var n, x : integer;
procedure P1(var a : integer);
var x : integer;
begin
a:=x+1;
end;
begin
n:=0;
x:=1;
P1(n);
writeln(n);
end.
: Modifier une variable globale dans une procédure s'appelle un effet de bord. A éviter car peut induire des erreurs très difficiles à retrouver.
program ex1;
var n, x : integer;
procedure P1(var a : integer);
begin
x:=x+1;
a:=x+1;
end;
begin
n:=0;
x:=1;
P1(n);
writeln(n);
end.