Программа начинает свою работу со слова begin, далее выполняются последовательно операторы. Когда основная программа доходит до процедуры Sum(a,b,c), то действие основной программы на время приостанавливается, управление передается подпрограмме. После завершения работы подпрограммы, управление опять получает основная программа.
Взаимодействие по данным:
В основной программе имеются три переменные- a, b, c - это фактические параметры, они передадут значения в подпрограмму. В процедуре у нас есть формальные параметры- x,y,z. Заметим, что перед параметром z стоит служебное слово var.
При вызове процедуры Sum(a,b,c) значение переменной а присваивается параметру х, значение переменной b присваивается параметру у. Параметры х и у могут изменять своё значение внутри процедуры, но это никак не отразится на переменных а и Ь, их значение останется таким же, каким оно было до вызова процедуры (стрелочки в одну сторону). С переменой с несколько иначе: параметру z присваивается не значение переменной с, а адрес фактического параметра, после этого параметр становится его синонимом, любые операции с формальным параметром изменяют значение фактического (стрелочки в две стороны).
В списке должны быть перечислены имена формальных параметров и их типы. Имя параметра отделяется от типа двоеточием, а параметры друг от друга — точной с запятой. Имена параметров одного типа можно объединять в подсписки, в которых имена отделяются друг от друга запятой.
Между формальными и фактическими параметрами должно быть полное ее соответствие:
• формальных и фактических параметров должно быть одинаковое количество.
• порядок следования фактических и формальных параметров должен быть один и тот же;
• тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра.
Таким образом, список формальных параметров, указываемых в заголовке подпрограммы, может включать в себя
параметры-значения (передающие);
параметры-переменные (возвращающие);
Параметры-значения используются только для передачи исходных данных из основной программы в подпрограмму (процедуру функцию), в списке формальных параметров они перечисляются через запятую с обязательным указанием их типов.
procedure Abort(M: byte); function Step(N : integer; X : real): real;
Если формальный параметр объявлен как параметр-значение, то:
1. фактическим параметром может быть произвольное выражение.
2. перед вызовом процедуры значение фактических параметров вычисляются и используются как начальные значения для формальных параметров, притом, полученный результат помещается во временную память и передается процедуре. Даже если фактический параметр - простейшее выражение в виде константы или переменной, все равно процедуре будет передана лишь копия этой константы (переменной).
3. В процессе выполнения подпрограммы формальные параметры могут изменяться, но это никак не отразится на соответствующих фактических параметрах, которые сохранят те значения, которые имели до вызова подпрограммы, так как в подпрограмме меняются не они, а их копия. Поэтому параметры-значения нельзя использовать для передачи результатов из подпрограммы в основную программу.