ПРОЦЕДУРЫ И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

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

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

Процедуры

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

Procedure <имя>(<Формальные параметры>);

const...;

type...;

var...;

begin

< операторы >

end;

 

Пример. Необходимо ввести значения элементов целочисленных массивов A[1..10] и B[1..10], найти в массиве количество положительных и отрицательных элементов и результат вывести на экран.

Program Prim6_1;

Const Kol=10;

Type Vector = array[1..Kol] of integer;

Var

A,B : vector;

KolOtrA,KolPolA,KolOtrB,KolPolB,i : integer;

Procedure Summa(V:vector; Var Kp,Ko:integer);

var
k:integer;

begin

Kp:=0; Ko:=0;

For k:=1 to Kol do

if V[k]>0 then Kp:=Kp+1

else if V[k]<0 then Ko:=Ko+1;

end; {Конец процедуры}

begin

Write('Введите значения массива А:');

For i:=1 to Kol do Read(A[i]);

Write('Введите значения массива B:');

For i:=1 to Kol do Read(B[i]);

Summa(A,KolPolA,KolOtrA);

Summa(B,KolPolB,KolOtrB);


Writeln(KolOtrA,KolPolA,KolOtrB,KolPolB);

end.

 

Для вызова процедуры из основной программы следует написать оператор, состоящий из имени процедуры и списка фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами процедуры. Например, Summ (A,KolPolA,KolOtrA) означает, что вызывается процедура Summa для вычисления количества положительных и отрицательных элементов в массиве А.

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

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



Функции

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

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

function <имя>(<формальные параметры>):<тип результата>

const...;

type...;

var...;

begin

< операторы >

end;

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

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

Пример. Составить программу вычисления выражения Z=(X**5+X**-3)/2*X**M, в которой возведение в степень выполняется функцией Step.

Program Prim6_2;

var

M:integer;

X,Z,R : real;

Function Step(A:real;
D:integer):real;

var

i:integer;

Y:real;

begin

Y:=1;

For i:=1 to B do Y:=Y*A; { Цикл вычисления степени }

Step:;=Y; {Присвоение функции результата вычисления степени}

end;

begin

Write('Введите значения Х и М');

ReadLn(X,M);

Z=Step(X,5);

Z:=Z+Step(1/X,3);

if M=0 then R:=1

else if M>0 then R:=Step(X,M)

else
R:=Step(1/X,M);

Z:=Z/(2*R);

Writeln('Для Х=',X,'M=',M,'выражение = ',Z);

end.



Дата: 2019-05-28, просмотров: 151.