Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Если теперь в другом модуле написать предложение

Читайте также:
  1. X. Производство и предложение
  2. А теперь о порядке работы и о том, как работать с отдельными листами набора.
  3. А) Работа над предложением
  4. БИЗНЕС ПРЕДЛОЖЕНИЕ
  5. В отличие от всех других факторов производства предложение земли
  6. Вопрос № 9. Товарное предложение на рынках сельхоз продукции
  7. Денежное предложение. Денежные агрегаты. Денежное обращение
  8. Денежный рынок. Спрос, предложение и равновесие на денежном рынке.
  9. Дети и внуки вождей. Где они теперь живут и что делают?
  10. Дробно-рациональные уравнения c модулем

Глава VI МОДУЛИ

 

Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты интерфейсного раздела (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующего раздела. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

Роль модулей в Delphi не исчерпывается только механизмом раздельной компиляции. Delphi связывает с каждым включаемым в программу окном собственный модуль и таким способом локализует все свойства окна в отдельной программной единице. Основная программа весьма специфична: она содержит перечень всех используемых модулей и несколько исполняемых операторов, обеспечивающих создание нужных окон и связь программы с Windows. Вся основная работа программы управляется кодом, содержащимся в модулях.

Модуль имеет следующую структуру:

unit < имя >

Interface

< интерфейсная часть >

Implementation

< исполнительная часть >

Initialization

< инициирующая часть >

Finalization

< завершающая часть >

END.

Здесь Unit 1 – единица; < имя > - имя модуля:

interface интерфейс, начинает интерфейсную часть модуля;

implementation выполнение, начинает исполняемую часть;

initialization – инициация, начинает инициирующую часть модуля;

finalization завершение, начинает завершающую часть модуля;

END – признак конца модуля.

Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением

Uses < сп. модулей >

Uses – использует; < сп. модулей > - список модулей, с которыми устанавливается связь; элементами списка являются имена модулей, отделяемые друг от друга запятыми. Например, Uses Windows, SysUtils, MyUnit;

В интерфейсной части модуля содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и/или другим модулям. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок, например,

Unit Cmplx

Interface

type

Complex = record

re, im: Real

end;

Function Addc (x, y,: Complex): Complex;

Function Mulc (x, y,:Complex): Complex;

Если теперь в другом модуле написать предложение

USES Cmplx;

то в нём станут доступными тип Complex и две процедуры – Addc и Mulc из модуля Cmplx.

Исполняемая часть содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и подпрограммы, а также метки, если они используются в инициирующей части.

Описанию подпрограммы, объявленной в интерфейсной части, в исполняемой части должен предшествовать заголовок, в котором можно опускать список формальных переменных (и тип результата для функции), так как они описаны в интерфейсной части.

Но если заголовок подпрограммы приводится в полном виде, т.е. со списком формальных параметров и объявлением результата, он должен совпадать с заголовком, объявленным в интерфейсной части. Повторение заголовка в исполняемой части должно быть полным и точным.

Инициирующая и завершающая части чаще всего отсутствуют вместе с начинающими их словами initialization.

В инициирующей части размещаются операторы, которые исполняются до передачи управления основной программе и обычно используются для подготовки её работы. Например, в них могут инициироваться переменные, открываться нужные файлы и т.д. В завершающей части указываются операторы, выполняющиеся после завершения работы основной программы (в них освобождаются выделенные программе ресурсы, закрываются файлы и т.д.). Если несколько модулей содержат инициирующие части, эти части выполняются последовательно друг за другом в порядке перечисления модулей в предложении Uses главной программы. Если несколько модулей содержат завершающие части, эти части выполняются последовательно друг за другом в порядке, обратном перемещению модулей в предложении Uses главной программы.

 

 

Доступ к объявленным в модуле объектам.

Пусть, например, мы создаём модуль, реализующий арифметику комплексных чисел (такая арифметика в Object Pascal не предусмотрена). Арифметика комплексных чисел реализуется 4-мя функциями:

Unit Cmplx (Library Complex);

// -----------------------------

Interface

//------------------------------

type Complex = record; (T Complex = record);

re, im: real; +

END; +

Function Addc (x, y: Complex): Complex; -

Function Subc (x, y: Complex): Complex; -

Function Mulc (x, y: Complex): Complex; -

Function Divc (x, y: Complex): Complex; -

Сonst -

C: Complex = (re: 0.1; от -1); -

//---------------------------- -

Implementation -

//--------(Cmplx)-------(T)------------- (T)

Function Addc (x,y: Complex); Complex;

// Сложение комплексных чисел

begin +

Result. re:= x. re + y. re; +

Result. im: = x. im + y. im; +

end; //Addc (T) (T) -

(Cmplx)

Function Subc (x, y: Complex): Complex;

// Вычитание комплексных чисел -

Begin

Result. re: = x. re – y. re; +

Result. im: = x. im – y. im; +

end; // Subc +

(Cmplx) (T) T

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 * y. re + x. im * y. im)/Z; +

Result. Im: = (x. re * y. Im – x. Im * y. re)/Z; +

except +

Result. re: = 1.1 e 309; +

Result. Im = 1.1 e 309; +

End; -

End (Divc); +

End.

Exports

CmplxAdd Index 1 name ‘ADDC’------------?-------?-----

CmplxSub Index 2

CmplxMul Index 3

CmplxDiv Index 4

begin

END.

Чтобы создать такой модуль, следует сначала с помощью опции File/New вызвать каталог репозитория и на странице New выбрать пиктограмму для включения в программу пустого модуля без связанного с ним окна. Текст модуля следует сохранить в файле CMPLX. PAS: имя файла должно совпадать с именем модуля – только в этом случае Delphi сможет автоматически найти модуль и следить за его обновлением.

После создания модуля его имя нужно упомянуть в предложении Uses того модуля, в котором будет использоваться вновь созданные подпрограммы, типы константы (в нашем модуле – тип Complex, подпрограммы AddC, SubC, MulC, DivC и константа C).




Дата добавления: 2015-01-30; просмотров: 95 | Поможем написать вашу работу | Нарушение авторских прав

<== 1 ==> | 2 |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав