Организация внешних модулей

Модуль (unit) представляет собой программную единицу, текст которой компилируется отдельно. Текст модуля пишется в соответствии со структурой отличной от структуры программы на языке Pascal.

При использовании модулей, программный код записывается в нескольких программных файлах. Один программный файл представляет собой программный модуль. Другие программные файлы, представляют собой программный код, обеспечивающий обращение к процедурам, включенным в программный модуль.

Программный код модуля включает следующие части:

Во-первых, заголовок модуля, который записывается в соответствии со следующим синтаксисом:

Unit <имя модуля>;

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

В-третьих, исполнительную часть, которая начинается зарезервированным словом “Implementation”. В секцию “Implementation” включаются описания процедур и функций.

Для создания программного модуля в среде “Delphi” выбирается команда “New” из меню “File”. В окне “NewItem” на странице “New” выбирается пиктограмма “Unit”. При выполнении этой команды, обеспечивается автоматический переход в текстовый редактор Delphi. В текстовом редакторе автоматически генерируются следующие конструкции:

Во-первых, заголовок модуля;

Во-вторых, предложение “Interface”, определяющее начало интерфейсной секции;

В-третьих, предложение “Implementation”, определяющее начало исполнительной части;

В-четвертых, предложение “End.”, определяющее конец модуля.

После набора программного кода, модуль сохраняется при помощи команды “Save As”. При сохранении модуля выбирается тип сохраняемого файла “Delphi unit”.

Программный код, обеспечивающий обращение к модулю, может быть организован, как консольное предложение. В программный код консольного предложения в предложение добавляется конструкция, определяющая подключаемый модуль. Например:

Uses

SysUtils,

UnitSort in 'Unitsort.pas';

Пример. Организация сортировки заданного фрагмента массива в виде модуля.

unit UnitSort;

Interface

Type

TArray=Array[1..40] Of Integer;

Procedure SortMb(Var A:Tarray; N:Integer;

N1:Integer;N2:Integer);

Implementation

Procedure SortMb;

Var

I,J,W:Integer;

Begin

For I:= N1 To N2-1 Do

For J:= I+1 To N2 Do

If A[I]>A[J] Then

Begin

W:= A[I]; A[I]:=A[J]; A[J]:=W;

End;

End;

End.

Для вызова данной сортировки необходимо разработать программу, обеспечивающую вызов модуля. Программа имеет следующий вид:

Program PrjSort;

{$APPTYPE CONSOLE}

uses

SysUtils,

UnitSort in 'Unitsort.pas';

Var

A:TArray;

I,N,N1,N2: Integer;

Begin

Writeln ('Input N');

Readln (N);

Writeln ('Input Array');

For I:=1 To N Do

Read(A[I]);

Writeln ('Input N1'); Readln (N1);

Writeln ('Input N2'); Readln (N2);

SortMB(A,N,N1,N2);

For I:=1 To N Do

Writeln(A[I]);

Readln;

End.

Пример обработки документов с использованием внешнего программного модуля.

Имеется многострочный документ, содержащий учетную информацию об обработанном рабочем времени. Документ содержит следующие реквизиты:

Во-первых, наименование подразделения. Реквизит представлен в виде 30 символов;

Во-вторых, фамилия, имя и отчество сотрудника. Реквизит представлен в виде 40 символов;

В-третьих, число отработанных часов. Реквизит представлен в виде пяти цифр;

В-четвертых, число потерянных часов. Реквизит представлен в виде пяти цифр.

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

Программный код организован в виде двух программных файлов.

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

Программный код первого программного файла имеет следующий вид:

Unit UnitMediana;

Interface

Type

TArray=Array[1..40] Of Integer;

Procedure Mediana(A:Tarray; N:Integer;

Var Rezult:Integer);

Implementation

Procedure Mediana;

Var

I,J,W,N1:Integer;

Begin

For I:= 1 To N-1 Do

For J:= I+1 To N Do

If A[I]>A[J] Then

Begin

W:= A[I]; A[I]:=A[J]; A[J]:=W;

End;

N1:= N div 2;

If N Mod 2 = 0 Then

Rezult:= (A[N1] + A[N1 + 1]) div 2

Else

Rezult:= A[N1 + 1];

End;

End.0

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

Program PrjMediana;

{$APPTYPE CONSOLE}

Uses

SysUtils,

UnitMediana in 'UnitMediana.pas';

Type

TYchet = Record

Podr: String [30];

Fio: String [40];

Otr: Integer;

Pot: Integer;

End;

TArrayYchet = Array [1..100] Of TYchet;

Var

Ychet: TArrayYchet;

A:TArray;

I,N,Med: Integer;

Begin

Writeln('Vvedite chislo zapisei');

Readln(N);

For I:= 1 To N Do

Begin

Writeln ('Naimenovanie podrazdelenija');

Readln(Ychet[I].Podr);

Writeln ('Familija,Imia,Otchestvo sotrydnika');

Readln(Ychet[I].Fio);

Writeln ('Chislo otrabotannix chasov');

Readln(Ychet[I].Otr);

Writeln ('Chislo poterjanix chasov');

Readln(Ychet[I].Pot);

End;

For I:= 1 To N Do

A[I]:= Ychet[I].Otr;

Mediana(A, N, Med);

Writeln ('Mediana ravna ',Med);

Readln;

End.

СПИСОК ЛИТЕРАТУРЫ И РЕСУРСЫ ИНТЕРНЕТ


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: