![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Определение модуля. Свойства модуля
Модуль - это автономно компилируемая коллекция программных ресурсов, предназначенная для использования другими модулями и программами. Все ресурсы модуля делятся на две группы: внешние - предназначенные для использования другими программными единицами, и внутренние рабочие ресурсы данного модуля. Структура модуля выглядит следующим образом: Unit < имя модуля>; interface < интерфейсная секция> Implementation < секция реализации> Begin < секция инициализации> End. Имя модуля должно совпадать с именем файла в катором он содержится. Результат компиляции модуля помещается в файл с тем же именем и расширением.tpu. Примечание. Среда языка Borland Pascal предусматривает три режима компиляции программы, использующей модули: § Compile - компилируется только основная программа, все модули должны быть предварительно откомпилированы в файлы с расширением.tpu и размещены либо в текущем каталоге, либо в одном из каталогов, указанных как источники файлов.tpu в настройках среды; § Make модули, для которых не обнаружены файлы.tpu, компилируются из соответствующих файлов.pas, которые должны находиться в текущем каталоге или в каталогах, указанных в настройках среды в качестве источников исходных файлов модулей; § Build - все ранее откомпилированные модули. tpu игнорируются и все модули компилируются из своих исходных файлов.pas. В процессе отладки модулей целесообразно использовать режим Build, а при отладке программы - режим Compile. Интерфейсная Секция содержит объявление ресурсов (в том числе заголовки подпрограмм), к которым возможны обращения извне. Секция реализации содержит описание подпрограмм, объявленных в интерфейсной секции и описание внутренних ресурсов модуля (локальных переменных, типов, подпрограмм). Обращение к этим ресурсам возможно ТОЛЬКО из подпрограмм, описанных в том же модуле. Секция инициализации содержит операторы, которые выполняют некоторые действия, необходимые для нормальной работы процедур модуля (например, открывают файлы, инициализируют некоторые переменные и т.п.). Операторы секции инициализации выполняются один раз (при подключении модуля) до начала выполнения основной программы. Эта секция в модуле может отсутствовать. Программа, которая использует ресурсы нескольких модулей, должна в области описаний содержать спецификацию используемых модулей: Uses < имя модуля1>, < имя модуля2>,....; В спецификации uses необходимо указывать только те модули, ресурсы которых данная программная единица (программа или модуль) использует непосредственно. Если подключаемый модуль использует другие модули, то их подключение уже описано в них. Секции инициализации подсоединяемых модулей выполняются в порядке их подключения. Пример 4. Разработать модуль, содержащий подпрограмму суммирования элементов массива. Разбиваем текст программы примера 2 на две части: подпрограмму размещаем в модуле, а тестирующую программу оставляем в качестве основной программы. Так как все структурные типы параметров должны быть предварительно объявлены, описываем тип массива в модуле. Модуль должен размещаться в файле Summa.раs. Unit Summa; Interface {объявление внешних ресурсов} Type mas=array[1. 10] of integer; Function sum(b: mas; n: integer): integer; Implementation Function sum: {описание функции} Var s: integer, i: integer; begin s: =0; for i: =1 to n do s: =s + b[i]; sum: =s; end; End. Программа использует из модуля два ресурса: описание типа mas для объявления массива М и функцию Sum. Program ex; Uses Summa; {указание используемого модуля} Var a: mas; {используем ресурс mas} i, n: inleger; Begin readln(n); for i: =1 tо n do read(a[i]); Readln; WriteLn('Cyмма= ', sum(a, n)); {используем ресурс sum} End. Все ресурсы, объявленные в интерфейсной части модуля, доступны в основной программе. В случаях перекрытия имен, когда основная программа и подключенный модуль содержат ресурсы с одинаковыми именами, при обращении к ресурсам модуля используют составные имена < имя модуля>.< имя ресурса>. Например, в модуле описана переменная X: Unit A; Interface Var X: real; ... End. а в основной программе, которая использует этот модуль, объявлена собственная переменная X: Program ex; Uses А; Var X: integer; Begin X: =W; {переменная программы} А.Х: =0.45;... {переменная модуля } В виде модулей в Borland Pascal реализованы библиотеки подпрограмм, использование которых существенно упрощает разработку программ.
|