Процедура. Объявление процедуры.
Процедура – это разновидность подпрограммы. Обычно подпрограмма реализуется как процедура в двух случаях:
- когда подпрограмма не возвращает в основную программу никаких данных. Например, вычерчивает график в диалоговом окне;
- когда подпрограмма возвращает в вызвавшую ее программу больше чем одно значение. Например, подпрограмма, которая решает квадратное уравнение, должна вернуть в вызвавшую ее программу два дробных числа – корни уравнения.
Объявление процедуры
В общем виде объявление процедуры выглядит так:
procedure Имя (var параметр1: тип1;… var параметрК: типК); var // здесь объявление локальных переменных begin // здесь инструкции процедуры end;
Где:
- procedure – зарезервированное слово языка Delphi, обозначающее, что далее следует объявление процедуры;
- имя – имя процедуры, которое используется для вызова процедуры;
- параметр K – формальный параметр, переменная, которая используется в инструкциях процедуры. Слово var перед именем параметра не является обязательным. Однако если оно стоит, то это означает, что в инструкции вызова процедуры фактическим параметром обязательно должна быть переменная.
Параметры процедуры используются для передачи данных в процедуру, а также для возврата данных из процедуры в вызвавшую ее программу.
В качестве примера в листинге 6.5 приведена процедура решения квадратного уравнения (которое в общем виде записывается так: ах2 + bх+ с = 0). У процедуры шесть параметров: первые три предназначены для передачи в процедуру исходных данных – коэффициентов уравнения; параметры x1 и х2 используются для возврата результата – корней уравнения; параметр ok служит для передачи информации о том, что решение существует.
Листинг 6.5. Процедура SgRoot.
// решает квадратное уравнение procedure SqRoot(a,b,c: real; var x1,x2: real; var ok: boolean); { a,b,c – коэффициенты уравнения x1,x2 – корни уравнения ok = True – решение есть ok = False – решения нет } var d: real; // дискриминант begin d: = Sqr(b) -4*a*c; if d < 0 then ok: = False // уравнение не имеет решения else begin ok: = True; x1: = (-b + Sqrt(d)) / (2*a); x2: = (b + Sqrt(d)) / (2*a); end; end;