Лекция 06 Процедуры и функции (151028)
.pdfфункция поиска максимального из двух чисел
function f_max(p1,p2:real):real; begin
if p1>p2 then f_max:=p1 else f_max:=p2;
end;
21
Вызов подпрограммы и передача параметров
При вызове подпрограммы, устанавливается связь между списками фактических и формальных параметров, т.е. переменным, указанным, в списке формальных параметров, присваиваются значения, указанные в списке фактических параметров.
22
Фактические параметры
Подставляются при вызове процедуры или функции
Str(5,7,9,S);
S1:= S_tr(3,4,5);
Фактический параметр может быть константой или выражением.
S1:= S_tr(3*a,4-b,5);
23
Формальные параметры
procedure Str(x,y,z:real;var S:real);
список формальных параметров
function S_tr(x,y,z:real):real; function f_max(p1,p2:real):real;
Формальные параметры описываются в заголовке подпрограммы сразу после ее имени.
24
Механизм передачи параметров
по значению (параметр-значение)
по ссылке (параметр-переменная)
параметр-константа
Передаваемый параметр может иметь встроенный или пользовательский тип.
25
Передача параметров по значению
Формальный параметр-значение, при вызове подпрограммы копирует свое значение у фактического параметра.
При этом для него выделяется дополнительная память, и при изменении этой копии значение фактического параметра-значения (оригинала) не меняется.
26
Передача параметров
- по значению
Procedure p4 (x: real; y: real);
P4(A, B);
Передается копия значений A и B.
27
Передача параметров по ссылке
Параметры-переменные (variable parameter),
описываются с ключевым словом var;
при подстановке фактического аргумента не создается его копия во временной памяти
на вход подпрограммы поступает указатель на переменную, которая передается в качестве фактического аргумента
соответствующий фактический параметр должен быть переменной !
28
Передача параметров
- по ссылке (имени)
Procedure p5 (var x: real; var y: real);
P5(A, B);
Передаются сами переменные A и B, ссылки на фактические переменные.
29
Пример передачи параметров
Procedure p6 (x: real; var y: real);
P6(A, B);
Xпередается по значению;
Yпередается по имени (ссылке).
30