پروسیجرهای متداخل در پاسکال

پروسیجرهای متداخل در پاسکال
همان گونه که میتوانید از حلقه های For به صورت تودرتو استفاده نمایید
پروسیجرها را نیز میتوانید به صورت تودرتو استفاده کنید
بعنی هرپروسیجر میتواند شامل یک یا چند پروسیجردیگرباشد
برای انجام این عمل باید قوانین بلوکها را رعایت کنید
برای مثال دربرنامه زیر از پروسیجر متداخل استفاده شده است
Procedure Add(A,B " Integer); --------------------- پروسیجر Add Procedure Multiply (A,B : Integer); ----------------پروسیجردرونی begin WriteLn(A*B); end; ---------------------------------------------- پروسیجردرونی begin WriteLn(A+B); Multiply(A,B); end; -------------------------------------------- پروسیجر Add begin Add(10,5); end.
اجرای این برنامه باعث نمایش اعداد 15 و 50 خواهدشد
به این دلیل که پروسیجر Multiply درون پروسیجر Add تعریف و فراخوانی شده است
پس از نظر پاسکال قابل قبول است
توجه داشته باشید که شما نمی توانید پروسیجر Multiply را ازدرون بلوک اصلی برنامه فراخوانی کنید
حال به برنامه زیر توجه کنید
Var A,B :Integer: Procedure Add(A,B " Integer); Var C,D : Integer; Procedure Multiply; begin WriteLn(c*d); end; begin C := A; D := B; Multiply; WriteLn(A+B); end; begin Add(10,5); end.
اجرای برنامه فوق موجب نمایش اعداد 50 و 15 خواهد شد
به این دلیل که پروسیجر Multiply درون پروسیجر Add تعریف شده است
لذا متغییرهای C و D برای آن حکم متغییر های سراسری را دارند
و استفاده از انها در پروسیجر Multiply از نظر پاسکال قابل قبول است