Копие на уикитоогледало

Това е огледало на уикито в pascal.chat. Редактирането, историята и входът са там.

Basic Pascal Tutorial/Chapter 4/Parameters/bg

English · Español · Français · Български · 中文(中国) · 日本語

4B - Parameters (author: Tao Yue, state: unchanged)

В заглавието на процедурата може да се включи списък на параметри. Списъкът с параметри позволява да се прехвърлят стойности на променливи от основната програма към процедурата. Новото заглавие на процедурата е:

pascal
procedure Name (????????????_????????????????_??????????????????);

Списъкът с параметри се състои от няколко групи параметри, разделени с точка и запетая:

text
група_параметри1; група_параметри2; ... ; група_параметриN

Всяка група параметри има формата:

text
идентификатор_1, идентификатор_2, ... , идентификатор_n : тип_на_данните

Процедурата се извиква чрез предаване на същия брой и тип аргументи (наречени действителен списък с параметри) като официалния списък с параметри.

pascal
procedure Name (a, b : integer; c, d : real);
begin
  a := 10;
  b := 2;
  writeln (a, b, c, d)
end;

Да предположим, че сте извикали горната процедура от основната програма, както следва:

pascal
alpha := 30;
Name (alpha, 3, 4, 5);

Когато се върнете към основната програма, каква е стойността на alph? 30. И все пак alpha беше предадена на a, на която беше присвоена стойност 10. Това, което всъщност се случи, беше, че a и alpha са напълно различни. Стойността в основната програма не е повлияна от случилото се в процедурата.

Това се нарича предаване по стойност. Предава се стойността на променливата към процедурата.

Друг начин за предаване на параметри е предаване с препратка. Това създава препратка между формалния параметър и действителния параметър. Когато формалният параметър се промени в процедурата, действителният параметър също се променя. „Предаване с препратка“ се указва, като пред групата параметри се напише VAR:

pascal
VAR ??????????????????????????_1, ??????????????????????????_2, ..., ??????????????????????????_n : ??????_????_??????????????;

В този случай константи и литерали не може да се използват като действителни параметри, тъй като те не могат да бъдат променяни в процедурата.

Ето пример, който смесва „предаване по стойност“ и „предаване с препратка“:

pascal
procedure Name (a, b : integer; VAR c, d : integer);
begin
  c := 3;
  a := 5
end;

begin
  alpha := 1;
  gamma := 50;
  delta := 30;
  Name (alpha, 2, gamma, delta);
end.

Веднага след изпълнението на процедурата, gamma има стойност 3, тъй като е референтен параметър, но alpha все още е 1, защото a беше параметър по стойност.

Това може да е малко объркващо. Затова мислете за „предаването по стойност“ като копиране на променлива, след което предавате копието на процедурата. Процедурата работи върху копието и го изхвърля, когато е готово. Оригиналната променлива остава непроменена.

„Предаването с препратка“ предава действителната променлива на процедурата. Процедурата работи директно върху променливата и я връща в основната програма.

С други думи, „предаването по стойност“ е еднопосочно предаване на данни от основната програма към процедурата. „Предаването с препратка“ прехвърля данните и в двете посоки.


From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 4/Parameters/bg", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 3, последно променена от WikiArchive .