رویه (علوم رایانه)

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

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

زیربرنامه ممکن است داخل یک برنامه یا به طور جداگانه داخل کتابخانه (رایانه) ای تعریف شده باشد که می‌تواند توسط برنامه‌های مختلف مورد استفاده قرار گیرد. در زبان‌های برنامه‌نویسی مختلف، زیرروال(subroutine) ممکن است با نام‌های مختلف اسلوب(method)، تابع(function)، روال(routine)، یا زیر برنامه(subprogram) شناخته شود. گاهی اوقات اصطلاح عمومی «واحد قابل فراخوانی» نیز استفاده می‌شود.[۱]

نام زیربرنامه نشان می‌دهد یک زیرروال رفتاری مشابه یک برنامه کامپیوتری دارد که به عنوان یک گام در یک برنامه بزرگتر یا زیربرنامه دیگر استفاده می‌شود. زیرروال اغلب کد می‌شود تا بتوان آن را چند بار و از مکان‌های مختلف در طول یک اجرای برنامه (از جمله در میان دیگر زیرروالهای کد شده) مورد استفاده قرار داد (به اصطلاح call کرد). پس از صدا کردن زیرروال و اجرای آن، برنامه به دستور بعدی پس از زیرروال برمی‌گرد. موریس ویلکس، دیوید ویلر، و استنلی گیل مخترعین این مفهوم شناخته شده‌اند که آن را زیرروال بسته (در تقابل با زیرروال باز یا ماکرو[۲] ) نامیده‌اند.[۳][۴]

زیربرنامه‌ها از ابزارهای قدرتمند برنامه‌نویسی هستند[۵] و قواعد نوشتاری (syntax) بسیاری از زبان برنامه‌نویسی، استفاده از آنها را پشتیبانی می‌کند. استفاده از زیربرنامه اغلب موجب کاهش هزینه‌های توسعه و نگه داری برنامه‌های بزرگ می‌شود. همچنین میزان کیفیت و اعتبار برنامه را افزایش می‌دهد.[۶] زیربرنامه‌ها که می‌توانند در کتاب‌خانه‌ها جمع‌آوری شوند، روش مهمی برای اشتراک یا تجارت نرم‌افزارها به حساب می‌آیند.

مفهوم کلی[ویرایش]

محتوای یک زیربرنامه یا بدنه آن بخشی از کد برنامه است که هنگامی که زیرروال فراخوانده می‌شود به اجرا درمی اید. هنگامی که یک زیررزوال فراخوانی می‌شود ممکن است یک یا چند مقدار داده را به صورت ورودی بگیرد که به آنها آرگومان‌های ورودی گفته می‌شود. زبان‌های مختلف برنامه‌نویسی از شکل‌های مختلفی برای انتقال آرگومان‌ها بهره می‌گیرند.

مزایا[ویرایش]

مزایای شکستن یک برنامه به زیربرنامه‌های مختلف به شرح زیر است:

  • تجزیه کردن یک برنامه برای انجام کاری خاص به گام‌های ساده‌تر (یکی از دو ابزار اصلی برنامه‌نویسی ساخت‌یافته)
  • کاهش دادن کدهای تکراری در یک برنامه
  • فراهم کردن امکان استفاده مجدد از کد در برنامه‌های مختلف
  • ایجاد امکان تقسیم کار بهتر بین برنامه‌نویسان یک پروژه برنامه‌نویسی بزرگ
  • امکان نهانسازی اطلاعات از کاربران زیربرنامه
  • افزایش قابل ردیابی بودن فرایند اجرای برنامه
  • راحت‌تر شدن فرایند عیب‌یابی برنامه‌ها

مثالی از یک زیرروال[ویرایش]

در مثال زیر، تابعی به نام add به زبان ++C نوشته شده‌است که برای جمع دو عدد استفاده می‌شود. این تابع دارای دو پارامتر a و b از نوع int (عدد صحیح) و یک خروجی از نوع int است. مجموع a و b در یک متغیر به نام r ذخیره می‌شود و مقدار آن به عنوان خروجی برگردانده می‌شود.

تابع دیگری که در این مثال دیده می‌شود main نام دارد. شروع هر برنامه در ++C با فراخوانی این تابع شروع می‌شود و در این تابع نیز با فراخوانی تابع add مجموع دو مقدار ۱۵ و ۱۳ (به عنوان مقادیر پارامترها) محاسبه و با دستور cout مقدار حاصل یعنی ۲۸ نمایش داده می‌شود.[۷]

#include <iostream>
using namespace std;
int add (int a, int b)
{
  int r;
  r = a + b;
  return r;
}
int main ()
{
 int c;
 c = add (15, 13);
 cout << c;
}

منابع[ویرایش]

  1. U.S. Election Assistance Commission (2007). "Definitions of Words with Special Meanings". Voluntary Voting System Guidelines. Retrieved 2013-01-14. 
  2. Dainith, John. ""open subroutine." A Dictionary of Computing. 2004..". Encyclopedia.com. Retrieved January 14, 2013. 
  3. Wheeler, D. J. (1952). "The use of sub-routines in programmes". Proceedings of the 1952 ACM national meeting (Pittsburgh) on - ACM '52. p. 235. doi:10.1145/609784.609816. 
  4. Wilkes, M. V.; Wheeler, D. J.; Gill, S. (1951). Preparation of Programs for an Electronic Digital Computer. Addison-Wesley. 
  5. Donald E. Knuth. The Art of Computer Programming, Volume I: Fundamental Algorithms. Addison-Wesley. ISBN 0-201-89683-4. 
  6. O. -J. Dahl; E. W. Dijkstra; C. A. R. Hoare (1972). Structured Programming. Academic Press. ISBN 0-12-200550-3. 
  7. http://techdic.ir/definition/subroutine/