Module: زیر برنامه ها: رویه ها و عملکردها - 1


Problem

11/11

تغییر استدلال ها

Theory Click to read/hide

وظیفه
روشی بنویسید که مقادیر دو متغیر را تعویض کند.

ویژگی این کار این است که ما به تغییرات ایجاد شده در رویه نیاز داریم تا برای برنامه فراخوانی شناخته شود.

بیایید سعی کنیم روال را به این صورت بنویسیم: جابجایی خالی استاتیک (int a، int b) // با چنین توصیفی از پارامترهای رویه، { // مقادیر آرگومان ها را کپی می کند (x و y) int c; // متغیرهای a و b متغیرهای مستقلی هستند که به x و y مرتبط نیستند c = a; a = b; b=c; } استاتیک void Main() { int x=1, y=2; مبادله (x, y); //مقادیر متغیرهای x و y (آگومان ها) در پارامترهای a و b، x = 1، y = 2 کپی می شوند. } اگر این برنامه را اجرا کنید، می بینید که مقادیر متغیرهای x و y تغییر نکرده اند. برای اینکه پارامترها مقادیر آرگومان ها را تغییر دهند، باید از انتقال داده با مرجع استفاده کنید. . void Swap ( ref int a, ref int b ) // اکنون متغیرهای a و b آدرس متغیرهای x و y را در حافظه دریافت می کنند { int c; c = a; a = b; b=c; } استاتیک void Main() {   int x=1, y=2;   مبادله (ref x، ref y); کاربرد: اگر یک آرگومان را با مرجع ارسال کنید، آنگاه فقط نام متغیر (نه یک عدد و نه یک عبارت حسابی) می تواند در این مکان هنگام فراخوانی رویه قرار گیرد.

شما نمی توانید رویه ای مانند این را فراخوانی کنید: <پیش> مبادله (x, 4); مبادله (5+x، y)؛

Problem

رویه ای بنویسید که مقادیر دو متغیر را جابجا کند. خطاها را در این رویه پیدا و تصحیح کنید.
 
مثال
<سر> <بدن>
# ورودی خروجی
1 1
2
2
1