پارامتر (برنامه‌نویسی رایانه‌ای)

یک پارامتر  یا «آرگومان صوری» (formal argument)، در برنامه‌نویسی رایانه‌ای، نوع خاصی از متغیر است، که در رویه‌ها برای ارجاع به یکی از «قطعه داده» ها که به عنوان ورودی به رویه داده می‌شود، استفاده می‌شود. این «قطعه داده» ها، مقدار آرگومان (که معمولاً آرگومان واقعی یا پارامتر واقعی نامیده می‌شوند) هستند، که توسط آن، رویه می‌خواهد صدازده شود/فراخوانی شود.

 فرایند انتساب مقدار به پارامتر 
یک لیست مرتب از پارامترها معمولاً در تعریف زیررویه‌ها وجود دارد، و بنابراین هر وقت یک زیر رویه صدازده شود، آرگومان آن فراخوانی، ارزیابی می‌شوند، و مقادیر نتیجه شده می‌توانند به فراسنجه‌های متناظر، منتسب گردند.

 تفاوت پارامتر با آرگومان 
برخلاف آرگومان که در کاربردهای ریاضی معمول هستند، آرگومان در علوم رایانه «عبارت ورودی واقعی» است که به یک تابع، پروسه، یا رویه در عبارت صدازدن/فراخوانی ارسال می‌شوند، درحالیکه پارامتر متغیری است که در «داخل پیاده‌سازی رویه» موجود است.
 برای مثال، اگر کسی رویه add را به صورت زیر تعریف کند: def add(x, y): return x + y آنوقت x و y فراسنجه اند،
 درحالیکه اگرکسی (add(2,3 را صدا بزند، آنوقت ۲ و ۳ آرگومان هستند.

توجه کنید که متغیرها (و بنابراین عبارت‌ها) در زمینهٔ صدازده شده می‌توانند آرگومان باشند: اگر رویه به صورت  a = 2; b = 3; add(a, b) صدا زده شود، آنوقت متغیرهای a و b آرگومان اند، و نه مقادیر ۲ و ۳.

 فنون ارزیابی و پارامترها 
در حالت معمول «صدازدن با مقدار (call by value)» یک پارامتر در یک رویه به صورت متغیر محلی جدید عمل می‌کند، که به مقدار آرگومان مقدار دهی اولیه شده‌است (یک کپی محلی (مجزا) از آرگومان، اگر آرگومان یک متغیر باشد)، اما در حالت‌های دیگر، یعنی «صدازدن با ارجاع (call-by-reference)» متغیر آرگومان که توسط صدازننده تهیه می‌شود، می‌تواند توسط عملیات‌های موجود در رویه صدازده شده تأثیر بپذیرد (که در نظریهٔ ارزیابی بحث می‌شود).

معناشناسی آنکه پارامترها چگونه اعلام می‌شوند و چگونه (مقدار) آرگومان‌ها به پارامترهای رویه‌ها منتقل می‌شوند، توسط زبان تعریف می‌شود، اما جزئیات آنکه چگونه این در هر سیستم رایانه‌ای بخصوص نمایش می‌یابد، بستگی به قرارداد فراخوانی آن سیستم دارد.

 پانویس 

 منابع 

رده:برنامه‌نویسی
رده:رایانش
رده:زیرروال‌ها
رده:متغیر (برنامه‌نویسی رایانه)