پارامتر Parameter
پارامتر یا Parameter چیست؟
پارامتر (Parameter) نوعی متغیر است که در یک زیرروال به عنوان دادهی ورودی مورد استفاده قرار میگیرد. به این دادهها، آرگومان (Argument) گفته میشود.
یک زیرروال میتواند به تعداد دلخواه پارامتر داشته باشد. این پارامترها در قالب یک لیست مرتب مشخص میشوند و هنگام فراخوانی زیرروال نیز لازم است مقادیر پارامترهای اجباری به ترتیب تعیین شده در تعریف زیرروال مشخص شوند.
بسیاری از زبانهای برنامه نویسی از پارامترهای اختیاری (Optional) نیز پشتیبانی میکنند. به این ترتیب که یک مقدار پیش فرض در تعریف زیرروال برای این نوع پارامترها مشخص میشود که در صورت عدم تعیین مقدار برای آنها هنگام فراخوانی، از این مقدار پیش فرض استفاده میشود.
ارسال پارامتر
هنگام فراخوانی بسته به تعریف پارامترها در زیرروال، میتوان آنها را به دو شیوهی مختلف به زیرروال ارسال نمود:
- ارسال با مقدار یا Pass by value: در این حالت تنها مقدار تعیین شده برای پارامتر در زیرروال مورد استفاده قرار میگیرد. برای مثال در تابع زیر که به زبان C++ نوشته شده است پارامتر a براساس ارسال با مقدار (حالت معمولی) تعریف شده است. بنابراین فراخوانی این تابع در قسمت main با متغیر x=3 باعث نمایش همان عدد 3 در خروجی می شود. چرا که مقدار ورودی در تابع duplicate دوبرابر شده اما نحوه ارسال به صورت مقدار بوده و درنتیجه روی متغیر ورودی x تأثیری ندارد.
void duplicate (int a)
{
a*=2;
}
int main ()
{
int x=3;
duplicate(x);
cout << x;
}
- ارسال با ارجاع یا Pass by reference: در این حالت هنگام فراخوانی، ارجاعی به متغیر خارجی استفاده شده برای پارامتر به زیرروال فرستاده میشود و هر تغییری روی پارامتر، مقدار متغیر اصلی ورودی را نیز تغییر میدهد. برای مثال در تابع زیر، مقدار a براساس ارجاع تعریف شده است (به علامت & توجه کنید. البته دقت کنید این یک قطعه کد سی پلاس پلاس است و در زبانهای مختلف از کلمات کلیدی یا نمادهای متفاوتی برای تعیین ارجاعی بودن پارامتر استفاده میشود). بنابراین فراخوانی این تابع در قسمت main با متغیر x=3 منجربه نمایش عدد 6 در خروجی میشود. چرا که مقدار متغیر ورودی در تابع duplicate دوبرابر شده و نحوه ارسال به صورت ارجاع است در نتیجه در واقع متغیر خارجی x دو برابر میشود.
void duplicate (int& a)
{
a*=2;
}
int main ()
{
int x=3;
duplicate(x);
cout << x;
}
پیوندهای پیشنهادی تک دیک