Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы прог TURBO PASCAL.doc
Скачиваний:
18
Добавлен:
11.11.2018
Размер:
580.61 Кб
Скачать

Структура модулей

Модуль состоит из заголовка и трех частей (разделов): интерфейсной, исполняемой и инициирующей.

Unit <имя модуля>; {unit – зарезервированное слово, начинает заголовок модуля}

{Имя модуля используется при задании связи с основной программой и другими модулями. Эта связь устанавливается путем включения идентификатора модуля в списки uses-предложений.

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

Например, Unit Global; размещается в Global.pas.}

Interface {начало интерфейсного раздела}

{В этом разделе описывается взаимодействие данного модуля с другими пользовательскими и стандартными модулями, а также с главной программой}

Uses {начинает список импорта интерфейсного раздела}

{В этом списке через запятые перечисляются идентификаторы модулей, информация интерфейсных частей которых должна быть доступна в данном модуле. Однако, здесь целесообразно описывать идентификаторы только тех модулей, информация из которых используется в описаниях раздела interface данного модуля. При этом модули, описанные в interface будут доступны также и в implementation}

{Список экспорта интерфейсного раздела. Содержит объявления всех глобальных объектов модуля (констант, типов, переменных и заголовки подпрограмм с формальными параметрами), которые можно использовать во всех других модулях и программах, если включить в строку uses последних имя данного модуля}

const

type

var

procedure

function

Implementation {начало раздела реализации (исполняемой части)}

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

Uses {список импорта раздела реализации}

{В этом списке через запятые перечисляются идентификаторы модулей, информация интерфейсных частей которых должна быть доступна в данном модуле. Здесь целесообразно описывать идентификаторы всех необходимых модулей, информация из которых не используется в описаниях раздела interface данного модуля и об использовании которых не должен знать ни один другой модуль.

Следует учитывать, что несмотря на то, что информация из модуля, описанного в interface данного модуля, используется в implementation, указывать его в этом списке недопустимо, т.к. модуль может быть указан только один раз – в interface или implementation.}

{Подразделы внутренних для модуля описаний (секции).

В них описываются локальные в implementation константы, типы, переменные, которые недоступны ни одному другому модулю. Здесь описываются также процедуры и функции, заголовки которых указаны с формальными параметрами в экспортном подразделе interface. При этом их заголовки в implementation допускается указывать без списка параметров; если списки приводятся, то они должны быть идентичны спискам в interface.

В этом же подразделе описываются внутренние процедуры и функции; они недоступны для других модулей. Эти подпрограммы всегда описываются полностью с формальными параметрами.}

const

type

var

procedure

function

procedure

function

Begin {начинает раздел инициализации (инициирующая часть)}

{В этом разделе указываются операторы начальных установок, необходимых для запуска корректной работы модуля, т.е. подготовительные операции. Эти операторы выполняются при начальном запуске программы в порядке их описания в uses-предложениях основной программы.

Если операторы инициализации не требуются, то ключевое слово Begin может быть опущено}

End.

Пример. Составить программу расчета . При этом вычисление функции tg х (х – аргумент в градусах) и факториала n! объединить в отдельный модуль.

unit matem; {заголовок модуля}

interface

{список uses отсутствует, т.к. нет необходимости в использовании других модулей}

{список экспорта, включающий заголовки используемых подпрограмм}

function tg(x:real):real;

procedure fact(n:byte;var f:real);

implementation

{список uses отсутствует, т.к. нет необходимости в использовании других модулей}

function tg; {реализация функции tg x}

begin

x:=x*pi/180;

tg:=sin(x)/cos(x)

end;

procedure fact; {реализация процедуры вычисления

var i:byte; факториала}

begin f:=1;

for i:=1 to n do

f:=f*i;

end;

{инициирующая часть отсутствует, т.к. в данном модуле инициализация не требуется}

end.

Program Proba; {основная программа}

uses Matem, Printer; {список используемых модулей}

var al,y:real; k,m:byte; f1,f2:real;

begin

write('al=');readln(al);

write('k=');readln(k);

write('m=');readln(m);

{обращения к процедуре модуля matem}

fact(k,f1); fact(m,f2);

{обращения к функции модуля matem}

y:=((1+tg(al)*tg(al))/f1)*(1-1/f2);

writeln(Lst,'y=',y:12);

end.