ИНИЦИИРУЮЩАЯ И ЗАВЕРШАЮЩАЯ ЧАСТИ
Инициирующая и завершающая части чаще всего отсутствуют Вместе с начинающим их словами initialization и finalization. В инициирующей части размещаются операторы, которые исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут инициироваться переменные, открываться нужные файлы и т. д. В завершающей части указываются операторы, выполняющиеся после завершения работы основной программы (в них освобождаются выделенные программе ресурсы, закрываются файлы и т. д.). Если несколько модулей содержат инициирующие части, эти части выполняются последовательно друг за другом в порядке перечисления модулей в предложении uses главной программы. Если несколько модулей содержат завершающие части, эти части выполняются последовательно друг за другом в порядке, обратном перечислению модулей в предложении uses главной программы. ДОСТУП К ОБЪЯВЛЕННЫМ В МОДУЛЕ ОБЪЕКТАМ Пусть, например, мы создаем модуль, реализующий арифметику комплексных чисел (такая арифметика ни в стандартном Паскале, ни в Object Pascal не предусмотрена, но в Delphi 6 введен пользовательский вариант, который реализует действия над комплексными Числами - см. п. 10.5 и модуль Source\Rtl\Common\VarCmplx.pas Каталога размещения Delphi). Арифметика комплексных чисел реализуется четырьмя функциями: Unit Cmplx; //--------------------------- Interface //--------------------------- Type Complex = record re,im: real end; Function AddC (x,y: Complex): Complex; Function SubC (x,y: Complex): Complex; Function MuiC (x,y: Complex): Complex; Function DivC (x,y: Complex): Complex; Const с: Complex = (re: 0.1; im: -1); //--------------------------- Implementation //--------------------------- Function AddC (x,y: Complex): Complex; // Сложение комплексных чисел Begin Result.re:= x.re + y.re; Result.im:= x.im + y.im end; //AddC Function SubC (x,y: Complex): Complex; // Вычитание комплексных чисел Begin Result.re:= x.re - y.re; Result.im:= x.im - y.im end; //SubC Function MulC (x,y: Complex): Complex; // Умножение комплексных чисел Begin Result.re:= x.re * y.re - x.im * y.im; Result.im:= x.re * y.im + x.im * y.re end; //MulC Function DivC (x,y: Complex): Complex; // Деление комплексных чисел Var z: Real; begin z:= sqr(y.re) + sqr(y.im); // Защищаем программу от краха в случае, когда z=0: try- Result, re:= (x.re * у.re + x.im * y.im) / z; Result.im:= (x.re * y.im - x.im * y.re) / z; except Result.re:= l.le309; Result.im:= l.le309; End End {Div.C}; End. Чтобы создать такой модуль, следует вызвать опцию File | New I unit[ В Delphi 1 для этого используетсяопция File | New | Unit, в версиях 2...5 - опция File | New и выбор пиктограммы на закладке New окна Репозитория. ]. Текст модуля следует сохранить в файле cmplx.pas: имя файла должно совпадать с именем модуля - только в этом случае Delphi сможет автоматически найти модуль и следить за его обновлением. После создания модуля его имя нужно упомянуть в предложении uses того модуля, в котором будут использоваться вновь созданные подпрограммы, типы, константы (в нашем модуле - тип complex, подпрограммы Addc, subc. Mule, Dive и константа с). Пусть, например, при каждом щелчке по кнопке bbRun учебной программы создается пара случайных комплексных чисел, над которыми осуществляются все четыре арифметических действия. Тогда обработчик bbRunClickмог бы быть таким: Implementation uses Cmplx; {$R *.DFM} procedure Tform1.bbRunClick(Sender: TObject); Var x,y,z: Complex; procedure Output(Operation: Char); //Осуществляет нужное действие и выводит результат в mmOutput Var S: String; Begin case Operation of '+': z := AddC(x,y); '-': z:= SubC(x,y); '*': z:= MulC(x,y); '/': z:= DivC(x,y); End; S:= '('+FormatFloat('+0.0000;-0.0000',x.re)+ FormatFloat('+O.OOOOj;-O.OOOOj',x.im)+')' +0peration+ mmOutput.Lines.Add(S); end; //Output begin //bbRunClick x.re:= Random; x.im := Random; y.re:= Random; y.im:= Random; Output('+'); Output('-'); Output ('*'); Output ('/'); mmOutput.Lines.Add(''); End; Обратите внимание на ссылку uses cmpix в самом начале исполняемой части - именно она делает доступными обработчику bbRunClick объекты модуля Cmplx. Эту ссылку можно вставить с помощью среды Delphi: выберите опцию File | Use Unit и в появившемся окне щелкните по имени модуля Сmplx.
|