Создание модуля

Модуль содержит:

· заголовок модуля (UNIT <имя модуля>);

· раздел объявлений – интерфейс: INTERFACE;

· раздел реализаций – IMPLEMENTATION;

· раздел инициализации (необязательный) – между BEGIN и END. Если этот раздел отсутствует, то достаточно употребить END с точкой в конце.

Содержательная часть каждого из разделов может отсутствовать. Например, не будет противоречить синтаксису «пустой» модуль:

UNIT pustoj;

INTERFACE

IMPLEMENTATION

END.

Имя модуля либо должно совпадать с именем файла, в котором он помещен (без расширения), либо его первые восемь букв должны совпадать с именем файла; обычно расширение файла с модулем *.pas (но не обязательно).

В разделе объявлений (Interface) заносятся:

· имена модулей, используемых в данном модуле, в виде USES <имя модуля 1>, <имя модуля 2>,.., <имя модуля n>;

· описание типов, констант, переменных, вносимых в программу из модуля;

· заголовки процедур и функций, описываемых в модуле в следующем разделе; заголовок – это указание на вид процедуры (procedure или function), затем в круглых скобках дается список параметров с их типами в стандартном виде и для функции – тип возвращаемого результата.

В разделе реализации (Implementation) могут быть введены:

· свои типы, константы и переменные, доступные только для программ данного модуля, для которых они являются глобальными;

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

В разделе инициализации помещают некоторые стартовые действия или присваивание стартовых значений некоторым величинам. Чаще всего этот раздел пустой и состоит из одного слова END. Если же он не пустой, то начинается со слова BEGIN.

Пример выполнения лабораторной работы

Задание. Найти разность R между максимальным и минимальным элементами массива

Программа расчета:

program lab_10;

uses crt, un1; {подключение модулей}

var A: arr; {массив А}

R: integer; {разность}

Amax: integer; {максимальный элемент}

Amin: integer; {минимальный элемент}

m: word; {реальный размер квадратной матрицы}

fi,fo: text; {файловые переменные}

{------------- основная программа --------------------}

begin

clrscr;

assign (fi, 'input8_2.pas');

reset (fi);

{вызов процедуры чтения данных из файла}

{ fi, A, MaxDim, m – фактические параметры}

ReadFromFile (fi, A, MaxDim, m);

close(fi);

{вызов процедуры решения основной задачи}

{A, m, Amin, Amax – фактические параметры}

MaxMin(A, m, Amin, Amax);

R:=Amax-Amin; { вычисление разности}

assign (fo, 'out_8_2.pas');

rewrite (fo);

{вызов процедуры вывода результатов в файл}

{ fo, Amin, Amax, R – фактические параметры}

SaveToFile(fo, Amin, Amax, R);

close (fo);

repeat until keypressed;

end.

Модуль с процедурами (содержимое файла un1.pas ):

UNIT un1;

INTERFACE {интерфейсная часть}

{описание констант, типов, переменных}

const MaxDim = 10; {максимальный размер матрицы}

type arr=array[1.. MaxDim,1.. MaxDim] of integer; {описание типа arr}

{описание заголовков функций}

Procedure ReadFromFile (var f:text; var a1:arr; MaxD:word;var m1:word);

{Исходные данные: f – файл исходных данных,

MaxD – максимальная размерность массива a1.

Результат: заполненный массив a1 и его реальный размер – m1. }

Procedure MaxMin(a1:arr; m1:word; var min, max: integer);

{Исходные данные: массив a1 и его реальный размер – m1.

Результат: min, max – минимальный и максимальный его элементы.}

Procedure SaveToFile(var f:text; min, max, R: integer);

{Исходные данные: f – файл для сохранения результата, min, max, R – выводимые в файл и на экран данные. Результатом подпрограммы является вывод результатов программы в файл и на экран}

IMPLEMENTATION {выполняемая часть}

Procedure ReadFromFile;

Var i, j: word; {счетчики по строкам, столбцам –

локальные переменные }

begin

readln (f,m1); {чтение размера матрицы из первой строки файла}

if m1> MaxD then {проверка размера матрицы}

begin

m1:= MaxD;

writeln(‘Матрица из файла урезана до размера массива’);

end;

for i:=1 to m1 do {чтение из файла матрицы А}

begin

for j:=1 to m1 do read (fi,a1[i,j]);

readln(fi); {перевод указателя файла на новую строку}

end;

end;

Procedure MaxMin;

Var i, j: word; {счетчики по строкам, столбцам –

локальные переменные }

begin

min:=a1[1,1]; {начальные установки}

max:=a1[1,1];

{поиск минимального и максимального элементов:}

for i:=1 to m1 do

for j:=1 to m1 do

begin

if a1[i,j] < min then min:=a1[i,j];

if a1[i,j] > max then max:=a1[i,j];

end;

end;

Procedure SaveToFile;

begin

writeln (fo,' Amax=',max,' Amin=',min,' Разность=',R);

writeln ('Amax=',max,' Amin=',min,' Разность=',R);

end;

END. {конец модуля}

Файл исходных данных Input8_2.pas:

12 4 -7 6 1 7 -8 3 2

Файл результата Out_8_2.pas:

Amax=12 Amin=-8 Разность=20

Варианты заданий взять из лабораторной работы № 7 или № 9 по указанию преподавателя.


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



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