Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Назначение и структура модулей

Двойной цикл и типовые задачи на двойной цикл | Оператор безусловного перехода | Матрицы и типовые алгоритмы обработки матриц | Массивы в качестве параметров подпрограммы | Открытые массивы | Множества и перечислимые типы | Работа с символами | Работа со строками | Общие операции | Примеры работы с файлами |


Читайте также:
  1. BITMAPFILEHEADER – эта структура содержит информацию о типе, размере и представлении данных в файле. Размер 14 байт.
  2. II. Структура 12-річної школи
  3. II.СТРУКТУРА ОТЧЕТА ПО ПРАКТИКЕ
  4. III. Структура «минус»-пространства, его семантика, его трансформации
  5. IV. Состав и структура.
  6. quot;Кентерберійські оповідання"Чосера. Структура. Зміст.
  7. VII. Методика проведення заняття та організаційна структура заняття

Модулями называют заранее скомпилированные библиотеки подпрограмм, которые программист может использовать для создания новых программ. При программировании на Паскале модули подключаются из специальных библиотечных файлов, имеющих тип *.tpu (Turbo Pascal Unit). Модуль сам по себе не является выполняемой программой, но его подпрограммы используются другими программами.

Для того чтобы создать модуль, нужно написать файл с расширением *.pas, соблюдающий описанную далее структуру модуля, затем в меню Compile оболочки Паскаля установить переключатель Destination в значение Disk (как мы помним из гл. 6, это же нужно сделать, если вы собираетесь получить из своей программы на Паскале приложение *.exe), затем собрать модуль, выбрав в меню Compile пункт Build. После устранения ошибок компиляции готовый модуль (файл с расширением *.tpu) будет находиться в папке Паскаля.

Подробно рассмотрим общую структуру модуля.

unit ИмяМодуля;

Модуль открывается заголовком, именующим его. По этому имени модуль может быть подключен из программы оператором uses ИмяМодуля;. Имена составляются по обычным для языка правилам.

interface

Этим ключевым словом открывается интерфейсная часть, в которой объявляются константы, типы данных, переменные, процедуры и функции модуля. Тела общих процедур и функций находятся в разделе реализации (см. далее).

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

implementation

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

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

Раздел uses может находиться в части реализации сразу после зарезервированного слова implementation.

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

Наконец, главная программа модуля, ограниченная операторными скобками begin... end., обычно пуста. Тем не менее, в ней можно давать начальные значения данным модуля, открывать используемые им файлы, если таковые есть и т. п.

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

unit points;

interface

type point = array [1..2] of real;

procedure put (var p:point;x,y:real);

function distance (p1,p2:point):real;

function corner (p1:point):integer;

implementation

procedure put (var p:point;x,y:real);

begin

p[1]:=x; p[2]:=y;

end;

function distance (p1,p2:point):real;

begin

distance:=sqrt(

sqr(p1[1]-p2[1])+sqr(p1[2]-p2[2]));

end;

function corner (p1:point):integer;

begin

if p1[1]>0 then begin

if p1[2]>0 then corner:=1

else if p1[2]<0 then corner:=4

else corner:=0;

end

else if p1[1]<0 then begin

if p1[2]>0 then corner:=2

else if p1[2]<0 then corner:=3

else corner:=0;

end

else corner:=0;

end;

begin

end.

Наш модуль определяет тип данных Point ("точка") как массив из двух вещественных чисел. Процедура put позволяет задать для точки значения x- и y-координаты, функция distance возвращает расстояние между двумя точками, а функция corner -- номер координатной четверти, в которой находится точка, или 0, если точка лежит на одной из осей координат. Разумеется, реальные модули могут включать сотни функций, если предметная область, которую они моделируют, достаточно сложна. Теперь напишем маленькую тестовую программу, использующую наш модуль:

uses points;

var a,b:Point;

begin

put (a,1,1);

put(b,0,0);

writeln('Расстояние от A до B=',

distance(a,b):8:3);

writeln ('Номер четверти для A=',

corner(a));

end.

Оператор uses, подключающий модуль, указан в первой строке программы. Во время компиляции этой программы в текущем каталоге должен присутствовать файл points.tpu, содержащий созданный ранее модуль points.

При сборке сложной программы Паскаль ищет модули только в тех папках, которые перечислены в поле ввода Unit directories окна Directories верхнего меню Options, поэтому все готовые модули следует либо помещать в одну из этих папок, либо дописать в поле ввода нужные пути к папкам. В Приложении 4 приводится полный листинг модуля для работы с "мышью" из программы на Паскале и тесты для него.

 


Дата добавления: 2015-11-16; просмотров: 53 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Записи. Бинарные файлы| Модуль crt и создание консольных интерфейсов

mybiblioteka.su - 2015-2024 год. (0.008 сек.)