В заголовке процедуры или функции может быть задан список параметров, которые называются формальными. Название "формальные" эти параметры получили в связи с тем, что в этом списке заданы только имена для обозначения исходных данных и результатов работы процедуры, а при вызове подпрограммы на их место будут подставлены конкретные значения (выражений) и имен.
 Список формальных параметров, указываемых в заголовке подпрограммы, может включать в себя
 параметры-значения;
 параметры-переменные
 параметры-процедуры
 параметры-функции
 нетипизированные параметры
 В списке должны быть перечислены имена формальных параметров и их типы. Имя параметра отделяется от типа двоеточием, а параметры друг от друга — точной с запятой. Имена параметров одного типа можно объединять в подсписки, в которых имена отделяются друг от друга запятой.
 Между формальными и фактическими параметрами должно быть полное ее соответствие:
 • формальных и фактических параметров должно быть одинаковое количество.
 • порядок следования фактических и формальных параметров должен быть один и тот же;
 • тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра.
 
 Параметры-значения(передающие).Параметры-значения используются только для передачи исходных данных из основной программы в подпрограмму (процедуру функцию), в списке формальных параметров они перечисляются через запятую с обязательным указанием их типов
 procedure Abort(M: byte);
 function Step(N : integer; X : real): real;
 Если формальный параметр объявлен как параметр-значение, то:
 фактическим параметром может быть произвольное выражение.
 перед вызовом процедуры значение фактических параметров вычисляются и используются как начальные значения для формальных параметров, притом, полученный результат помещается во временную память и передается процедуре. Даже если фактический параметр - простейшее выражение в виде константы или переменной, все равно процедуре будет передана лишь копия этой константы (переменной).
 В процессе выполнения подпрограммы формальные параметры могут изменяться, но это никак не отразится на соответствующих фактических параметрах, которые сохранят те значения, которые имели до вызова подпрограммы, так как в подпрограмме меняются не они, а их копия. Поэтому параметры-значения нельзя использовать для передачи результатов из подпрограммы в основную программу.
 
 Параметры-переменные(возвращающие). Параметры-переменные используются для возвращения результатов выполнения процедуры и в списке формальных параметров записываются после зарезервированного слова var с обязательным указанием типа.
 Если параметр объявлен как параметр-переменная то:
 его фактическим параметром может быть только переменная тождественного типа
 при вызове процедуры ей передается сама переменная, а не ее копия, и изменение переменой приводит к изменению фактического параметра в вызывающей программе.
 Зам! Параметры-переменные могут использоваться только в процедурах!