Реферат: Учитель информатики Батракова Л. В
Учитель информатики Батракова Л.В.
____________________________________________________________________________________________
СОЗДАНИЕ МОДУЛЯ
Модуль - это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.
Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важная особенность модулей заключается в том, что компилятор Турбо Паскаля размещает их программный код в отдельном сегменте памяти. Максимальная длина сегмента не может превышать 64 Кбайта, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что дает возможность создавать весьма крупные программы.
^ СТРУКТУРА МОДУЛЕЙ
Unit имямодуля;
{ Интерфейсный отдел }
interface
{ Описывается взаимодействие модуля с другими модулями и основной программой }
{ Список импорта интерфейсного раздела }
uses
{ Через запятую перечисляются имена модулей, информация которых должна быть доступна в данном модуле}
{ Список экспорта интерфесного раздела}
const
type
var
procedure
function
{ Список всех типов переменных, которые определены в данном
модуле, но использовать которые разрешено во всех других
модулях и программах, в которых есть описание данного модуля в uses}
{ Раздел реализаций }
implementation
{ Внутренняя часть описаний данного модуля}
{ Список импорта раздела реализаций }
uses
{ Через запятые перечисляются имена модулей, информация
интерфейсных частей которых должна быть доступна в
данном модуле}
{ Подразделы внутренних для модуля описаний }
label
const
type
var
procedure
function
{ Описываются все типы переменных, которые описывают
алгоритмические действия, выполняемые данным модулем.
Эти описания недоступны ни одному другому модулю}
{ Раздел инициализаций}
begin
{ Указываются операторы начальных установок, необходимых
для запуска корректной работы модуля }
end.
Здесь UNIT - зарезервированное слово (единица); начинает заголовок модуля; <имя> - имя модуля (правильный идентификатор); INTERFACE - зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;
IMPLEMENTATION - зарезервированное слово (выполнение); начинает исполняемую часть;
BEGIN - зарезервированное слово; начинает инициирующую часть модуля;
конструкция BEGIN Инициирующая частъ> необязательна;
END - зарезервированное слово - признак конца модуля.
Таким образом, модуль состоит из заголовка и трех составных частей, любая из которых может быть пустой.
^ ЗАГОЛОВОК МОДУЛЯ И СВЯЗЬ МОДУЛЕЙ ДРУГ С ДРУГОМ
Заголовок модуля состоит из зарезервированного слова UNIT и следующего за ним имени модуля. Для правильной работы среды Турбо Паскаля и возможности подключения средств, облегчающих разработку крупных программ , это имя должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Если, например, имеем заголовок
Unit Global;
то исходный текст соответствующего модуля должен размещаться в дисковом файле GLOBAL.PAS. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением
USES <сп.модулей>
Здесь USES - зарезервированное слово {использует);
<сп.модулей> - список модулей, с которыми устанавливается связь; элементами списка являются имена модулей, отделяемые друг от друга запятыми, например:
Uses CRT, Graph, Global;
Если объявление USES... используется, оно должно открывать раздел описаний основной программы. Модули могут использовать другие модули. Предложение USES в модулях может следовать либо сразу за зарезервированным словом INTERFACE, либо сразу за словом IMPLEMENTATION, либо, наконец, и там, и там (т.е. допускаются два предложения USES).
^ ИНТЕРФЕЙСНАЯ ЧАСТЬ
Интерфейсная часть открывается зарезервированным словом INTERFACE. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и/или другим модулям. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок.
Отметим, что объявление подпрограмм в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней модели памяти. Таким образом обеспечивается доступ к подпрограммам из основной программы и других модулей. Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля, равно как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт). Порядок появления различных разделов объявлений и их количество может быть произвольным.
^ ИСПОЛНЯЕМАЯ ЧАСТЬ
Исполняемая часть начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты - вспомогательные типы, константы, переменные и блоки, а также метки, если они используются в инициирующей части.
Описанию подпрограммы, объявленной в интерфейсной части модуля, в исполняемой части должен предшествовать заголовок, в котором можно опускать список формальных переменных (и тип результата для функции), так как они уже описаны в интерфейсной части. Но если заголовок подпрограммы приводится в полном виде, т.е. со списком формальных параметров и объявлением результата, он должен совпадать с заголовком, объявленным в интерфейсной части, например:
Локальные переменные и константы, а также все программные коды, порожденные при компиляции модуля, помещаются в общий сегмент памяти.
^ ИНИЦИИРУЮЩАЯ ЧАСТЬ
Инициирующая часть завершает модуль. Она может отсутствовать вместе с начинающим ее словом BEGIN или быть пустой - тогда за BEGIN сразу следует признак конца модуля (слово END и следующая за ним точка).
В инициирующей части размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут инициироваться переменные, открываться нужные файлы, устанавливаться связи с другими ПК по коммуникационным каналам и т.п.
Не рекомендуется делать инициирующую часть пустой, лучше ее опустить: пустая часть содержит пустой оператор, которому будет передано управление при запуске программы. Это часто вызывает проблемы при разработке оверлейных программ .
^ КОМПИЛЯЦИЯ МОДУЛЕЙ
В среде Турбо Паскаля имеются средства, управляющие способом компиляции модулей и облегчающие разработку крупных программных проектов. В частности, определены три режима компиляции: COMPILE, MAKE и BUILD . Режимы отличаются только способом связи компилируемого модуля или основной программы с другими модулями, объявленными в предложении USES,
При компиляции модуля или основной программы в режиме COMPILE все упоминающиеся в предложении USES модули должны быть предварительно откомпилированы и результаты компиляции помещены в одноименные файлы с расширением TPU. Файл с расширением TPU (от англ. Turbo Pascal Unit) создается автоматически в результате компиляции модуля (если основная программа может компилироваться без создания исполняемого ЕХЕ-файла, то компиляция модуля всегда приводит к созданию TPU-файла).
Подключение модулей к основной программе и их возможная компиляция осуществляются в порядке их объявления в предложении USES. При переходе к очередному модулю система предварительно отыскивает все модули, на которые он ссылается. Ссылки модулей друг на друга могут образовывать древовидную структуру любой сложности, однако запрещается явное или косвенное обращение модуля к самому себе.
Пример модуля, содержащего описания процедуры и функции:
Unit primer;
Interface
Procedure line(n:integer; c:char);
Function factor(n:integer): integer;
Implementation
Uses crt;
Procedure line(n:integer; c:char);
var
i:integer;
begin
for i:=1 to n do write( c);
writeln;
end;
Function factor(n:integer): integer;
var
i, f: integer;
begin
f:=1;
for i:=2 to n do f:=f*i;
factor:=f;
end;
end.
Пример вызывающей программы:
uses primer;
var c:char;
n:integer;
begin writeln('input n');
readln(n);
writeln('input c');
readln(c);
line(n,c);
writeln('f=',factor(n));
end.
Заключение:
1.Модули предназначены для поддержки принципов модульного программирования при разработке программ. В языке Турбо Паскаль модули используются преимущественно для создания библиотек процедур, функций и объектов, которые затем могут использоваться в программах, разрабатываемых пользователем.
2.Используя модули, важно правильно указывать их имена.
При включении стандартных модулей достаточно корректно записать их идентификаторы в предложении uses.
При разработке собственных модулей необходимо помнить некоторые особенности:
а) не допускается одновременное использование модулей с одинаковыми именами;
б) идентификатор модуля, указанный в заголовке (unit), должен совпадать с именами файлов, содержащих исходный (.pas) и объектный (.tpu, .tpp, .tpw) коды;
в) если идентификатор модуля длиннее восьми символов, то он должен совпадать с именами файлов по первым восьми символам.
3.Традиционные правила сферы действия глобальных и локальных переменных для модулей не работают. Если возникает необходимость создать общие описания для нескольких модулей, то это можно сделать только созданием модуля глобальных объявлений.
Замечание для тех, кто создает модуль в PascalABC:
Модули предназначены для разбиения текста программы на несколько файлов. В модулях описываются переменные, константы, типы, классы, процедуры и функции. Для того чтобы эти объекты можно было использовать в вызывающем модуле (которым может быть и основная программа), следует указать имя файла модуля (без расширения .pas) в разделе uses вызывающего модуля. Файл модуля должен находиться либо в том же каталоге, что и основная программа, либо в подкаталоге Units системного каталога программы Pascal ABC.
еще рефераты
Еще работы по разное