مقادیر ومتغیر ها در لیست پارامتر ها

  

وقتی در جلوی پارامتر ها 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.