У вас вопросы?
У нас ответы:) SamZan.net

Модуль это автономно компилируемая программная единица включающая в себя описания типов констант перемен

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 4.3.2025

5

Создание новых модулей

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

Модуль имеет следующую структуру:

 UNIT <имя>;

 INTERFACE

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

 IMPLEMENTATION

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

 BEGIN

  <инициирующая часть>

 END.

 

Файл, содержащий текст модуля, должен иметь имя, совпадающее с именем модуля. Так, если имеем заголовок модуля UNIT SP;  то текст этого модуля должен содержаться в файле SP.PAS. Имя модуля служит для связи с другими модулями и основной программой. Эта связь устанавливается предложением USES <имена модулей>, которое должно открывать раздел описаний основной программы. После этого основной программе становятся доступны типы, переменные, процедуры и функции, описанные в этом модуле и перечисленные в разделе INTERFACE.

 

 UNIT CMP;

INTERFACE

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.




1. е годы XlX в. он сформировался в революционное движение и начал играть определяющую роль в системе
2. питБагатоциклові характеристики при розтягуванні
3. Основы права на 20132014 учебный год Семестр 3 курс 2 Специальность- БУА22 БФ22 МС22 ВМ22ЛР22 ТППЖ22ВС22АТ
4. Свои люди сочтемся
5. Тема занятия- Практическая работа на пожарных автомобилях
6. Реферат- Крашенинников Степан Петрович
7. Действия подводных лодок в войне с Японией 1904-1905 гг
8. Средства массовой информации и ребенок
9. реферат дисертації на здобуття наукового ступеня кандидата історичних наук Київ ~ 20
10. Контрольная работа- Методы анализа степени очистки конденсата на ТЭЦ