تابع در برنامه نویسی چیست ؟
تابعها در برنامهنویسی از مفاهم بسیار مهم و کاربردی به شمار میروند. یک تابع یا function، قطعهای از کدهای برنامهنویسی است که با یک نام از سایر بخشهای برنامه جدا میشود.
یک تابع برای انجام یک فعالیت خاص و مشخص برنامهنویسی میشود و در طول اجرای برنامه ممکن است بارها اجرا یا فراخوانی شود.
برای مثال یک تابع میتواند کار ارسال ایمیل را به انجام برساند یا یک تابع میتواند کار فشرده کردن فایل را بر عهده داشته باشد.
پارامتر تابع چیست ؟
هر تابع میتواند تعدادی ورودی داشته باشد. مثلا تابعی که ایمیل ارسال میکند، پارامترهای زیر را میپذیرد:
- نشانی ایمیل فرستنده
- نشانی ایمیل گیرنده
- عنوان ایمیل
- متن ایمیل
- فایلهای پیوست
پارامترهای تابع میتوانند اجباری یا اختیاری باشند. برای مثال در تابع ارسال ایمیل، تعیین فایلهای پیوست میتواند اختیاری باشد ولی سایر پارامترها اجباری هستند.
خروجی تابع چیست ؟
هر تابع میتواند بر اساس پارامترهایی که دریافت میکند، فعالیتهایی را انجام دهد و نتیجه را در قالب دلخواه برگرداند. مقدار خروجی تابع در زبانهای برنامهنویسی مختلف ممکن است الزامی یا اختیاری باشد. همچنین مقدار بازگشتی ممکن است دارای نوع مشخص یا نامشخصی باشد.
برای مثال در زبان برنامهنویسی php، مقدار بازگشتی توابع اختیاری است و هر نوعی هم میتواند داشته باشد ولی در زبان برنامهنویسی C مقدار بازگشتی تابع باید حتما از نوع تعریف شده باشد و یک تابع نمیتواند هم مقادیر رشتهای را برگرداند و هم مقادیر از نوع آرایه.
کاربرد توابع در برنامهنویسی چیست ؟
کاربرد اصلی توابع در آسانکردن کار برنامهنویسی و افزایش قابلیت استفاده مجدد از کدها است. برای مثال ارسال ایمیل، ممکن است در بسیاری از بخشهای برنامه ما مورد نیاز باشد. همچنین ممکن است بخواهید در برنامههای مختلف دیگر هم همین کار را انجام دهیم.
با ایجاد یک تابع جهت ارسال ایمیل، میتوانیم بارها از آن استفاده کنیم بدون اینکه لازم باشد از روش ارسال ایمیل اطلاعی داشته باشیم. تنها کافی است تابعی با نام send_email بسازیم و هر جا که نیاز به ارسال ایمیل بود، این تابع را صدا بزنیم.
شکل تعریف تابع
روش تعریف تابع در زبانهای برنامهنویسی مختلف متفاوت است. در زبان برنامهنویسی php برای تعریف یک تابع به شکل زیر عمل میکنیم:
1 2 3 4 5 |
function send_email( $from, $to, $title, $body, $attachments ) { // send email return true; } |
شیوهی فراخوانی توابع
اجرا یا فراخوانی یا call توابع در زبانهای برنامهنویسی مختلف معمولا به شکل زیر انجام میشود:
1 2 3 4 5 6 7 8 |
$title = 'عنوان ایمیل'; $body = 'متن ایمیل'; $attachments = [ 'path/to/file1.jpg', 'path/to/file2.jpg'. ]; $result = send_email( 'from@example.com', 'to@example.com', $title, $body, $attachments ); |
در قطعه کد بالا، تابع را فراخوانی میکنیم و مقدار بازگشتی از تابع را که نشان میدهد ایمیل ارسال شده یا خیر، در متغیر result ذخیره میکنیم.
ویژگیهای توابع
- محیط توابع ایزوله است. به این معنی که متغیرها و معمولا توابعی که در این محدوده تعریف شوند، در قسمتهای دیگر برنامه قابل مشاهده و استفاده نیستند.
- ممکن است استفاده از متغیرهای سراسری درون توابع امکانپذیر یا ناممکن باشد.
- توابع میتوانند برای انجام وظایف خود از توابع دیگر کمک بگیرند و آنها را فراخوانی کنند. حتی میتوانند خودشان را فراخوانی کنند( توابع بازگشتی ).
- کد توابع معمولا در فایل جداگانهای قرار میگیرد و در محلهایی که نیاز به آن باشد، ابتدا فایل مورد نظر بارگزاری میشود و سپس تابع مورد استفاده قرار میگیرد.
- در برخی زبانهای برنامهنویسی ممکن است تعداد پارامترهای توابع نامحدود یا نامشخص باشد. بهترین مثال از این نوع تابع تابع مشهور sprintf است که تعداد نامشخصی پارامتر را دریافت میکند.
توابع در زبانهای مختلف برنامهنویسی ممکن است ویژگیهای متفاوت دیگری نیز داشته باشند.
توابع بازگشتی
هنگامی که تابعی در هنگام اجرا خودش را فراخوانی کند، این تابع تابعی بازگشتی نامیده میشود. کاربرد توابع بازگشتی در حل کردن مشکلات پیچیده است که حل کردن آنها به صورت معمولی زمانبر یا بسیار مشکل است.
یک تابع بازگشتی، کاری مشکل را به تعداد نامحدودی کار کوچکتر و قابل حل تقسیم میکند و سپس آنها را حل میکند. در نهایت تجمیع نتایج کارهای کوچک را به عنوان راه حل مسئله بزرگ برگشت میدهد.
استفاده از توابع بازگشتی برای حل مشکلات برنامهنویسی گاهی کمک بسیار بزرگی به حساب میآید ولی به طور کلی روشی پر هزینه و همراه با محدودیت است و اگر از روشهای دیگر به آسانی بتوان به نتیجه رسید، استفاده از توابع بازگشتی توصیه نمیشود.
مثال تابع بازگشتی
بهترین مثال از توابع بازگشتی در مرتبسازی است. برخی از الگوریتمهای مرتبسازی با استفاده از توابع بازگشتی کار میکنند. هنگامی که با تعداد زیاد موارد برای مرتبسازی روبرو باشیم، مرتبکردن آنها در زمان کم کاری دشوار و پیچیده است.
- یک تابع بازگشتی میتواند دو مقدار را با هم مقایسه کند و آنها را مرتب کند.
- تابع بازگشتی تعداد زیاد ردیفها را آنقدر تقسیم میکند تا به دو ردیف برسد. سپس این دو ردیف را مرتب میکند و آنها را برمیگرداند.
- مرتبسازی پی در پی زوجها و تجمیع آنها با هم یک فهرست مرتبشده را نتیجه میدهد.
سلام - واقعا بسیار مطالب روان و کاربردی است