Последовательность инструкций
Часто, работая над программой, программист замечает, что некоторая последовательность инструкций встречается в разных частях программы несколько раз. Например, в листинге 6.1 приведена программа пересчета веса из фунтов в килограммы. Обратите внимание, что инструкции, обеспечивающие ввод исходных данных из полей редактирования, расчет и вывод результата (в листинге они выделены фоном), есть как в процедуре обработки события на кнопке Вычислить, так и в процедуре обработки события OnKeyPress в поле Edit1.
Листинг 6.1. Пересчет веса из фунтов в килограммы.
unit Unit1; 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 ButtonlClick(Sender: TObject); procedure EditlKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} // щелчок на кнопке Вычислить procedure TForml.Button1Click(Sender: TObject); var f: real; // вес в фунтах kg: real; // вес в килограммах begin f: = StrToFloat(Edit1.Text); kg: = f; * 0.4059; Label2.Caption: = Edit1.Text + ' ф. – это ' + FloatToStrF(kg, ffGeneral, 4, 2} + 'кг.'; end; // нажатие клавиши в поле ввода исходных данных procedure TForml.Edit1KeyPress(Sender: TObject; var Key: Char); var f: real; // вес в фунтах kg: real; // вес в килограммах begin if Key = Char(VK_RETURN) then begin f: =. StrToFloat(Editl.Text); kg: = f * 0.4059; Label2.Caption: = Editl.Text + ' ф. – это ' + FloatToStrF(kg, ffGeneral, 4, 2) + 'кг.'1.; end; end; end.
Можно избежать дублирования кода в программе. Для этого надо оформить инструкции, которые встречаются в программе несколько раз, как подпрограмму, и заменить инструкции, оформленные в виде подпрограммы, инструкцией вызова подпрограммы.