Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 06 Процедуры и функции (151028)

.pdf
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
1.07 Mб
Скачать

функция поиска максимального из двух чисел

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