В подпрограммы пользователя лучше предусмотреть передачу данных в виде переменных или констант вместо передачи значений. Это позволяет передавать не копию данных, создаваемую в стеке и требующую при этом дополнительные память и время, а сами данные, что повышает быстродействие.
Function function
Sum(a,b:real):real; sum(VAR a,b:real):real;
Begin begin
Sum:=a+b; sum:=a+b;
end; end;
Еще пример
const
a:integer=5;
b:integer=7;
procedure Inc2(var c:integer;b:integer);
begin
c:=c+c;
b:=b+b;
Writeln('удвоенные :',c:5,b:5) (2)
end;
begin
Writeln('исходные :',a:5,b:5); (1)
Inc2(a,b);
Writeln('результат :',a:5,b:5) (3)
end.
исходные : 5 7
удвоенные: 10 14
результат: 10 7
В этой программе задаются два целых числа 5 и 7. Эти числа передаются процедуре Inc2, в которой удваиваются. Один параметр передается как переменная, другой - как параметр значение.
Удвоение второго формального параметра в процедуре не вызвало изменения фактической переменной b, так как этот параметр описан в заголовке процедуры как параметр-значение.
При обработке сложных типов данных часто приходится пользоваться записями (RECORD). При этом для обращения к полям записи можно использовать два способа доступа: операцию "." или оператор присоединения WITH.