8.24. Модули и работа с ними
При составлении предыдущих алгоритмов мы уже неоднократно
использовали в своих программах так называемые модули (вспомните
подключение библиотечного модуля Турбо Паскаля Crt для вызова из него
процедуры очистки экрана ClrScr). Все системные библиотеки Турбо Паскаля
реализованы в виде модулей, и чтобы использовать их мы должны поместить в
программе строку описания:
Uses Crt, Graph; {Или имена других необходимых модулей}
Вообще модули предназначены для поддержки принципов модульного
программирования при разработке программ. В соответствии с этим принципом
взаимное влияние логически независимых фрагментов программы должно быть
сведено к минимуму. Однако важнейшими полезными свойствами модулей
явялется возможность сохранять в них оформленные в виде процедур и
функций алгоритмы, которые Вы разрабатываете в течение Вашей работы и
желаете повторно использовать. Кроме этого, Ваша программа, в которой
описаны модули, “видит” все данные модулей (а также описания типов
констант и переменных). Поэтому, при необходимости их использования, нет
необходимости описывать все эти характеристики в основной программе.
Как правило, модуль разделяется на четыре части:
1. Заголовок модуля (Unit Name;)
2. Раздел объявлений или интерфейс (Interface)
3. Раздел реализации (Implementation)
4. Раздел инициализации (между Begin и End)
Все блоки, составляющие эти разделы, являются необязательными и
могут или отсутствовать, или появляться неоднократно. Наименьший по своим
размерам, бесплодный, но правильный с точки зрения языка ТП модуль имеет
вид:
Unit Empty;
Interface
Implementation
End.
Обратите внимание, что символы точка с запятой после ключевых слов
отсутствуют. Если отсутствует раздел инициализации, то служебное слово
Begin не ставится.
В принципе, структура полезного модуля подобна структуре паскаль-
программы:
Unit UnitName; {Заголовок модуля. Рекомендуется длина имени
UnitName <= 8 символов}
Interface {Раздел объявлений, которые будут использоваться в этом
модуле и в программах, которые его будут использовать!}
Uses ...; {Список модулей, вызываемых из данного модуля}
Const ...; {Объявления библиотечных констант}