Обмен аргументами и результатами между программой и подпрограммой (процедурой или функцией) производится через формальные и фактические параметры.
Формальные параметры– это параметры, указываемые при описании подпрограммы.
Фактические параметры– это параметры, указываемые при вызове подпрограммы.
Параметр-значение– это параметр, который описан без слов var или const, и он передаётся по значению, например:
FunctionAddSquare(a, b: integer): integer;
Параметр-переменная– это формальный параметр, который описан с предваряющим ключевым словом var илиconst, и он передаётся по имени (адресу ячейки памяти), например:
Procedure Mult2(var a: integer);
Передача по значению: вычисляется значение фактического параметра и это значение присваивается соответствующему формальному параметру.
Передача по имени: при выполнении подпрограммы имя формальной переменной заменяется на имя соответствующей фактической переменной.