
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.238.189.240] |
![]() |
|
Сообщ.
#1
,
|
|
|
Что такое модуль?
Модуль это специальная разновидность программы на паскале. Он содержит описание типов данных, переменных функций или процедур и других объектов, которые затем могут используются в других программах паскаля. Подпрограмму имеет смысл включать в состав модуля в том случае, когда она реализует действие, которое приходится выполнять достаточно часто. Подпрограммы, входящие в модуль, можно написать, отладить, модуль откомпилировать один раз, а использовать многократно. Откомпилированный модуль имеет расширение TPU (TPW) и из него код функций и процедур включается в вашу программу если вы в ней их используете. Подключение модуля. Доступ к описаниям, функциям и процедурам модуля обеспечивает оператор uses, в котором указывается имя модуля. Этот оператор размещается в разделе описаний программы, сразу после заголовка. Если в программе используется не один модуль, а сразу несколько, необходимо указать имена всех модулей, перечислив их через запятую. (Исключением является модуль System, ссылка на который необязательна). Описание модуля. Модуль начинается заголовком Unit <имя модуля>; Где <имя модуля> - имя модуля, которое выбирается в соответствии с правилами Паскаля. Файл, содержащий модуль, обязан иметь то же имя, что и модуль! Структура модуля. ![]() ![]() ----------------------- | Unit name | ----------------------- | Interface | ----------------------- | Интерфейсная секция | ----------------------- | Implementation | ----------------------- | Секция реализации | ----------------------- | Секция инициализации| ----------------------- Модуль состоит из трех частей. Первая – интерфейсная секция – содержит те описания типов, переменных и других объектов данных, которые можно использовать в других программах или модулях. Она начинается с зарезервированного слова interface. Здесь приводятся не полные описания процедур и функций, а только их заголовки, которые должны совпадать с полными описаниями в секции реализации. Секция реализации начинается с зарезервированного слова implementation. Все описания, содержащиеся в секции реализации, являются локальными, их область действия – данный модуль. Здесь же содержаться полные описания функций и процедур модуля. Последняя часть модуля – секция инициализации. Она может быть и пустой и содержать только зарезервированное слово end или включать в себя исполняемые операторы, выполняющие необходимые действия по инициализации (например, по присваиванию начальных значений переменным) модуля. |
![]() |
Сообщ.
#2
,
|
|
Вот пример модуля и программы, использующей модуль.
![]() ![]() unit MathLib; interface Const Max=10; Type TVector: array [1..Max] of integer; function Sum (a, b: integer): integer; function Hypot (a, b: real): real; procedure InitVector (var V: TVector); implementation function Sum (a, b: integer): integer; begin summa := a + b; end; function Hypot (a, b: real): real; begin Hypot := Sqrt( Sqr(a) + Sqr(b)) end; procedure InitVector (var V: TVector); var i: integer; begin for i:=1 to Max do V[i]:=0; end; end. Пример использования модуля ![]() ![]() Uses MathLib; var A: TVector; begin InitVector (A); writeln (sum (100,20)); writeln (Hypot (100,20):5:3); end. Откомпилируйте модуль, выбрав Compile->Build. Таким образом создастся TPU файл, который можно использовать в дальнейшем в разных программах. Если в процессе компиляции программы, использующей модуль вы получили сообщение о том, что модуль не найден, то Примечание: и не пытайтесь запустить модуль! У вас всё равно ничего не получится, т.к. модуль является "библиотекой". Можно запустить только программу. |