طراحی زبان های برنامه سازی
درس متنی
جلسه ششم
توابع و پروسیجرها، بازگشت (Recursion)
زمان مطالعه
20 دقیقه
مقدمه
در برنامهنویسی، برای جلوگیری از تکرار کد و سازماندهی بهتر برنامه از واحدهای قابل استفادهٔ مجدد استفاده میشود. توابع و پروسیجرها ابزارهایی هستند که امکان تقسیم برنامه به بخشهای کوچکتر و قابل مدیریت را فراهم میکنند.
۱) توابع و پروسیجرها
تعریف
تابع یا پروسیجر مجموعهای از دستورات است که برای انجام یک وظیفهٔ مشخص تعریف میشود و میتوان آن را در بخشهای مختلف برنامه فراخوانی کرد.
تفاوت تابع و پروسیجر
- تابع: پس از اجرا یک مقدار را برمیگرداند.
- پروسیجر: معمولاً مقداری برنمیگرداند و فقط عملی را انجام میدهد.
مزایای استفاده از توابع
- کاهش تکرار کد
- افزایش خوانایی و ساختار برنامه
- امکان استفادهٔ مجدد از کد
- آسانتر شدن نگهداری و توسعهٔ برنامه
اجزای اصلی یک تابع
- نام تابع: شناسهای که برای فراخوانی آن استفاده میشود
- پارامترها: ورودیهایی که تابع دریافت میکند
- بدنهٔ تابع: مجموعه دستوراتی که اجرا میشوند
- مقدار بازگشتی: نتیجهای که تابع تولید میکند
پارامترها و آرگومانها
- پارامتر: متغیری که در تعریف تابع مشخص میشود
- آرگومان: مقداری که هنگام فراخوانی به تابع داده میشود
۲) بازگشت (Recursion)
تعریف
بازگشت روشی در برنامهنویسی است که در آن یک تابع خود را فراخوانی میکند تا مسئلهای را به نسخههای کوچکتر همان مسئله تقسیم کند.
اجزای مهم در بازگشت
- شرط پایه: حالتی که در آن بازگشت متوقف میشود
- مرحلهٔ بازگشتی: بخشی که تابع دوباره خود را فراخوانی میکند
کاربردهای بازگشت
- حل مسائل ریاضی مانند محاسبهٔ فاکتوریل
- پیمایش ساختارهای درختی
- حل مسائل تقسیم و غلبه
- برخی الگوریتمهای جستجو و مرتبسازی
نکات مهم دربارهٔ بازگشت
- وجود شرط توقف ضروری است، در غیر این صورت برنامه دچار بازگشت بینهایت میشود.
- هر فراخوانی بازگشتی از حافظهٔ پشته استفاده میکند.
- در برخی مسائل میتوان از روش تکرار (حلقهها) نیز استفاده کرد.
۳) مقایسهٔ بازگشت و تکرار
- بازگشت معمولاً برای مسائل ساختاری یا سلسلهمراتبی مناسبتر است.
- تکرار در بسیاری از موارد از نظر مصرف حافظه کارآمدتر است.
- انتخاب بین این دو به نوع مسئله و طراحی الگوریتم بستگی دارد.
۴) جمعبندی
- توابع و پروسیجرها برای تقسیم برنامه به بخشهای کوچکتر و قابل استفادهٔ مجدد استفاده میشوند.
- توابع میتوانند ورودی دریافت کرده و خروجی تولید کنند.
- بازگشت تکنیکی است که در آن تابع خود را فراخوانی میکند.
- استفادهٔ درست از توابع و بازگشت باعث ساختارمند شدن و سادهتر شدن برنامهها میشود.