Ответы на экзаменационные вопросы № 1-34 по дисциплине "Программирование" (Средства модульного программирования в системе Турбо-Паскаль. ООП. Объекты в динамической памяти), страница 2

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

Секция инициализации.

В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связи с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т.д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а заканчивается словом  end. (с точкой), например:

Begin

C:=5; P:=3.14

End.

Следует иметь в виду, что операторы секции инициализации выполняются единственный раз в момент запуска программы.

Если инициализация модуля не нужна, то в секции помещается лишь слово end. (с точкой).

Использование модуля в основной программе.

Чтобы использовать подпрограммы, константы, типы, переменные, описанные в интерфейсе модуля, в основной программе следует поместить раздел объявления используемых модулей. Раздел состоит из одного предложения и начинается зарезервированным словом USES, после которого через запятую указываются имена модулей. После этого в основной программе можно использовать идентификаторы, указанные в интерфейсах перечисленных модулей.

Пример: Программа, меняющая в массиве максимальное и минимальное числа.

program Primer1;                  {Заголовок программы}

uses Unit1,Unit2;       {Используемые модули}

var  i: integer;

begin

Change(Arr);              {Процедура замены в Unit1, массив Arr - в Unit2}

for i:=1 to N do                                  {N - в Unit2}

writeln(Arr[i])

end.

{Модули, расположенные в других файлах}

unit Unit1;                                         {Модуль с основной подпрограммой}

interface                                             {Интерфейс первого модуля}

uses Unit2;                             {Использование модуля с параметрами}

procedure Change(var Arr: Mass);               {Заголовок процедуры}

implementation                                 {Исполнительная часть}

uses Unit3;     {Использование модуля со вспомогательной процедурой}

procedure Change;                 {Сокращенный заголовок}

var Max, Min, i: integer;

begin

Max:=1;

Min:=1;

for i:=1 to N do                      {N - в Unit2}

begin

if Arr[i]>Arr[Max] then Max:=i;

if Arr[i]<Arr[Min] then Min:=i

end;

Swap(Arr[Max], Arr[Min])              {Процедура обмена  - вUnit3}

end;

end.                                                    {Конец модуля Unit1}

unit Unit2;                                         {Модуль, содержащий параметры}

interface                                             {Интерфейс второго модуля}

const N=5;                              {Число элементов массива}

type Mass=array[1..N] of real;                                             {Тип массива}

const Arr: Mass=(0.5, -2.0, 1.0, 3.5, 7.0);    {Типизированная константа}

implementation                                 {Исполнительная часть  - пустая}

end.                                                    {Конец модуля Unit2}

unit Unit3;                             {Модуль со вспомогательной подпрограммой}

interface                                             {Интерфейс третьего модуля}

procedure Swap(var X,Y: real);

implementation                                 {Исполнительная часть}

procedure Swap(var X,Y: real);        {Процедура обмена двух чисел}

var Z: real;

begin

Z:=X; X:=Y; Y:=Z

end;

end.                                                    {Конец модуля Unit3}

Использование идентификаторов элементов модуля.

Как правило, идентификаторы объектов модуля используются в основной программе (или другом модуле) обычным образом. Однако может оказаться, что используемый идентификатор элемента модуля совпадает с идентификатором использующей его программы. Чтобы различить их, при обращении к элементу модуля используется его квалификатор, в качестве которого выступает имя модуля.