تابع در برنامه نویسی چیست ؟
نوشتن یک برنامه که کارهای زیادی انجام میدهد، به حجم بسیار زیادی از کدها نیازمند است. همانند سایر فعالیتهای واقعی و روزمره، انجام کارهای بزرگ به صورت یکباره بسیار سخت و پیچیده است.
در عوض اگر کارهای بزرگ به مجموعهای از کارهای کوچکتر تبدیل شوند، انجام تک تک کارهای کوچک به مراتب آسانتر خواهد بود.
برای مثال برای ساخت یک ساختمان، کارهای متعددی لازم است انجام شود. اگر این حجم زیاد از کارها را به قسمتهای کوچکتر تقسیم کنید و هر یک را به کسی بسپاریم، یک نفر مدیر نیاز است تا ترتیب این کارها را به شکل مناسب درآورد و در نهایت یک ساختمان که نتیجه کار دهها نفر مختلف است ساخته شود.
در برنامهنویسی، روشهای مختلفی برای خرد کردن کارها وجود دارد. یکی از روشهای قدیمی و متداول ایجاد توابع یا functionها است. هر تابع قطعهای از کد است که یک وظیفه مشخص و کوچک را انجام میدهد.
برای مثال یک نرمافزار حسابداری نیازمند انجام محاسبات متعدد و زیادی است. یک تابع در چنین نرمافزاری میتواند وظیفه داشته باشد که بررسی کند کد کالای خاصی، چند درصد مالیات بر ارزش افزوده دارد. این تابع یک کد کالا را دریافت میکند و یک درصد برمیگرداند.
برای مثال یک نرمافزار حسابداری نیازمند انجام محاسبات متعدد و زیادی است. یک تابع در چنین نرمافزاری میتواند وظیفه داشته باشد که بررسی کند کد کالای خاصی، چند درصد مالیات بر ارزش افزوده دارد. این تابع یک کد کالا را دریافت میکند و یک درصد برمیگرداند.
وظیفهی محاسبه قیمت نهایی و ثبت فاکتور و کسر از موجودی و دهها کار دیگر که مورد نیاز است بر عهده این تابع نیست و دهها تابع دیگر با همکاری هم این کارها را انجام میدهند.
توابع بازگشتی
توابع یا فانکشنها میتوانند از خدمات یکدیگر استفاده کنند. این کار اصطلاحا صدا زدن یا Call نامیده میشود. علاوه بر این توابع میتوانند خودشان را هم صدا بزنند.
هنگامی که یک تابع خودش را صدا میزند این تابع یک تابع بازگشتی نامیده میشود. تعداد فراخوانیهای بازگشتی نمیتواند نامحدود باشد و بسته به نوع سیستمعامل و زبان برنامهنویسی و سختافزار میزبان، محدودیتهای مختلفی ممکن است در این مسیر ایجاد شود.
کاربرد توابع بازگشتی
توابع بازگشتی توابعی هستند که یک کار ساده را میتوانند انجام دهند ولی از عهده همان کار در ابعاد بزرگ بر نمیآیند. برای مثال یک تابع میتواند جمع دو عدد را برگرداند ولی توانایی جمع سه عدد را ندارد. در نتیجه ابتدا با فراخوانی خودش، جمع دو عدد از سه عدد را به دست میآورد و نتیجه را که یک عدد است با عدد سوم جمع میکند.
به این شکل، تعداد ورودیها هر تعداد باشد، این تابع دو به دو آنها را با هم جمع میکند و در نهایت نتیجه را بر میگرداند.
به این شکل، تعداد ورودیها هر تعداد باشد، این تابع دو به دو آنها را با هم جمع میکند و در نهایت نتیجه را بر میگرداند.
ممکن است تصور کنید که جمع 10 عدد یا 20 عدد کاری آسان است و تابع از ابتدا میتوانست این کار را انجام دهد. ولی مسائلی در نرمافزار وجود دارد که بدون کمک توابع بازگشتی حل کردن آنها بسیار دشوار است.
توابع بازگشتی مسائل دشوار را به مسائل ساده و قابل حل قسمتبندی میکنند و سپس آنها را حل میکنند.
ورودیها و خروجیهای توابع
قوانین توابع بسته به زبان برنامهنویسی متفاوت است. از جمله تفاوتهای موجود، تعداد و شکل مقادیر ورودی تابع و تعداد و شکل مقادیر خروجی توابع است. در برخی زبانها امکان تعریف ورودیها یا پارامترهای توابع به صورت نامحدود وجود دارد. در برخی زبانها لازم است تا نوع پارامترهای ورودی از پیش تعیین شده باشد. در برخی زبانها امکان برگشت یک یا چند خروجی وجود دارد.
برای آشنایی بیشتر با قابلیتهای توابع لازم است تا شرایط زبان برنامهنویسی بررسی شود.
روشهای جدیدتر برای جایگزینی توابع
استفاده از توابع از روشهای قدیمی برنامهنویسی به شمار میروند. در دنیای امروز اغلب در کنار توابع از برنامهنویسی شیء گرا و برنامهنویسی سرویسگرا استفاده میشود.
در برنامهنویسی شیء گرا چندین تابع در قالب یک شیء که مجموعهای از خدمات مرتبط را انجام میدهد گروهبندی میشوند و همچنین ارتباط موثر و قویترین بین توابع یک گروه برقرار میشود. با این روش، امکان بیشتری برای کنترل دسترسیها و امنیت ایجاد میشود.
در برنامهنویسی سرویسگرا، برخی از خدمات برونسپاری میشود و چندین نرمافزار که هر یک ساختارهای متفاوتی دارند، از خدمات یکدیگر استفاده میکنند.
این تغییرات به دلیل توسعهی زیادی که در دنیای نرمافزار ایجاد شده، ضروری و حیاتی هستند.
- لینک منبع
تاریخ: یکشنبه , 24 تیر 1397 (17:30)
- گزارش تخلف مطلب