Вот запутали поцана, зачем....
Paster Fob смотри, когда параметр передается как Var, Это значит, что ты передаешь в подпрограмму не переменную! (тут остановились и подумали)
Еще разок:
- Код: Выделить всё
Procedure P1(var a:Integer);
////
var A1:Integer;
begin
A1:=12;
P1(A1);
end;
Вот в процедуру P1, пришла не цифра 12... а аддрес памяти (Оперативной Памяти) в которой записано число 12.
По этому имея функцию:
- Код: Выделить всё
procedure Plus_3(var a, b: integer; var c: integer);
begin
a:=a+1;
b:=b+1;
c:=a;
end;
Мы передаем параметры(переменны) а, b, с не как цифры, а
как аддреса ячеек ОЗУ в которых эти самые числа(переменные) записаны.
Теперь еще разок но за один присест.
Предположим что: x5 - в ОЗУ лежит по аддресу 120.
чего нибудь еще - в ОЗУ лежит по аддресу 124.
Y - в ОЗУ лежит по аддресу 128.
Тобишь мы в процедуру Plus_3() передали эти аддреса.
- Код: Выделить всё
x5:=1;
Plus_3(X5, X5, Y);
writeln(Y);
что значит по строкам:- Код: Выделить всё
x5:=1;
в переменную х5 записали число 1. Но ведь где хранится это чило? правильно в памяти, а в какой памяти? правильно в ОЗУ, а где именно хранится переменная x5, ну мы (просто) предположили, что по аддресу 120. Тобишь мы Записали в ОЗУ по адресу 120 число равное 1.
- Код: Выделить всё
Plus_3(X5, X5, Y);
Мы передаем (как уже было сказано выше) не переменны и числа, а
адреса.тобишь войдя в процедуру:
- Код: Выделить всё
procedure Plus_3(var a, b: integer; var c: integer);
begin
a:=a+1;
b:=b+1;
c:=a;
end;
Мы по аддресу переменной (мы передали переменную x5) тобишь
a= адресу переменной x5 и этот адрес =120.
b= адресу переменной x5 и этот адрес =120.
c= адресу переменной Y и этот адрес =128
До этого у нас X5 = 1.
После
- Код: Выделить всё
a:=a+1;
уже х5=2. Почему.. потому что мы сказали, взять из ячейки записанное туда число и прибавить к нему 1 и записать опять в эту же ячейку (ячейку с адресом 120)
после
- Код: Выделить всё
b:=b+1;
3. так как b=адресу переменной x5, а по адресу (120) уже записано число 2. тобишь после +1 будет уже 3
- Код: Выделить всё
c:=a;
Ты говоришь что переменная С должна быть равна числу которое лежит по адресу переменной b, а по этому адресу у нас лежит переменная какая? прально x5 а что записано по аддресу в котором лежит переменная x5, число 3..
Что и требовалось доказать.