pascal procedure



Pascal процедуры

Автор SPARTAK ULTRAS задал вопрос в разделе Другие языки и технологии

паскаль процедуры и функции и получил лучший ответ

Ответ от Капитан Гугл[гуру]
var означает передачу переменной по ссылке, без var - по значению. Например:
procedure change(a:integer;var b:integer);
begin
a:=5;
b:=6;
end;
...
begin
x:=1;y:=2;
change(x,y);
writeln(x, ' ',y);//выведет 1 6 - потому что x был передан по значению, и назад не вернулся, а y - по ссылке, и его значение было передано назад.
Зато
change(1,2);
вызовет ошибку - 1 передать можно, а вот вторым параметром должно быть что-то, что принимает значения (как правило, переменная).

Ответ от Cublen[гуру]
вот тебе 4 типа процедур, разбери их и все поймешь
--------------------------------------------------------------------------------
{program proc1_4; } {tip_1 0 vo vxoge, o na vixode}
{uses crt;
procedure f1;
var
a,b,c: integer;
begin
write('vvesti 2 chisla -->'); readln(a,b);
c:=a + b;
writeln('summa = ',c);
end;
BEGIN
clrscr;
writeln('vichislenie summ chisl a and b');
writeln('--------------------------------');
writeln;
f1;
writeln('------------------');
writeln('konec zadachi');
readkey;
END. }
{ program proc1_4; } {tip_2 2 vo vxoge, o na vixode}
{ uses crt;
var
a,b: integer;
procedure f2(x,y:integer);
var
c: integer;
begin
c:=x + y;
writeln('summa = ',c);
end;
BEGIN
clrscr;
writeln('vichislenie summ chisl a and b');
writeln('--------------------------------');
writeln;
write('vvesti 2 chisla -->'); readln(a,b);
f2(a,b);
writeln('------------------');
writeln('konec zadachi');
readkey;
END. }
{ program proc1_4;} {tip_3 0 vo vxoge, 1 na vixode}
{ uses crt;
var
c: integer;
procedure f3(var s:integer);
var
a,b: integer;
begin
writeln('vichislenie summ chisl a and b');
writeln('--------------------------------');
writeln;
write('vvesti 2 chisla -->'); readln(a,b);
s:=a + b;
writeln('summa = ',s);
end;
BEGIN
clrscr;
f3(c);
writeln('------------------');
writeln('konec zadachi');
readkey;
END. }
program proc1_4; {tip_4 2 vo vxoge, 1 na vixode}
uses crt;
var
a,b,c: integer;
procedure f4(x,y:integer;var z:integer);
begin
z:=x + y;
end;
BEGIN
clrscr;
writeln('vichislenie summ chisl a and b');
writeln('--------------------------------');
writeln;
write('vvesti 2 chisla -->'); readln(a,b);
c:=a + b;
f4(a,b,c);
writeln('summa = ',c);
writeln('------------------');
writeln('konec zadachi');
readkey;
END.

Ответ от Jurijus Zaksas[гуру]
Передача переменной по ссылке. После выхода из подпрограммы значение переменной возвращается в вызывающую подпрограмму. Если значение возвращать не надо, var не пишется.

Ответ от Krab Bark[гуру]
var показывает, что будет использоваться именно указанная переменная (фактически передается ее адрес) , все проведенные изменения изменят ее значение после выхода из подпрограммы. Без var в подпрограмме будет создана копия переданной переменной, изменения в ней во время работы подпрограммы не отразятся на исходной переменной.
Кроме того, важно, что без var подпрограмме можно передавать в качестве параметра выражение, с var - только переменную.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: паскаль процедуры и функции
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*