بررسی انواع توابع در برنامه نویسی تابع گرا

در زبان های برنامه نویسی تابع گرا اغلب دو نوع تابع به صورت Predefined Function و یا توابع از پیش تعریف شده و User-defined Function و یا توابع تعریف شده توسط کاربر وجود دارند. در این قسمت در رابطه با هر دوی این نوع از توابع به طور مفصل صحبت خواهیم کرد.بررسی توابع از پیش تعریف شده (Pre-defined Function)این نوع از توابع به صورت درونی در زبان برنامه نویسی مورد نظر شما تعبیه گردیده اند تا بتوانند عملیات معمولی را اجرا کنند. به عبارت دیگر این نوع توابع در کتابخانه توابع استاندارد و یا Standard Function Library مربوط به زبان برنامه نویسی مورد نظر شما قرار گرفته اند. برای مثال در زبان برنامه نویسی C++ یک تابع به نام Strcat و یا در زبان Haskell یک تابع به نام Concat وجود دارد که به منظور الحاق و یا چسباندن دو رشته به یکدیگر مورد استفاده قرار می‌گیرند.در زبان برنامه نویسی C++ تابع Strlen و در زبان Python تابع Len به منظور محاسبه کردن تعداد کاراکترهای درون یک رشته مورد استفاده قرار می‌گیرند. کدی که در قسمت زیر مشاهده می کنید نحوه محاسبه کردن تعداد کاراکترها و یا طول که همان Length نیز گفته می شود را نشان می دهد.#include#include#includeusing namespace std;int main() {char str[20] = “Hello World”;int len;len = strlen(str);cout<<“String length is: “<<len;return 0;}این کد به زبان برنامه نویسی C++ نوشته شده است. خروجی این کد شبیه به قسمت زیر خواهد بود. stringlengthis:11 بررسی یک مثال برای چاپ کردن طول یک رشته در زبان برنامه نویسی Pythonمثالی که در قسمت زیر می بینید نحوه چاپ کردن Length و یا طول یک رشته با استفاده از زبان Python را نشان می‌دهد. https://virgool.io/p/kvgbztisoxjb/[c++]str=%E2%80%9CHelloWorld%E2%80%9D;print(%E2%80%9CStringlengthis:%E2%80%9C,len(str))[/c++] زبان Python یک زبان تابع گرا و یا Functional می باشد. ضمناً توصیه می‌کنیم که در رابطه با درک هرچه بهتر مفاهیم تابع گرایی از بسته ی آموزش ویدئویی برنامه نویسی تابعی در سی شارپ استفاده کنید. کدی که در قسمت بالا مشاهده می کنید خروجی زیر را تولید می‌کند. https://virgool.io/p/kvgbztisoxjb/(%E2%80%98Stringlengthis:%E2%80%98,11) بررسی توابع تعریف شده توسط کاربر (User-defined Function)نوع دیگری از توابع، توابعی هستند که توسط کاربر تعریف می شوند تا وظایف خاص مورد نظر کاربر را اجرا کنند. به طور کلی چهار الگو برای تعریف کردن یک تابع به این شکل وجود دارد.توابعی که هیچ آرگومان ورودی را دریافت نمی کنند و هیچ خروجی را تولید می‌کنند.توابعی که هیچ آرگومانی را دریافت نمی‌کنند؛ اما یک مقدار خروجی را برمی‌گردانند.توابعی که آرگومان ورودی دریافت می‌کنند؛ اما هیچ خروجی خاصی را تولید نمی‌کنند.توابعی که آرگومان ورودی دریافت کرده و یک خروجی را تولید می‌کنند.در ابتدا در رابطه با توابعی که هیچ آرگومان ورودی را دریافت نمی‌کنند و هیچ خروجی خاصی را نیز تولید نمی‌کنند صحبت خواهیم کرد. مثالی که در قسمت زیر مشاهده می کنید یک Function را نشان می‌دهد که به عنوان ورودی هیچ آرگومانی را دریافت نکرده و هیچ خروجی را ندارد. این تابع به زبان برنامه نویسی C++ نوشته شده است.#includeusing namespace std;void function1() {cout <<“Hello World”;}int main() {function1();return 0;}خروجی این کد شبیه به قسمت زیر خواهد بود. https://virgool.io/p/kvgbztisoxjb/HelloWorld مثالی که در قسمت زیر مشاهده می کنید نحوه تعریف کردن یک تابع مشابه، این بار در زبان برنامه نویسی Python را نشان می‌دهد.def function1():print (“Hello World”)function1()خروجی این کد شبیه به قسمت زیر خواهد بود. https://virgool.io/p/kvgbztisoxjb/HelloWorld در ادامه در رابطه با تعریف کردن توابعی که هیچ پارامتر ورودی را دریافت نمی‌کنند؛ اما خروجی تولید می‌کنند صحبت خواهیم کرد. مثال زیر نحوه تعریف کردن یک تابع را نشان می‌دهد که هیچ آرگومانی را دریافت نکرده؛ اما یک Return Value و یا مقدار را به عنوان خروجی برمی‌گرداند. این کد به زبان برنامه نویسی C++ نوشته شده است.#includeusing namespace std;string function1() {return(“Hello World”);}int main() {cout<<function1();return 0;}خروجی این کد شبیه به قسمت زیر خواهد بود. https://virgool.io/p/kvgbztisoxjb/HelloWorld ثال زیر نیز نحوه تعریف کردن یک تابع مشابه را این بار در زبان برنامه نویسی Python نشان می‌دهد. https://virgool.io/p/kvgbztisoxjb/[c++]deffunction1():return%E2%80%9CHelloWorld%E2%80%9Dres=function1()print(res)[/c++] خروجی این کد شبیه به قسمت زیر خواهد بود.Hello Worldنوع دیگری از توابع، توابعی هستند که پارامتر ورودی دریافت می‌کنند؛ اما خروجی خاصی را تولید نمی نمایند. مثالی که در قسمت زیر مشاهده می کنید نحوه تعریف کردن یک تابع به این شکل را در زبان C++ نشان می‌دهد.#includeusing namespace std;void function1(int x, int y) {int c;c = x+y;cout<<“Sum is: “<<c;}int main() {function1(4,5);return 0;}خروجی این کد شبیه به قسمت زیر خواهد بود.Sum is: 9 https://virgool.io/p/kvgbztisoxjb/%DA%A9%D8%AF%DB%8C%DA%A9%D9%87%D8%AF%D8%B1%D9%82%D8%B3%D9%85%D8%AA%D8%B2%DB%8C%D8%B1%D9%85%D8%B4%D8%A7%D9%87%D8%AF%D9%87%D9%85%DB%8C%DA%A9%D9%86%DB%8C%D8%AF%DB%8C%DA%A9%D8%AA%D8%A7%D8%A8%D8%B9%D9%85%D8%B4%D8%A7%D8%A8%D9%87%D8%B1%D8%A7%D8%A7%DB%8C%D9%86%D8%A8%D8%A7%D8%B1%D8%AF%D8%B1%D8%B2%D8%A8%D8%A7%D9%86%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8CPython%D9%86%D8%B4%D8%A7%D9%86%D9%85%DB%8C%E2%80%8C%D8%AF%D9%87%D8%AF. https://virgool.io/p/kvgbztisoxjb/[c++]deffunction1(x,y):c=x+yprint(%E2%80%9CSumis:%E2%80%9D,c)function1(4,5)[/c++] خروجی این کد شبیه به قسمت زیر خواهد بود. https://virgool.io/p/kvgbztisoxjb/(%E2%80%98Sumis:%E2%80%99,9) و نهایتاً توابعی که هم پارامتر ورودی دریافت می‌کنند و هم یک خروجی را تولید می‌کنند را بررسی خواهیم کرد. مثالی که در قسمت زیر مشاهده می کنید تعریف کردن یک تابع به این شکل را در زبان برنامه نویسی C++ نشان می‌دهد.#includeusing namespace std;int function1(int x, int y) {int c;c = x + y;return c;}int main() {int res;res = function1(4,5);cout<<“Sum is: “<<res;return 0;}خروجی این کد شبیه به قسمت زیر خواهد بود.Sum is: 9اگر بخواهیم همین تابع را در زبان برنامه نویسی Python تعریف کنیم شبیه به قسمت زیر عمل خواهیم کرد.def function1(x,y):c = x + yreturn cres = function1(4,5)print(“Sum is “,res)خروجی این کد شبیه به قسمت زیر خواهد بود.(‘Sum is ‘, 9)پس تا به اینجای کار متوجه شدیم که توابع در زبان های برنامه نویسی تابع گرا به دو دسته توابع از پیش ساخته شده و توابع تعریف شده توسط کاربر دسته ‌بندی می‌شوند که توابع تعریف شده توسط کاربر خود می‌توانند در چهار دسته بندی مختلف قرار بگیرند.