Операторы
Begin
end;
Нельзя вызывать на выполнение те подпрограммы, которые содержатся внутри других процедур.
При работе с подпрограммами важными являются понятия формальных и фактических параметров.
Формальные параметры – это идентификаторы входных данных для подпрограммы. Если формальные параметры получают конкретные значения, то они называются фактическими. Формальные параметры могут получить конкретные значения только в той программе, где производится обращение к данной подпрограмме.
Тип и порядок записи фактических параметров должны быть такими же, как и формальных параметров. В противном случае результат работы программы будет непредсказуемым. Из этого следует, что фактические параметры используются при обращении к подпрограмме из основной, а формальные параметры – только в самой подпрограмме.
Задача 1. Вычислить площадь треугольника, зная его стороны и диагональ.
program pl;
var AB, BC, CD, DA,AC, s1, s2, s: real;
procedure st(a, b, c: real; var s: real);
var p: real;
begin
p:=(a+b+c)/2;
|
|
s:=sqrt(p*(p-a)*(p-b)*(p-c))
end;
begin
write('Введите стороны и диагональ:');
readln(AB, BC, CD, DA,AC);
st(AB,BC,AC,s1);
st(CD,DA,AC,s2);
writeln('Ответ: ', s1+s2)
end.
Как видно из примера, объявление и тело подпрограмм находится в разделе описаний. В заголовке подпрограммы содержится список формальных параметров с указанием их типа, которые условно можно разделить на входные и выходные (перед ними стоит служебное var). При обращении к процедуре указывается ее имя и список фактических параметров. Формальные и фактические параметры должны соответствовать по количеству и по типу.
Вызов процедуры осуществляется следующим образом:
<Идентификатор (имя) процедуры>(<список фактических параметров>);
При составлении подпрограмм с параметрами надо соблюдать следующие правила:
1) каждая подпрограмма имеет свое имя и список формальных параметров;
2) процедура из основной программы вызывается командой вызова, которая по форме ничем не отличается от вызова команды исполнителя. Результат присваивается одной или нескольким переменным, которые находятся в списке формальных параметров. Но результатом могут быть, конечно, не только значения переменных, но какое либо действие, выполненное ЭВМ.
Существуют понятия локальных и глобальных меток, констант, типов и переменных. Поясним эти понятия на примере переменных.
Переменные, описанные в основной программе, являются глобальными по отношению к процедурам и функциям, которые описаны позже этих переменных.
Аналогично, переменные, описанные в процедурах и функциях, являются глобальными по отношению к внутренним процедурам и функциям, которые описаны позже. Остальные переменные называются локальными. Их область действия локализована, т.е. ограничена, той подпрограммой, где они описаны.
|
|
Исходные данные для работы подпрограммы можно передавать через глобальные переменные, а также через параметры. Таким образом, параметры в заголовке подпрограммы называются формальным и, а параметры при вызове подпрограммы называются фактическими.
Формальные параметры подпрограммы также относятся к его локальным переменным.
Локальные данные создаются, т.е. им выделяется память, при вызове подпрограммы, а освобождение этой памяти происходит при завершении работы подпрограммы.
В том случае, когда локальная переменная имеет тот же идентификатор, что и глобальная, алгоритм работает с локальной. При этом значение глобальной переменной сохраняется в специальной области памяти, которая называется стек.