Функции

Begin

Begin

Begin

Процедуры

Подпрограммы

При решении различных задач часто возникает необходимость проводить вычисления по одним и тем же алгоритмам, но с различными данными в одной программе. Такие вычисления целесообразно оформить в виде отдельных подпрограмм. Подпрограммы являются основой модульного программирования [10–17].

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

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

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

Глобальные – это параметры, объявленные в разделе описаний основной программы, они действуют как в основной программе, так и в любой ее подпрограмме.

Локальные – это параметры, объявленные внутри подпрограммы и доступны только ей самой. Они недоступны для операторов основной программы и других подпрограмм.

Использование подпрограмм связанно с двумя этапами:

· описание подпрограмм;

· обращение к подпрограмме.

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

Описание процедуры имеет вид:

 

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

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

label <список меток>;

const <список констант>;

type <список типов>;

var<список переменных>

<тело процедуры>

End;

и помещается в основной программе в разделе описаний.

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

Формальные параметры подразделяются:

1) на параметры–значения – это входные данные для работы процедур и функций, в списке формальных параметров они описываются в виде

(X1:T1; X2:T2;...) или (Х1,Х2:Т;...),

где Хi– имена параметров; Тi – тип параметров.

Например:

(а,b:real; c:integer; ...)

2) параметры–переменные – это, как правило, выходные данные процедуры (результаты выполнения процедуры), которые передаются в основную программу. Описание выходных параметров следующее:

(... var x,s:real; var y:integer)

В целом заголовок процедуры с описанием формальных параметров может быть таким:

Procedure Prim (a,b:real; c:integer;

var x,s: real; var y:integer).

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

Обращение к процедуре:

<имя процедуры> (фактические параметры).

 

Например:

Prim (a,b,c,x,y).

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

Следует запомнить: Между формальными и фактическими параметрами должно быть соответствие по количеству, порядку следования и типу данных.

Входные фактические параметры – это те, которые передаются в процедуру. В приведенном выше примере- это параметры а, b, c.

Входными параметрами могут быть: константы, переменные, выражения.

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

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

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

Пример. Вычислить расход тепла на нагрев стеклобоя при варке стекла

Q = Cp * B(Tм – 25)/100,

где B – количество стекломассы из боя; Тм – максимальная температура варки; Ср – средняя удельная теплоемкость стекломассы, равная

,

где Рi – содержание окислов в стекле, i = 1, 5; Аi, Ci – коэффициенты Шарпа и Гинтера, i = 1,5.

 

Программа.

Program Steklo;

type mas=array[1..5]of real;

var P,A,C:mas;

Cp,S1,S2,B,Q,Tм:real;

i:integer;

Procedure Sum2(P,A,C:mas;Tм:real;var S1,S2:real);

var i:integer;

S1:=0.0; S2:=0.0;

for i:=1 to 5 do

S1:=S1+P[i]*A[i]*Tм;

S2:=S2+P[i]*C[i];

end;

end;

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

for i:=1 to 5 do

readln(P[i]);

for i:=1 to 5 do

readln(A[i],C[i]);

readln(Tм,B);

Sum2(P,A,C,Tм,S1,S2); {обращение к процедуре}

Cp:=(S1+S2)*4.19/(0.00146*Tм+1);

Q:=Cp*B*(Tм–25)/100;

writeln (’Cp=’,Cp:10:4,’ Q=’,Q:10:4);

End.


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

Общая структура записи функции имеет вид:

 

Function <имя> (формальные параметры): <тип функции>;

<Раздел описания локальных переменных, меток, констант>