При решении разных задач часто возникает необходимость проводить вычисления по одним и тем же алгоритмам, например, вычислять корень уравнения f(x) = 0. В языке паскаль предусмотрена возможность объединения любой последовательности операторов в самостоятельную подпрограмму, называемую процедурой. Процедуры, используемые во многих задачах, помещены в библиотеку процедур и находятся в памяти ЭВМ (оперативной либо внешней).
Те алгоритмы, которые программистом оформляются как процедуры в его собственной программе, должны начинаться с заголовка и кончаться оператором END;
здесь N - имя процедуры, PI - формальные параметры, TI - их типы.
Процедура имеет ту же структуру, что и главная программа (PROGRAM): разделы LABEL, CONST, TYPE, VAR и выполняемую часть (от BEGIN до END;).
Процедура помещается в главной программе после раздела VAR и перед BEGIN программы.
Пример.
Формальные параметры - это наименования переменных, через которые передается информация из программы в процедуру либо из процедуры в программу.
Пусть, например, процедура SQ осуществляет решение квадратного уравнения ax2 + bx + c = 0. Тогда она должна иметь пять
формальных параметров: для значений коэффициентов a, b, с и для результатов: х1 и х2.
Для того чтобы запустить процедуру в работу, необходимо к ней обратиться (ее вызвать). Вызов процедуры N производится оператором вида
Здесь N - имя процедуры, P1, Р2, Р3 - фактические параметры.
При вызове процедуры машина производит следующие действия. Устанавливает взаимно однозначное соответствие между фактическими и формальными параметрами, затем управление передает процедуре. После того, как процедура проработает, управление передается вызывающей программе на оператор, следующий за вызовом процедуры.
Соответствие между фактическими и формальными параметрами должно быть следующим:
а) число фактических параметров должно быть равно числу формальных параметров;
б) соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Соответствующие параметры не обязательно должны быть одинаково обозначены.
Пример. Вызвать процедуру SQ можно так:
Здесь P,Q,R коэффициенты квадратного уравнения, a Y и Z - корни этого уравнения. Если вызвать SQ оператором SQ(X1,X2,A,B,C); то машина воспримет Х1, Х2, А как коэффициенты уравнения, а корни зашлет в переменные В и С.
Пример. Составим процедуру SQ решения квадратного уравнения ax2 + bx + c = 0 в предположении, что дискриминант неотрицателен.
С помощью этой процедуры решим квадратное уравнение 5,7y2 - 1,2y - 8,3 = 0
Результат Xl=0.49, X2=-5.2.
Как видно из примера, процедура помещается после декларативных операторов программы. Первым выполняется оператор обращения к процедуре
Здесь первые три фактические параметра соответствуют формальным А, В, С, а последние два фактических параметра Y1 и Y2 соответствуют формальным XI и Х2. После того как процедура "запустится", в ячейки А, В, С попадут числа 5.7, -1.2, -8.3 и начнут выполняться операторы D:= . .., Х1: = . . ., Х2:=. . .
После окончания работы процедуры управление возвратится к оператору WRITELN, который отпечатает результат. Параметры процедур могут быть четырех видов: параметры-значения, параметры-переменные, параметры-процедуры, параметры-функции.