
DELPHI 7
.pdf
vk.com/club152685050 | vk.com/id446425943
Механизм передачи параметров
по значению (параметр-значение)
по ссылке (параметр-переменная)
параметр-константа
Передаваемый параметр может иметь встроенный или пользовательский тип.
25

vk.com/club152685050 | vk.com/id446425943
Передача параметров по значению
Формальный параметр-значение, при вызове подпрограммы копирует свое значение у фактического параметра.
При этом для него выделяется дополнительная память, и при изменении этой копии значение фактического параметра-значения (оригинала) не меняется.
26

vk.com/club152685050 | vk.com/id446425943
Передача параметров
- по значению
Procedure p4 (x: real; y: real);
P4(A, B);
Передается копия значений A и B.
27

vk.com/club152685050 | vk.com/id446425943
Передача параметров по ссылке
Параметры-переменные (variable parameter),
описываются с ключевым словом var;
при подстановке фактического аргумента не создается его копия во временной памяти
на вход подпрограммы поступает указатель на переменную, которая передается в качестве фактического аргумента
соответствующий фактический параметр должен быть переменной !
28

vk.com/club152685050 | vk.com/id446425943
Передача параметров
- по ссылке (имени)
Procedure p5 (var x: real; var y: real);
P5(A, B);
Передаются сами переменные A и
B, ссылки на фактические переменные.
29

vk.com/club152685050 | vk.com/id446425943
Пример передачи параметров
Procedure p6 (x: real; var y: real);
P6(A, B);
Xпередается по значению;
Yпередается по имени (ссылке).
30

Иллюстрацияvk.com/club152685050 | vk.com/id446425943механизма
передачи параметров
приложение
Текст
программы
function Multiply1(x:integer;(x,y:integer):integer;
begin |
var y:integer):integer; |
//параметр-значение |
|
begin |
//параметр-переменная |
y:=x+y; |
|
y:=x+y; |
|
Multiply:=x*y; |
|
Multiply1:=x*y; |
|
end; |
|
end; |
|
31

vk.com/club152685050 | vk.com/id446425943
Параметры-константы
Пример объявления параметра-константы: procedure Goon(const s:string);
На вход подпрограммы передается только адрес фактической переменной или значения, а не их копия.
При этом компилятор не допускает использование в теле подпрограммы операторов, предназначенных для изменения их значения.
32

vk.com/club152685050 | vk.com/id446425943
Параметры - константы
Type TBigArray = array [1..100] of string [50];
Var A: TBigArray;
Procedure p9 (Const X: TBigArray);
P9(A);
Данные используются только для чтения.
33

vk.com/club152685050 | vk.com/id446425943
Передача массивов в подпрограммы
- с заданным числом элементов
(определенной длины)
Type a = array[1..10] of real;
Procedure p7 (x: a);
34