آموزش مقادیر ومتغیر ها در لیست پارامتر ها در پاسکال
وقتی در جلوی پارامترها Var قرار می دهیم با مراجعه به نام این پارامتر ها می توان آنرا به سابروتین وارد کرد و یا نتیجه گرفت . ولی در صورتیکه جلوی پارامتری Var قرار ندهیم ،مقدار آن پارامتر مورد نظر خواهدبود در حالت اول کامپیوتر محلی برای متغیر در نظر می گیریدو هر بار به آن محل مراجع می کند و محتوای آنرا انتقال می دهد . و این محتوا داخل و خارج برنامه قابل استفاده است .در حالت دوم کامپیووتر یک کپی از مقدار متغیر را به سابروتین می برد ومحلی را برای آن در نظر نمی گیردکه به تواند حاصل تغییر به بر نامه اصلی باز گردئد .تغییرات داخل سابروتین نیز روی کپی متغیر انجام می شود.بنابر این هر گاه تغییرات متغییری در داخل سابروتین مورد نظر مانیست آنرا بدون Var قرار می دهیم.
معرفی قبلی سابروتین ها
گاه اتفاق می افتد که یک سابروتین در بر نامه سابروتین دیگری را فرا مکی خواند. از آنجا که قبل از تعریف هیچ عاملی نمی توان از آن استفاده کرد سابروتین فرا خوانده شده باید قبلا معرفی شده باشد حال اگر قرار باشد گاه سابروتین 2 را فرا خواند و گاه سابروتین 1 را ، در اینجا اشکالی بوجود می آید.
به مثال زیر توجه نمائید.
Procedure test1 (some: integer);
Begin
If some<10 then test2 ('y');
{………..etc.}
Procedure test2 (another parameter: char);
Begin
test1 (15);
{………..etc.}
End;
این اشکال به این صورت رفع می شود که از کلمه forward استفاده کرده و سابروتین دوم را قبلا معرفی می کنیم. گر چه سابروتین دومی به تفضیل شرح داده شده ولی معرفی آن قبلا از سابروتین 1 مشکل را رفع می کند.
به برنامه زیر توجه کنید :
Program test;
Var
A, b, c, x, y, z: integer;
Procedure proc (Var a, b: integer; c: integer);
Forward;
Procedure proc2;
BEGIN
Clrscr ;
Readln(x);
Proc(x, y, z);
Writeln(x: 10, Y: 10);
End;
Procedure proc2 (Var A, B: Integer; c: Integer);
Begin
Writeln (A: 10);
B: =A*A*A;
C: =100;
END;
{*******************************}
Begin
Proc1;
End.
مثال:
1. برنامه فاکتوریل را با Procedure بنویسید.
Program t1;
Var
N: Integer;
M: Longint;
Procedure fact (n :integer ; Var f: Longint);
Var
I: byte;
Begin
F: =1;
For I: =1 to n do
F: =F*I;
End;
Begin
Write ("please enter n:");
Readln (n);
Fact (n, m);
Write (m);
Readln;
End.
2. برنامه فاکتوریل را با Function بنویسید.
Program t2;
Var
N: Integer;
K: real;
Function fact (n: integer) Longint;
Var
I: byte;
f: Longint
Begin
F: =1;
For I: =1 to n do
F: =F*I;
Fact: =F;
End;
Begin
Write ("please enter n:");
Readln (n);
Write (Fact (n));
Readln;
End.