- •Модули
- •Зачем нужны модули?
- •Зачем нужны модули?
- •Что такое модуль?
- •Что такое модуль?
- •При изучении модулей надо освоить:
- •Структура модуля (ТП, ОП)
- •Структура модуля (ОП)
- •Имя файла, содержащего модуль
- •Пример: Модуль VECTOR, позволяющий осуществлять некоторые операции над векторами
- •Продолжение примера
- •Продолжение примера
- •Использование модулей
- •Использование модулей
- •Пример: программа, использующая модуль VECTOR
- •Продолжение примера
- •Подключение модулей в Турбо Паскале
- •Подключение модулей в Delphi
- •Модули как средство программирования
Модули
лекция №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);
{ввод координат вектора}