Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Часть_1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
974.85 Кб
Скачать

9.2. Процедуры и функции пользователя

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

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

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

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

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

Название «формальные» эти параметры получили в связи с тем, что они задают только имена для обозначения исходных данных и результатов работы подпрограммы. При вызове же подпрограммы на их место будут подставлены конкретные значения.

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

Формат описания процедуры:

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

Формат описания функции:

function <имя функции> [(список формальных параметров)]: <тип результата>;

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

Описание формальных параметров может отсутствовать.

Блок (тело) подпрограммы имеет ту же структуру, что и блок, являющийся телом программы, т. е. начинается зарезервированным словом Begin и заканчивается словом End.

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

П р и м е р. Описать подпрограмму, определяющую возможность построения треугольника по трем сторонам a, b и c и вычисляющую его площадь.

В а р и а н т 1 – процедура:

procedure TRIANGLE (a, b, c : real; var s : real);

Var p: real;

begin

if (a+b>c)and(a+c>b)and(b+c>a) {если треугольник существует}

then begin

p := (a + b + c) / 2;

p := p * (p - a) * (p - b)*(p - c);

s := sqrt (p);

end

else s := 0

end;

Тогда значение площади треугольника может быть использовано в алгоритме, например, следующим образом:

{фрагмент программы}

TRIANGLE( 2, 3, 4, Q );

if Q <> 0 then p:=5.7 + 2*Q;

В а р и а н т 2 – функция.

function TRIANGLE (a, b, c: real) : real;