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