Функции
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 <имя> (формальные параметры): <тип функции>;
<Раздел описания локальных переменных, меток, констант>