Создание модуля

Все программные ресурсы модуля можно разбить на две части:

1) объекты, прямо предназначенные для использования другими программами или модулями,

2) объекты рабочего характера. В соответствии с этим модуль, кроме заголовка, имеет две основные части: интерфейсную и реализации.

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

В части реализации помещаются рабочие объекты, называемые невидимыми или скрытыми.

Кроме этого, модуль может содержать раздел инициализации, предназначенный для установки начальных значений переменных модуля перед их использованием в программах. Этот раздел начинается со слова begin и содержит последовательность операторов присваивания. Не рекомендуется делать инициирующую часть пустой, лучше ее опустить.

Общая структура модуля:

unit имя

Interface

<описания видимых объектов>

Implementation

<описания скрытых объектов>

Begin

<операторы инициализации объектов модуля>

End.

Если в модуле содержатся процедуры и функции, то её заголовок считается интерфейсной частью, а тело – реализацией. В соответствии с этим в интерфейсной части модуля должны быть представлены только заголовки процедур и функций, а их полные описания должны содержаться в разделе реализации. При этом в разделе реализации можно писать сокращённый заголовок (без описания параметров). Но, если параметры будут описаны, то они должны полностью совпадать с заголовком в интерфейсной части.

Для того чтобы можно было воспользоваться объектами модуля, нужно в программе после заголовка указать: uses <имя модуля>.

Пример 3.1. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций:

а) проверка существования треугольника с заданными сторонами,

б) вычисления площади треугольника по трём сторонам.

С помощью данного модуля решить задачу: ввести стороны трёх существующих треугольников и вывести их площади в порядке возрастания.

Описание модуля для всех реализаций, кроме Паскаля АВС, приведены ниже.

Unit Treug;

Interface {Интерфейсная часть. Описание видимых объектов}

Procedure Prav(x,y,z:Real; Var l:Boolean);

Function Square(x,y,z:Real):Real;

Implementation {Раздел реализации}

Procedure prav; {Проверка существования треугольника}

Begin

l:=(x<y+z) and (y<x+z) and (z<x+y)

End;

Function Square; {Вычисление площади треугольника}

Var p:real;

Begin

p:=(x+y+z)/2;

square:=sqrt(p*(p-x)*(p-y)*(p-z))

end;

End.

После создания текста модуля, его необходимо сохранить под именем Treug.pas. Затем пишем текст основной программы:

Program;

Uses Treug; {Подключение модуля Treug}

Var a,b,c,x:Real;

s: Array [1..3] OfReal;

flag:Boolean;

i:Integer;

Begin

For i:=1 To 3 DoBegin

flag:=false; {признак существования треугольника}

Whilenot flag Do

Begin

ReadLn(a,b,c); {ввод сторон треугольника}

Prav(a,b,c,flag); {проверка существования треугольника}

Ifnot flag Then

WriteLn(‘Треугольник не существует’)

Else

s[i]:=square(a,b,c) {вычисление площади треугольника}

End

End;

If s[1]>s[2] thenbegin {Упорядочение площадей по возрастанию}

x:=s[1]; s[1]:=s[2]; s[2]:=x end;

if s[2]>s[3] thenbegin

x:=s[2]; s[2]:=s[3]; s[3]:=x end;

if s[1]>s[2] thenbegin

x:=s[1]; s[1]:=s[2]; s[2]:=x end;

writeln(s[1],’ ‘,s[2],’ ‘,s[3])

end.

При компиляции модуля создается одноименный файл с некоторым зарезервированным для этих целей расширением. Список возможных расширений откомпилированных модулей для различных систем программирования приведен в таблице 2.

Таблица 2. Расширения файлов откомпилированных модулей

Расширение откомпилированного модуля Система программирования
.tpu Turbo Pascal
.tpu,.tpp,.tpw Borland Pascal
.dcu Delphi
.ppu Free Pascal, Lazarus

Поскольку система Pascal ABC не создает кода на диске, модули являются аналогом включаемых файлов. В частности, они компилируются всякий раз при компиляции основной программы. Описание аналогичного модуля в Паскале АВС будет иметь вид:

Unit Treug;

Var x,y,z:Real; l:Boolean; {раздел описаний}

Procedure Prav(x,y,z:Real; Var l:Boolean);

Begin

l:=(x<y+z) and (y<x+z) and (z<x+y)

End;

Function Square(x,y,z:Real):Real;

Var p:real;

Begin

p:=(x+y+z)/2;

square:=sqrt(p*(p-x)*(p-y)*(p-z));

end;

initialization {раздел инициализации}

Prav(x,y,z,l);

Square(x,y,z);

end.

За более подробной информацией для работы с модулями воспользуйтесь справкой системы программирования.

Различные системы программирования имеют неодинаковые наборы стандартных модулей. Например, в Turbo Pascal и Borland Pascal часто в программах используются модули CRT и Graph. В модуле Crt сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана. С его помощью можно перемещать курсор в любую точку экрана, менять цвет выводимых символов и фона, создавать окна. Модуль GRAPH содержит набор типов, констант, процедур и функций для управления графическим режимом работы экрана. Этот модуль позволяет создавать различные графические изображения и выводить на экран надписи стандартными или созданными программистом шрифтами.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: