Последовательность инструкций
В листинге 6.2 приведена программа пересчета веса из фунтов в килограммы, в которой ввод исходных данных, вычисления и вывод результата объединены в подпрограмму, реализованную как функция.
Листинг 6.2. Пересчет веса из фунтов в килограммы (использование процедуры).
unit Onit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCTRLs; type TForm1= class(TForm) Label1: TLabel; // пояснительный текст Edit1: TEdit; // поле ввода веса в фунтах Button1: TButton; // кнопка Вычислить Label2: TLabel; // поле вывела результата procedure Button1Click(Sender: TObject); procedure EditlKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} // процедура программиста procedure FuntToKg; var f: real; // вес в фунтах kg: real; // вес в килограммах begin f: = StrToFloat(Form1.Edit1.Text); kg: = f * 0.4059; Forml.Label2.Caption: = Forml.Edit1.Text + ' ф. – это ' + FloatToStrF(kg, ffGeneral, 4, 2) + 'кг.'; end; // щелчок на кнопке Вычислить procedure TForml.ButtonlClick(Sender: TObject); begin FuntToKg; // вызов процедуры FuntToKg end; // нажатие клавиши в поле ввода исходных данных procedure TForm1.EditlKeyPress(Sender: TObject; var Key: Char); begin if Key = Char(VK_RETURN) then FuntToKg; // вызов процедуры FuntToKg end; end.
Преимущества использования подпрограмм очевидны. Во-первых, в программе нет дублирования кода, что сокращает трудоемкость создания программы, делает более удобным процесс отладки и внесения изменений. Представьте, что нужно изменить пояснительный текст, выводимый программой пересчета веса из фунтов в килограммы. В программе, не использующей подпрограмму, нужно просмотреть весь текст и сделать необходимые изменения. Если программа использует подпрограмму, то изменения надо внести только в текст подпрограммы. Во-вторых, значительно повышается надежность программы.
Следует обратить внимание, что подпрограммы используют не только тогда, когда нужно избежать дублирования кода. Удобно большую задачу разделить на несколько подзадач и оформить каждую задачу как подпрограмму. В этом случае значительно улучшается "читаемость" программы и, как следствие, существенно облегчается процесс отладки.
Подпрограмма – это небольшая программа, которая решает часть общей задачи. В языке Delphi есть два вида подпрограмм – процедура и функция.
У каждой подпрограммы есть имя, которое используется в программе для вызова подпрограммы (процедуры).
Отличие функции от процедуры состоит в том, что с именем функции связано значение, поэтому функцию можно использовать в качестве операнда выражения, например, инструкции присваивания.
Как правило, подпрограмма имеет параметры. Различают формальные и фактические параметры.
Параметры, которые указываются в объявлении функции, называются формальными. Параметры, которые указываются в инструкции вызова процедуры, называются фактическими.
Параметры используются:
- для передачи данных в подпрограмму;
- для получения из результата подпрограммы.
В общем случае в качестве фактического параметра процедуры можно использовать выражение, тип которого должен совпадать с типом соответствующего формального параметра.