Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011_12 Комп.Науки_2сем.doc
Скачиваний:
4
Добавлен:
13.09.2019
Размер:
476.67 Кб
Скачать

64 Жегуло а.И. Компьютерные науки 2-й семестр 2011-2012 гг. Компьютерные науки Лекции для студентов 1 курса мехмата, 2011-2012 уч. Г.

2 Семестр

16.Модули

16.1.Модуль и модульное программирование

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

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

Модульное программирование, т.е. организация программы как совокупности модулей, позволяет:

  • разбивать программу на отдельные модули, которые можно разрабатывать одновременно группой разработчиков;

  • уменьшить время перекомпиляции при изменениях программы, т.к. перекомпилируются только измененные модули;

  • повторно использовать модули в других программах;

  • создавать стандартные библиотечные модули, поставляемые вместе с компилятором.

16.2.Структура модуля

Модуль состоит из заголовка модуля, двух основных разделов – интерфейса и реализации, а также разделов инициализации и завершения:

unit имя_модуля; //Заголовок модуля

Interface //Раздел интерфейса

[uses список_модулей;]

{Раздел описаний, «видимый» вне модуля}

Implementation //Раздел реализации

[uses список_модулей;]

{Раздел описаний, скрытый от других программ и модулей}

Initialization //Раздел инициализации

{Операторы, выполняемые до начала работы основной программы}

finalization //Раздел завершения

{Операторы, выполняемые после окончания работы основной программы}

end.

Пример модуля и его использования

Модуль содержит описание переменной R и описание функции Circle, вычисляющей длину окружности.

unit geometry; //Модуль

Interface //Раздел интерфейса

var R: real;

function Circle(R: real): real;

Implementation //Раздел реализации

function Circle(R: real): real;

begin

Result := 2*pi*R

end;

end.

Исходный текст модуля сохраним под именем geometry.pas в том же каталоге, где и исходный текст программы.

program prog; //Основная программа

uses geometry; //Подключение модуля geometry

begin

readln(R); //Используется переменная R и

writeln(Circle(R)) //функция Circle из модуля geometry

end.

Если модуль разместить в другом каталоге, тогда в uses надо указать имя файла и путь к нему. Например:

uses geometry in '..\my_unit\geometry.pas';

Указанный путь означает, что надо выйти из текущего каталога и войти в каталог my_onit.

Заголовок модуля

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

Раздел интерфейса interface

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

В простейшем случае модуль состоит только из раздела интерфейса с описаниями типов, переменных и констант для некоторого класса программ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]