Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
5
Создание новых модулей
Модуль - это автономно компилируемая программная единица, включающая в себя описания типов, констант, переменных, процедур и функций, которые можно использовать в различных программах. Если какие-то процедуры или функции используются многократно, то можно включить их в какой-то модуль, отладить его один раз и использовать затем многократно.
Модуль имеет следующую структуру:
UNIT <имя>;
INTERFACE
<интерфейсная часть>
IMPLEMENTATION
<исполняемая часть>
BEGIN
<инициирующая часть>
END.
Файл, содержащий текст модуля, должен иметь имя, совпадающее с именем модуля. Так, если имеем заголовок модуля UNIT SP; то текст этого модуля должен содержаться в файле SP.PAS. Имя модуля служит для связи с другими модулями и основной программой. Эта связь устанавливается предложением USES <имена модулей>, которое должно открывать раздел описаний основной программы. После этого основной программе становятся доступны типы, переменные, процедуры и функции, описанные в этом модуле и перечисленные в разделе INTERFACE.
UNIT CMP;
TYPE
COMPLEX = RECORD RE,IM:REAL END;
PROCEDURE ADDC (X,Y:COMPLEX;
VAR Z:COMPLEX);
Теперь, если в основной программе написать предложение USES CMP, то ей станут доступны тип COMPLEX и процедура ADDC из модуля СMP.
Исполняемая часть модуля начинается словом IMPLEMENTATION и содержит тексты процедур и функций, объявленных в интерфейсной части. В ней также могут быть объявлены локальные для модуля объекты: переменные, константы, типы, процедуры и функции, недоступные основной программе.
Описание процедуры, объявленной в интерфейсной части модуля, должен предшествовать заголовок, в котором можно опустить список формальных параметров, т.к. он уже приведен в интерфейсной части.
UNIT CMP;
INTERFACE
TYPE
COMPLEX=RECORD RE,IM:REAL END;
PROCEDURE ADDC (X,Y:COMPLEX;
VAR Z:COMPLEX);
IMPLEMENTATION
PROCEDURE ADDC;
BEGIN
Z.RE := X.RE + Y.RE;
Z.IM := X.IM + Y.IM;
END;
END.
Инициирующая часть завершает модуль. Она должна начинаться со слова BEGIN и включать в себя операторы, которые исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут открываться нужные файлы, устанавливаться связь с другими устройствами. Однако чаще всего эта часть модуля отсутствует.
Для записи откомпилированного модуля на диск в файле с расширением TPU следует в пункте меню COMPILE выбрать пункт DESTINATION и установить в нем режим DISK. После этого следует нажать [F9] и при отсутствии ошибок модуль будет записан на диск.
В Турбо-Паскале имеется ряд стандартных модулей, находящихся в одноименных файлах или в составе библиотеки TURBO.TPL. Только один модуль SYSTEM автоматически подключается к каждой программе. Остальные модули становятся доступны только после указания их имен после слова USES.
Пример.
Текст модуля содержит процедуры MY1 и MY2, с помощью которых формируются массивы значений двух функций, и функцию MIN. определяющую минимальное значение среди всех элементов массива.
unit func;
interface
const
n=100;
type
massiv=array[1..n]of real;
proc=procedure(n:integer;a,h:real;
var f:massiv);
procedure my1(m:integer;a,h:real;
var f:massiv);
procedure my2(m:integer;a,h:real;
var f:massiv);
function min(m:integer;a,h:real;
fun:proc):real;
implementation
procedure my1;
var
k:integer;
x:real;
begin
for k:=1 to m do
begin
x:=a+k*h;
f[k]:=sqr(sin(x))*cos(x)-ln(abs(x));
write(f[k]:4:2,' ');
end;
end;
procedure my2;
var
k:integer;
x:real;
begin
for k:=1 to m do
begin
x:=a+k*h;
f[k]:=x*x-2*x+8;
write(f[k]:4:2,' ');
end;
end;
function min;
var
f1:massiv;
minf:real;
k:integer;
begin
fun(m,a,h,f1);
minf:=f1[1];
for k:=2 to m do
if f1[k]<minf then minf:=f1[k];
min:=minf;
end;
end.
Текст основной программы:
program min_func2;
uses crt,func;
var
nm,k:integer;
a,b,h,x,ym:real;
begin
clrscr;
write('Введите начало отрезка a=');
readln(a);
write('Введите конец отрезка b=');
readln(b);
write('Введите шаг h=');
readln(h);
nm:=round((b-a)/h+1);
ym:=min(nm,a,h,my1);
writeln('минимум функции Y1=',ym:4:2);
ym:=min(nm,a,h,my2);
writeln('минимум функции Y2=',ym:4:2);
end.