Как отмечено выше, при вызове подпрограммы между ней и главной программой происходит обмен информацией. В момент вызова подпрограмма получает данные, необходимые для её выполнения (входные параметры), а после завершения их обработки может в случае необходимости передать главной программе результаты счёта (выходные параметры).
Обмен данными между главной программой и процедурой может осуществляться с использованием фактических и формальных параметров.
Фактические параметры – это те исходные данные, которые передаются в подпрограмму с целью их обработки.
Фактическими параметрами, в общем случае, могут быть константы, выражения, имена переменных. Они должны присутствовать в операторах вызова подпрограммы, которые размещаются в тех точках главной программы, где этого требует алгоритм задачи.
Оператор вызова процедуры состоит только из обращения к процедуре (аналог - обращение к стандартной функции) и имеет вид
имя процедуры (список фактических параметров);
Допустим, что у нас имеется процедура treug, которая вычисляет площадь треугольника по трём его сторонам a, b и c. Тогда вызывающий оператор может выглядеть так
treug (a, b, c);
или
treug(1.2, 2.3, 1.5);
В первом случае фактическими параметрами, задающими длины сторон треугольника, являются имена переменных, а во втором – константы.
Формальные параметры используются при описании процедуры. Формальными параметрами могут быть только имена переменных. Они располагаются в заголовке процедуры, вид которого
Procedure имя процедуры (список формальных параметров);
Формальные параметры являются как бы двойниками фактических параметров и выполняют две функции:
1) на этапе разработки процедуры с их помощью показывают, как процедура обрабатывает исходные данные, т.е. они наряду с другими переменными используются для описания алгоритма, который выполняет процедура;
2) во время обращения к процедуре каждый её формальный параметр принимает значение фактического; именно поэтому списки формальных и фактических параметров должны быть согласованы по количеству элементов, порядку их следования и типу.
Это значит, что формальных и фактических параметров должно быть одинаковое количество, порядок их следования в своих списках в направлении слева направо должен быть одним и тем же и, наконец, тип каждого фактического параметра должен совпадать с типом соответствующего ему формального.
Формальные параметры процедуры делятся на входные и выходные.
Входные параметры могут принимать значения фактических параметров, изменятьих в ходе выполнения процедуры нельзя. Их описание в заголовке процедуры выглядит так: