Модули Информатика
Наличие модулей в Turbo-Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки программ и данных. Набор процедур и функций, объединенных в один блок (UNIT), может компилироваться независимо от главной программы. Благодаря этому, время компиляции для больших программ существенно сокращается. Модульный принцип построения особенно важен при разработке программ расчета сложных химико- технологических процессов (ХТП), математическое описание которых представляет собой комплекс математических описаний блоков ХТП.
Структура модуля Модуль состоит из следующих частей: заголовка модуля; интерфейса модуля; исполнительной (реализационной) части модуля; секции инициализации. Все разделы модуля, за исключением секции инициализации, являются обязательными.
Структура модуля UNIT ; INTERFACE {начало раздела объявлений} ; USES ; LABEL CONST {открытые объявления} TYPE VAR PROCEDURE только заголовки FUNCTION
IMPLEMENTATION USES ; LABEL CONST {собственные объявления} TYPE VAR PROCEDURE FUNCTION {тела процедур и функций} BEGIN ….. END. Указанная последовательность разделов обязательна.
Заголовок модуля состоит из зарезервированного слова unit и имени модуля. Имя модуля должно быть единственным. Модуль должен быть помещен в файл, имя которого совпадает с именем модуля, а его расширение -.pas. Пример заголовка: UNIT mod; Имя модуля не может состоять более чем из восьми символов.
Интерфейсная часть начинается словом interface. Через интерфейс осуществляется взаимодействие основной программы с модулем (модуля с модулем). В интерфейсе указываются константы, типы, переменные, процедуры и функции, которые могут быть использованы основной программой (модулем) при вызове этого модуля. В разделе объявления процедур и функций указываются лишь заголовки подпрограмм. Сами подпрограммы приводятся в исполнительной части.
Исполнительная (реализационная) часть начинается словом implementation и заканчивается словом end. Эта часть включает все программы модуля, а также локальные метки, константы, типы, переменные. Раздел uses необязателен. Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. За разделами объявления локальных меток, локальных типов, локальных переменных идут описания подпрограмм модуля (тела процедур и функций).
Инициализационная часть. Если между ключевыми словами implementation и end появляется begin, то полученный составной оператор begin……end представляет раздел инициализации модуля. Этот раздел обычно используется для открытия файлов (например с помощью процедуры Assign) и для формирования структур данных и переменных. Например: begin Assign (f1, Dan.dat); end. Инициализационная часть – это основной блок модуля. Операторы, приведенные в ней, выполняются после запуска программы первыми, т.е. перед операторами основного блока главной программы, в которую включен данный модуль.
Использование модуля в основной программе. Для использования модулей в программах, следует их имена указать после слова USES. Например: USES crt, mod; После этого в основной программе можно использовать идентификаторы, указанные в интерфейсах перечисленных модулей. Разработанный модуль помещается в файл с именем, имеющим расширение.pas, например mod.pas. Имя модуля в заголовке (Unit mod) должно совпадать с именем файла. Модуль транслируется отдельно, получает расширение.tpu. Например, mod.tpu.
Пример Вычислить молекулярную массу смеси по формуле: а также скорость реакции по выражению где ММ i – молекулярная масса i-того компонента; МД i – мольная доля i–того компонента, Для расчета средней молекулярной массы и константы скорости сформировать модуль.
Модуль UNIT MOL; {заголовок модуля} INTERFACE {раздел интерфейса} Type mas=array[1..4] of real; Var MD,MM:mas; i:integer; {объявление функции и процедуры} Function K(ko,e,r,t:real):real; Procedure MASS(ММ,МD:mas;var MS:real); IMPLEMENTATION {раздел реализации} Function K(k0,e,r,t:real):real; var k1:real; i:integer;
begin k1:=k0*exp(-e/(r*t)); k:=k1 end; Procedure MASS(ММ,МD:mas;var MS:real); var i:integer; begin MS:=0; for i:=1 to 4 do MS:=MS+MM i MД i ; end end.
Текст модуля записывается в файл с именем MOL.pas и транслируется. Основная программа Program MolMas; Uses Mol; {подключение модуля} Var MM,MД:mas; C1,C2,W,k0,e,r,t,ms:real; begin write(Введите k0 e r t C1 C2); readln(k0,e,r,t,C1,C2); for i:=1 to 4 do readln(MM i,MD i );
MASS(MM,МД,MS); {обращение к процедуре} writeln(Значение молекулярной массы=, MS:7:3); W:=k(k0,e,r,t)*C1* C2));{обращение к функции k(k0,e,r,t)} writeln (Значение скорости=,W:10:5); end. Запишем программу в файл, например с именем Skor.pas, и запустим её на выполнение. В каталоге библиотеки, в которой вы работаете, должны находиться файлы: Skor.pas ; Mol.pas; Mol.tpu; Skor.exe.