Разработка примерка модуля
Пример Построить модуль Triangle, который можно использовать в разных программах для определения параметров заданного треугольника: площади S, периметра Р, радиусов Rv и Ro вписанной и описанной окружностей. При этом должны быть реализованы четыре варианта исходных данных: а) заданы три стороны А, В, С; b) заданы координаты вершин а, b, с треугольника (6 координат); с) заданы две стороны А, В и угол между ними; d) задана сторона А и прилежащие углы. Соответствующие вариантам a – d процедуры обозначим TR_a, TR_b, TR_c, TR_d. Запишем заголовок модуля и интерфейсный раздел.
UNIT TRIANGLE; INTERFACE Procedure TR_a (A,B,C:Real;Var S,P,Rv,Ro:Real); Procedure TR_b (Xa,Ya,Xb,Yb,Xc,Yc:Real; Var S,P,Rv,Ro:Real); Procedure TR_c (A,B,Ugol:Real; Var S,P,Rv,Ro:Real); Procedure TR_d (A,Ugol1,Ugol2:Real; Var S,P,Rv,Ro:Real); {Ниже следует раздел выполнения, использующий известные формулы} IMPLEMENTATION Procedure TR_a; {Не нужно повторять описание параметров, если} Begin {оно было дано в интерфейсном разделе модуля} Р:= (А + В+ 0/2; {Определим Р - полупериметр} S:= Sqrt (Р*(Р-А)*(Р-В)*(Р-0); {Определим S - площадь} Rv:= S/P; Ro:= A*B*C/(4*S); {Определим окружности Rv и Ro} Р: = 2*Р; {Вычислим периметр} End; Function R(X1,Y1,X2,Y2:Real):Real; {Расстояние между 2 точками} Begin R:= Sqrt(Sqr(X1-X2) + Sqr(Y1-Y2)) End; Procedure TR_b: Var A,B,C:Real; Begin A:= R(Xa,Ya,Xb,Yb); {Определение длины стороны A} B:= R(Xa,Ya,Xc,Yc); {Определение длины стороны В} С:= R(Xb,Yb,Xc,Yc); {Определение длины стороны С} TR_a(A,B,C,S,P,Rv,Ro) {Обращение к блоку TR_a для} End; {получения всех искомых величин} Procedure TR_c; Var С: Real; Begin C:=Sqrt(Sqr(A)+Sqr(B)-2*A*B*Cos(Ugol)); TR_a(A,B,C,S,P,Rv,Ro); {Обращение к блоку TR_a} End; Procedure TR_d; Var B,C,D:Real; Begin D:=Sin(pi-UgoH-Ugol2); B:=A*Sin(Ugol1)/D; {Используем теорему синусов} C:=A*Sin(Ugol2)/D; TR_a(A,B,C,S,P,Rv,Ro); {Обращение к блоку TR_a} End; {После описания конечного блока точка с запятой обязательна} END. {Закрывающая скобка модуля} Все четыре варианта вычисления сводятся к операторам, записанным в процедуре TR_a,
52. Модуль. Структура модуля в языке Турбо – Паскаль. Примеры.
Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части. Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Принцип модульного программирования заключается в том, что исходная задача разбивается на более простые подзадачи. Это разбиение следует делать так, чтобы в качестве отдельных подзадач фигурировали задачи, для решения которых уже имеются готовые (разработанные ранее) программы. Разработку новых программ при этом необходимо выполнить так, чтобы их можно было также использовать в качестве составных частей для решения других задач. Решение исходной задачи на компьютере, таким образом, будет состоять в последовательном выполнении совокупности модулей, процедур и функций. Преимущество модулей в том, что они в отличие от процедур и функций хранятся в памяти компьютера в откомпилированном виде и поэтому выполняются быстрее. Поскольку компилятор Турбо Паскаля размещает программный код модулей в отдельных сегментах памяти, то количество одновременно используемых модулей ограничивается только доступной памятью, а это предоставляет возможность создавать очень большие программы. При этом отдельные модули могут разрабатываться различными программистами, что позволит использовать современные технологии программирования, например, программирование сверху-вниз и бригадные методы программирования. Сам по себе модуль можно разделить на несколько разделов: заголовок; интерфейсная часть; исполняемая часть; инициализационная часть.
|