Внешние процедуры и модули

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

function <имя функции> (<списокформ. параметров>):<тип функции>;

раздел описании

begin

раздел операторов

end;

Внешняя подпрограмма процедура имеет следующую структуру:

Procedure <имя процедуры> (<списокформальных параметров>);

раздел описаний

begin

раздел операторов

end;

Текст созданной внешней подпрограммы сохраняется в отдельном файле с расширением inc (это расширение внешних подпрограмм в ТР), например chislo.inc.

Директива компилятора {$I <имя файла>} позволяет в данное место текста программы вставить содержимое файла с указанным именем. Файлы с расширением inc можно накапливать на магнитном диске, формируя таким образом личную библиотеку подпрограмм.

Модуль — это набор ресурсов (функций, процедур, констант, переменных, типов и т.д.), разрабатываемых и хранимых незави­симо от использующих их программ. В отличие от внешних под­программ модуль может содержать достаточно большой набор про­цедур и функций, а также других ресурсов для разработки про­грамм. В основе идеи модульности лежат принципы структурного программирования. Существуют стандартные модули Турбо Пас­каля (system, crt, graph и т.д).

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

После служебного слова Unit записывается имя модуля, кото­рое (для удобства дальнейших действий) должно совпадать с име­нем файла, содержащего данный модуль. Имя не должно содержать более 8 символов.

В разделе interface объявляются все ресурсы, которые будут в дальнейшем доступны программисту при подключении модуля. Для подпрограмм здесь лишь указывается полный заголовок.

В разделе implementation описываются все подпрограммы, которые были ранее объявлены. Кроме того, в нем могут содер­жаться свои константы, переменные, типы, подпрограммы и т.д., которые носят вспомогательный характер и используются для на­писания основных подпрограмм. В отличие от ресурсов, объявлен­ных в разделе interface, все, что дополнительно объявляется в Implementation, уже не будет доступно при подключении моду­ля. При описании основной подпрограммы достаточно указать ее имя (т.е. не требуется полностью переписывать весь заголовок), а затем записать тело подпрограммы.

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

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

1. Спроектировать модуль, т.е. определить основные и вспомогательные подпрограммы и другие ресурсы.

2. Описать компоненты модуля.

3. Каждую подпрограмму целесообразно отладить отдельно, пос­ле чего «вклеить» в текст модуля.

Сохранить текст разработанной программы в файле <имя>. PAS и откомпилировать модуль.

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

 

 

Procedure….

Var a:array[1..9] of integer; I,s:integer;

Begin

S:=0;

For i:1 to 9 do begin

A[i]:=strtoint(StringGrid1.cells[i-1,0]);

If a[i] mod 2 = 0 then s:=s+a[i];end;

Label1.caption:=inttostr(s);

End;