Лекция: Пример на правила видимости и передачи параметров
unit factorials;
uses... ;
var
k,n,m: integer; {глобальные целые переменные}
p:extended;
ch: char; {глобальная литерная переменная}
function fact1(n:integer): extended;{процедура-функция, передача
входного параметра n по значению}
var i: integer;
begin
if n=0 then n:=1;
result:=1;
for i:=1 to n do result:=result*i;
end;
procedure fact2;{процедура, передача входного параметра через
глобальную переменную n, возврат результата через
глобальную переменную p}
var i: integer;
result:extended;
begin
if n=0 then n:=1;
result:=1;
for i:=1 to n do result:=result*i;
p:=result;
end;
procedure fact3(n:integer; var r:extended);{процедура, передача
входного параметра n по значению,
возврат результата через параметр r по имени}
var i: integer;
result:extended;
begin
if n=0 then n:=1;
result:=1;
for i:=1 to n do result:=result*i;
r:=result;
end;
function fact4(n:integer):extended; {процедура-функция, передача
входного параметра n по значению, побочный
эффект – изменение глобальной переменной m}
var
i: integer;
begin
if n=0 then n:=1;
result:=1;
for i:=1 to n do result:=result*i;
fact4 =result;
m:=m+1;{побочный эффект}
end;
begin {тело основной программы}
k:=…;
m:= 0;n:=…;p=…;
case ch of
'1': p := fact1( n );
'2': fact2 ;
'3': fact3( n, p );
'4': p := fact4( n );
end;
……
End.