Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
13.03.2016
Размер:
53.25 Кб
Скачать

Модули

лекция №12

Зачем нужны модули?

Стандартный паскаль: модулей нет.

Место подпрограмм – перед разделом действий программы. Подпрограмма – часть программы.

Единственная возможность использования в программе отдельно подготовленной подпрограммы – вставка в программу текста подпрограммы на алгоритмическом языке =>

Невозможна раздельная компиляция подпрограммы и программы =>

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

Зачем нужны модули?

Для обеспечения возможности компиляции программы по частям.

Модули введены в Турбо Паскаль и поддерживаются в Объектном Паскале.

Что такое модуль?

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

Что такое модуль?

Модуль - это автономно компилируемая программная единица.

Модуль может быть подключен к любой паскаль-программе или к другому модулю (программной единице).

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

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

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

В Объектном Паскале модуль также может иметь завершительную часть (finalization), состоящую из операторов, обеспечивающих грамотное завершение программной единицы, использующей модуль.

При изучении модулей надо освоить:

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

Правила использования модулей.

Структура модуля (ТП, ОП)

UNIT имя_модуля;

INTERFACE

интерфейсная_часть

IMPLEMENTATION

исполняемая_часть

[BEGIN

инициирующая_часть]

END.

от подпрограмм – только заголовки

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

Структура модуля (ОП)

UNIT имя_модуля;

INTERFACE

интерфейсная_часть

IMPLEMENTATION

исполняемая_часть

[INITIALIZATION

инициирующая_часть]

[FINALIZATION

завершающая_часть]

END.

Имя файла, содержащего модуль

Имя_модуля.pas

При компиляции

ТП: Имя_модуля.pas => Имя_модуля.tpu ОП: Имя_модуля.pas => Имя_модуля.dcu

Пример: Модуль VECTOR, позволяющий осуществлять некоторые операции над векторами

Unit VECTOR; {операции над векторами}

INTERFACE

Type AR=Array[1..10] of real;

Function Scpr(Var a,b:Ar;N:Integer):Real;

{вычисление скалярного произведения двух векторов} Function Lngth(Var a:Ar; N:Integer):Real;

{вычисление длины вектора}

Function UngleRad(Var a,b:Ar; N:Integer):Real; {вычисление угла между двумя векторами в радианах} Function UngleGr(Var a,b:Ar;N:Integer):Real;

{вычисление угла между двумя векторами в градусах} Procedure Sum(Var a,b,c:Ar;N:Integer);

{вычисление суммы двух векторов} Procedure Inp(Var a:Ar; N:Integer);

{ввод координат вектора}