دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۶
  • اردیبهشت

جلسه ۱۰ : توابع در #F

  • دسته‌بندی‌ها :
جلسه ۱۰ : توابع در #F
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      سلام درود خدمت همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم. در این قسمت از آموزش کار با توابع در #F رو بررسی خواهیم نمود. انواع تابع و چگونگی فراخوانی یک تابع در #F رو در ادامه خواهیم داشت.

      توابع در #F

      در #F ، توابع مانند انواع داده کار می کنند. شما می توانید یک تابع را به همان شیوه مانند هر متغیر دیگری اعلان و استفاده کنید.

      از آن جا که توابع می توانند مانند هر متغیر دیگری استفاده شوند، می توانید:

      • یک تابع را با یک نام ایجاد کنید و آن نام را با یک type مرتبط کنید.
      • مقدار به آن اختصاص دهید.
      • انجام برخی محاسبات در آن مقدار.
      • آن را بعنوان یک پارامتر به یک تابع یا فرعی دیگر منتقل کنید.
      • یک تابع را به عنوان نتیجه یک تابع دیگر بازگردانید.

      تعریف یک تابع

      در این قسمت از کار با توابع در #F تعریف تابع رو داریم.

      توابع با استفاده از کلید واژه let تعریف می شوند. تعریف تابع دارای سینتکس زیر است .( توابع در #F )

      مثال : 

      جایی که،

      • function-name نام تابع شناسه ای است که تابع را نشان می دهد.
      • parameter-list لیستی از پارامترهای جدا شده توسط spaces را نشان می دهد. شما همچنین می توانید یک نوع صریح را برای هر پارامتر مشخص کنید و اگر کامپایلر مشخص نشده باشد، تمایل دارد آن را از بدنه تابع (از قبیل متغیرها) استنباط کند.
      • function-body شامل یک عبارت یا عبارات ترکیب است که شامل تعدادی عبارات است. عبارت نهایی در بدنه تابع، مقدار بازگشتی است.
      • return-type دونقطه است که به دنبال آن نوع می آید و اختیاری است. اگر نوع بازگشت مشخص نشده باشد، کامپایلر آن را از عبارت نهایی در بدنه تابع تعریف می کند.

      پارامترهای یک تابع

      نام پارامترها را باید درست بعد از نام تابع لیست کنید. شما می توانید نوع یک پارامتر را مشخص کنید. نوع پارامتر باید همراه با نام پارامتر که توسط  یک دو نقطه جدا شده دنبال شود.

      اگر هیچ نوع پارامتری مشخص نشده باشد، توسط کامپایلر استنباط خواهد شد.

      به عنوان مثال

      مثال : 

      فراخوانی یک تابع در #F

      یک تابع توسط مشخص کردن نام تابع و سپس یک space فراخوانی می شود و سپس هر آرگومانی که با space جدا شده است.

      مثال برای فراخوانی یک تابع در #F

      مثال : 

      برنامه های زیر مفاهیم را نشان می دهند.

      مثال ۱

      برنامه زیر حجم استوانه را محاسبه می کند زمانی که شعاع و طول به عنوان پارامتر داده می شود.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      مثال ۲

      برنامه زیر مقدار بزرگتری از دو پارامتر داده شده را باز می گرداند.( فراخوانی یک تابع در #F )

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      مثال ۳

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      توابع بازگشتی

      توابع بازگشتی توابعی هستند که خود را فراخوانی می کنند.

      شما با استفاده از ترکیب کلید واژه let rec می توانید توابع بازگشتی یا Recursive را تعریف می کنید.

      سینتکس تعریف یک تابع بازگشتی را در زیر می بینیم.

      مثال : 

      برای مثال

      مثال : 

      مثال ۱

      برنامه زیر فیبوناچی ۱ تا ۱۰ را باز می گرداند.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      مثال ۲

      برنامه زیر فاکتوریل ۸ را باز می گرداند.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      علامت arrow در #F

      #F در مورد نوع داده ها در توابع و مقادیر آن ها، با استفاده از نماد arrow-پیکان گزارش می دهد. بگذارید یک نمونه از یک تابع را بگیریم که یک ورودی int را می گیرد و یک رشته را برمی گرداند. با نماد arrow، آن به صورت زیر نوشته شده است.

      مثال : 

      انواع داده ها از چپ به راست خوانده می شوند.

      اجازه دهید یک تابع فرضی دیگر بگیریم که دو ورودی داده int را می گیرد و یک رشته را باز می گرداند.

      مثال : 

      #F نوع داده را با استفاده از نشانه فلش زنجیره ای نشان می دهد.

      مثال : 

      نوع بازگشت در راست ترین سمت با فلش زنجیره ای نشان داده شده است.

      بعضی نمونه های دیگر

      نشانهمعنی
      float → float → floatاین تابع دو ورودی شناور را می گیرد، شناور دیگری را باز می گرداند.
      int → string → floatاین تابع یک int و یک ورودی string را می گیرد، یک شناور یا float را باز می گرداند.

      عبارات Lambda

      یک عبارت Lambda  یک تابع بدون نام است.

      اجازه دهید نمونه ای از دو توابع را به دست آوریم.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      حالا در مثال فوق، اگر به جای تعریف تابع mul، ما می توانستیم عبارات Lambda را استفاده نماییم مانند مثال زیر

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      ترکیب Function و Pipelining

      در #F ، یک تابع می تواند از سایر توابع تشکیل شود.

      مثال زیر ترکیبی از یک تابع به نام f را نشان می دهد،که از دو تابع function1 و function2 تشکیل شده است.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      #F ویژگی ای به نام pipelining توابع را نیز فراهم می کند. Pipelining اجازه می دهد تا فراخوانی توابع به عنوان عملیات متوالی به هم متصل شوند.

      مثال زیر این را نشان می دهد.

      مثال : 

      هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.

      مثال : 

      کلام پایانی

      در این قسمت از آموزش کار با توابع در #F رو بررسی نمودیم و مشاهده نمودیم که توابع با استفاده از کلید واژه let تعریف می شوند.

      انواع تابع و چگونگی فراخوانی یک تابع در #F رو نیز در ادامه بیان نمودیم. در ادامه به بررسی رشته ها در زبان برنامه نویسی #F خواهیم پرداخت.

      QR:  جلسه ۱۰ : توابع در #F
      به اشتراک بگذارید