رویه (علوم رایانه)
در برنامهنویسی، زیررِوال (به انگلیسی: Subroutine) یا رَویه، به دنبالهای از دستورالعملها گویند که به صورت یک واحد (یکای) بستهبندی شده، یک کار خاص (Task) را برای یک نرمافزار انجام میدهد. این واحد در آینده میتواند هر کجا که آن کارِ ویژه باید بینجامد، استفاده یا فراخوانی (Call) شود.
رویه ممکن است داخل یک برنامه یا بهطور جداگانه داخل کتابخانه (رایانه) ای تعریف شده باشد که میتواند توسط برنامههای مختلف مورد استفاده قرار گیرد. در زبانهای برنامهنویسی مختلف، رویه ممکن است با نامهای مختلف اسلوب(Method)، تابع (Function)، روال (Routine) و یا زیر برنامه (Subprogram) شناخته شود. گاهی اوقات اصطلاح عمومی «واحد قابل فراخوانی» نیز استفاده میشود.[1]
نام زیربرنامه نشان میدهد یک زیرروال رفتاری مشابه یک برنامه رایانهای دارد که به عنوان یک گام در یک برنامه بزرگتر یا زیربرنامه دیگر استفاده میشود. زیرروال اغلب کد میشود تا بتوان آن را چند بار و از مکانهای مختلف در طول یک اجرای برنامه (از جمله در میان دیگر زیرروالهای کد شده) مورد استفاده قرار داد (به اصطلاح call کرد). پس از صدا کردن زیرروال و اجرای آن، برنامه به دستور بعدی پس از زیرروال برمیگرد. موریس ویلکس، دیوید ویلر، و استنلی گیل مخترعین این مفهوم شناخته شدهاند که آن را زیرروال بسته (در تقابل با زیرروال باز یا ماکرو[2] ) نامیدهاند.[3][4]
زیربرنامهها از ابزارهای قدرتمند برنامهنویسی هستند[5] و قواعد نوشتاری (syntax) بسیاری از زبان برنامهنویسی، استفاده از آنها را پشتیبانی میکند. استفاده از زیربرنامه اغلب موجب کاهش هزینههای توسعه و نگهداری برنامههای بزرگ میشود. همچنین میزان کیفیت و اعتبار برنامه را افزایش میدهد.[6] زیربرنامهها که میتوانند در کتابخانهها جمعآوری شوند، روش مهمی برای اشتراک یا تجارت نرمافزارها به حساب میآیند.
مفهوم کلی
محتوای یک زیربرنامه یا بدنه آن بخشی از کد برنامه است که هنگامی که زیرروال فراخوانده میشود به اجرا درمی اید. هنگامی که یک زیررزوال فراخوانی میشود ممکن است یک یا چند مقدار داده را به صورت ورودی بگیرد که به آنها آرگومانهای ورودی گفته میشود. زبانهای مختلف برنامهنویسی از شکلهای مختلفی برای انتقال آرگومانها بهره میگیرند.
مزایا
مزایای شکستن یک برنامه به زیربرنامههای مختلف به شرح زیر است:
- تجزیه کردن یک برنامه برای انجام کاری خاص به گامهای سادهتر (یکی از دو ابزار اصلی برنامهنویسی ساختیافته)
- کاهش دادن کدهای تکراری در یک برنامه
- فراهم کردن امکان استفاده مجدد از کد در برنامههای مختلف
- ایجاد امکان تقسیم کار بهتر بین برنامهنویسان یک پروژه برنامهنویسی بزرگ
- امکان نهانسازی اطلاعات از کاربران زیربرنامه
- افزایش قابل ردیابی بودن فرایند اجرای برنامه
- راحتتر شدن فرایند عیبیابی برنامهها
مثالی از یک زیرروال
در مثال زیر، تابعی به نام add به زبان ++C نوشته شدهاست که برای جمع دو عدد استفاده میشود. این تابع دارای دو پارامتر a و b از نوع int (عدد صحیح) و یک خروجی از نوع int است. مجموع a و b در یک متغیر به نام r ذخیره میشود و مقدار آن به عنوان خروجی برگردانده میشود.
تابع دیگری که در این مثال دیده میشود main نام دارد. شروع هر برنامه در ++C با فراخوانی این تابع شروع میشود و در این تابع نیز با فراخوانی تابع add مجموع دو مقدار ۱۵ و ۱۳ (به عنوان مقادیر پارامترها) محاسبه و با دستور cout مقدار حاصل یعنی ۲۸ نمایش داده میشود.[7]
#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; }
منابع
- U.S. Election Assistance Commission (2007). "Definitions of Words with Special Meanings". Voluntary Voting System Guidelines. Archived from the original on 8 December 2012. Retrieved 2013-01-14.
- Dainith, John. ""open subroutine." A Dictionary of Computing. 2004." Encyclopedia.com. Retrieved January 14, 2013.
- Wheeler, D. J. (1952). "The use of sub-routines in programmes". Proceedings of the 1952 ACM national meeting (Pittsburgh) on - ACM '52 (PDF). p. 235. doi:10.1145/609784.609816.
- Wilkes, M. V.; Wheeler, D. J.; Gill, S. (1951). Preparation of Programs for an Electronic Digital Computer. Addison-Wesley.
- Donald E. Knuth. The Art of Computer Programming, Volume I: Fundamental Algorithms. Addison-Wesley. ISBN 0-201-89683-4.
- O. -J. Dahl; E. W. Dijkstra; C. A. R. Hoare (1972). Structured Programming. Academic Press. ISBN 0-12-200550-3.
- http://techdic.ir/definition/subroutine/