Библиотечные модули Unit
Подпрограммы общего назначения удобно размещать в отдельном файле специальной структуры – unit.tpu (библиотека подпрограмм).
Структурная организация библиотечного модуля иллюстрируется следующим примером:
Unit Uname; {оператор задающий название библиотечного модуля - Uname,
Текстовый файл обязательно должен иметь тоже название uname.pas,
После компиляции этого модуля автоматически будет создан
объектный файл с именем uname.tpu, который обычно
и передается сторонним пользователям.}
{В самом начале модуля размещается блок описания информационных объектов, которые доступны (могут быть использованы) сторонними пользователями модуля uname.tpu}
Interface {специальная операторная скобка фиксирующая начало блока описаний
информационных объектов и операций по их обработке доступных стороннему
пользователю модуля uname.tpu }
Uses Graph, Crt; {подключение к данному модулю используемых им
других библиотечных модулей}
Type T3= array [1..3] of real; {описание «стандартных для данного
библиотечного модуля» структур информационных объектов,
В переменных этого типа должна размещаться информация о координатах
векторов}
Function Spr(Var a, b: T3): real; {подпрограмма-функция, вычисляющая
скалярное произведение векторов из пространства R3.
Входные параметры: a, b: T3 – координаты перемножаемых векторов,
Выходной параметр: Spr: real – их скалярное произведение}
Function ModV(Var a: T3): real; { подпрограмма-функция, вычисляющая
модуль вектора из пространства R3.
Входной параметр: a: T3 – координаты вектора,
Выходной параметр: ModV: real – его модуль (длина)}
Procedure Vpr(Var a, b, c: T3); {подпрограмма-процедура, вычисляющая
векторное произведение векторов.
Входные параметры: a, b: T3 – координаты перемножаемых векторов,
Выходной параметр: с: Т3l – вектор- результирующий вектор}
{нижеследующая информация библиотечного модуля не доступна
стороннему пользователю модулем uname.tpu}
Implementation {специальная операторная скобка фиксирующая начало блока
описаний информационных объектов и операций по их обработке,
которые доступны только из текстового файла uname.pas }
Function Spr(Var a, b: T3): real; {полная копия оператора из блока Interface }
Var i: integer; R: real; {описание рабочих переменных подпрограммы}
Begin
R:=0; {обнуление рабочей переменной для накопления сумм произведений}
For i:=1 to 3 do R:=R+ a[i]*b[i]; {вычисление скалярного произведения}
Spr:=R {перепись возвращаемого результата в специальную ячейку Spr }
End; {конец описания подпрограммы-функции Spr }
Function ModV(Var a: T3): real; {полная копия оператора из блока Interface }
Begin
ModV:=Sqrt(Spr(a,a)); {вычисление результата}
End; {конец описания подпрограммы-функции ModV }
Procedure Vpr(Var a, b, c: T3); {полная копия оператора из блока Interface }
Begin
C[1]:=a[2]*b[3]- a[3]*b[2]; { покомпонентное вычисление}
C[2]:=a[3]*b[1]- a[1]*b[3]; {результирующего вектора}
C[3]:=a[1]*b[2]- a[2]*b[1];
End; {конец описания подпрограммы-процедуры Vpr}
Begin End. {Обязательное завершение библиотечного модуля}
Дата добавления: 2021-12-14; просмотров: 357;