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



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

جلسه ۱۶-۰۱ : دنباله یا توالی در #F

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

      مقدمه

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

      دنباله یا توالی در #F

      تعریف توالی در #F

      در ابتدا به چگونگی تعریف توالی در #F می پردازیم.

      دنباله ها با استفاده از سینتکس زیر تعریف می شوند:

      مثال : 

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

      مثال : 

      ایجاد توالی و عبارات توالی

      ایجاد عبارات دنباله و دنباله مشابه لیست ها ست، شما می توانید توالی ها را با استفاده از محدوده ها و معقولات ایجاد کنید.
      عبارات توالی عبارت هایی هستند که می توانید برای ایجاد توالی ها بنویسید. این را می توان به شکل های زیر انجام داد.

      • با مشخص کردن محدوده
      • با تعیین دامنه با افزایش یا کاهش.
      • با استفاده از کلمه کلیدی yield برای تولید مقادیری که بخشی از توالی هستند.
      • با استفاده از اپراتور →.

      مثال های زیر این مفاهیم را نشان می دهند.( دنباله یا توالی در #F )

      مثال ۱

      مثال : 

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

      مثال : 

      مثال ۲

      برنامه زیر، اعداد اول را از ۱ تا ۵۰ چاپ می کند.

      مثال : 

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

      مثال : 

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

      اعمال پایه در دنباله یا توالی در #F

      جدول زیر نشان می دهد که عملیات پایه در نوع داده های توالی چگونه است.

      مقدارتوضیحات
      <append : seq<‘T> → seq<‘T> → seq<‘Tدو enumeration(شمارش) داده شده را به عنوان یک enumeration مرتبط  تکی پوشش می دهد.
      average : seq<^T> → ^Tمیانگین عناصر در توالی را به دست می آورد.
      averageBy : (‘T → ^U) → seq<‘T> → ^Uمیانگین نتایج حاصل از اعمال تابع به هر عنصری از توالی را به دست می آورد.
      <cache : seq<‘T> → seq<‘Tیک توالی را که مرتبط با یک cached version از توالی ورودی است باز می گرداند.
      cast : IEnumerable → seq<‘T>یک سیستم loosely-typed می کند. مجموعه توالی به عنوان نوع توالی .
      choose : (‘T → ‘U option) → seq<‘T> → seq<‘U>تابع داده شده را به هر عنصر لیست اعمال می کند.

      لیستی که شامل نتایج هر عنصری که در آن تابع Some را بازمی گرداند، باز گردانده می شود.

      collect : (‘T → ‘Collection) → seq<‘T> → seq<‘U>تابع داده شده را به هر عنصر دنباله اعمال می کند و تمام نتایج را پیوند می دهد.
      compareWith : (‘T → ‘T → int) → seq<‘T> → seq<‘T> → intمقایسه دو توالی با استفاده از تابع مقایسه داده شده، عنصر به عنصر.
      <concat : seq<‘Collection> → seq<‘Tترکیبی از enumeration-of-enumerations داده شده به عنوان یک شمارش پیوندی تک است.
      countBy : (‘T → ‘Key) → seq<‘T> → seq<‘Key * int>یک تابع key-generating برای هر عنصر یک دنباله اپلای می کند.

      و دنباله ای که کلید های yielding unique را برگردانده و تعداد آنها در دنباله اصلی را نشان می دهد را نشان می دهد.

      <delay : (unit → seq<‘T>) → seq<‘Tیک دنباله ای را که از مشخصه delay داده شده یک دنباله ساخته شده است، بازمی گرداند.
      <distinct : seq<‘T> → seq<‘Tیک توالی را که حاوی هیچ ورودی تکراری نیست با توجه به مقایسه generic hash و equality در ورودی ها بازمی گردند.

      اگر عنصر چندین بار در توالی اتفاق می افتد، رخدادهای بعدی از بین می روند.

      <distinctBy : (‘T → ‘Key) → seq<‘T> → seq<‘Tیک توالی را که حاوی هیچ ورودی تکراری نیست.

      با توجه به مقایسه های generic hash و equality بر روی کلیدهای بازگشتی که توسط تابع key-generating داده شده، بازمی گرداند.

      اگر عنصر چندین بار در توالی اتفاق می افتد، رخدادهای بعدی از بین می روند.

      <empty : seq<‘Tتوالی خالی ایجاد می کند.
      exactlyOne : seq<‘T> → ‘Tتنها عنصر دنباله را باز می گرداند.
      exists : (‘T → bool) → seq<‘T> → boolتست این که هر عنصری از توالی به پیش فرض داده شده پاسخ دهد.
      exists2 : (‘T1 → ‘T2 → bool) → seq<‘T1> → seq<‘T2> → boolتست این که هر جفت عناصر مربوطه از توالی های ورودی منطبق با پیش فرض داده شده است.
      filter : (‘T → bool) → seq<‘T> → seq<‘T>مجموعه جدیدی را که شامل تنها عناصری از مجموعه است که پیش فرض داده شده true را بازگرداند.
      find : (‘T → bool) → seq<‘T> → ‘Tعنصر اول را برمی گرداند برای این که تابع داده شده true را باز گرداند.
      findIndex : (‘T → bool) → seq<‘T> → intایندکس اولین عنصر را باز می گرداند برای این که تابع داده شده true را باز گرداند.
      fold : (‘State → ‘T → ‘State) → ‘State → seq<‘T> → ‘Stateیک تابع را برای هر عنصر مجموعه اعمال می کند.

      یک آرگومان accumulator را از طریق محاسبات تریدینگ می کند.

      اگر تابع ورودی f است و عناصر i0 … iN، سپس این تابع f (… (f s i0) …) iN را محاسبه می کند.

      forall : (‘T → bool) → seq<‘T> → boolتست این که تمام عناصر دنباله منطبق بر پیش فرض داده شده باشد.
      forall2 : (‘T1 → ‘T2 → bool) → seq<‘T1> → seq<‘T2> → boolتست این که تمام جفت عناصر کشیده شده از دو توالی منطبق بر پیش فرض داده شده هستند.

      اگر یک دنباله کوتاهتر از دیگری باشد، سپس عناصر باقی مانده بیش تر از توالی، نادیده گرفته می شوند.

      groupBy : (‘T → ‘Key) → seq<‘T> → seq<‘Key * seq<‘T>>یک تابع key-generating را برای هر عنصر یک دنباله اعمال می کند و یک توالی از کلیدهای unique را تولید می کند.

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

      head : seq<‘T> → ‘Tاولین عنصر دنباله را باز می گرداند.
      <init : int → (int → ‘T) → seq<‘Tیک ترتیب جدید ایجاد می کند که در صورت تکرار، عناصر متوالی را با فراخوانی تابع داده شده برمی گرداند ،به مقدار شمارش داده شده.

      نتایج فراخوانی تابع ذخیره نمی شوند،

      بدین معناست که تابع برای ایجاد مجدد عناصر ضروری ست مجدد اپلای شود.

      این تابع از ایندکس آیتم در حال تولید منتقل می شود.

      <initInfinite : (int → ‘T) → seq<‘Tیک ترتیب جدید ایجاد می کند که در صورت تکرار، عناصر متوالی را با فراخوانی تابع داده شده بازگشت خواهد داد.

      نتایج فراخوانی تابع ذخیره نمی شوند، به این معنی که برای بازسازی عناصر، ریپلای تابع ضروری خواهد بود.

      این تابع از ایندکس آیتم در حال تولید منتقل می شود.

      isEmpty : seq<‘T> → boolتست اینکه آیا دنباله دارای عناصر است
      iter : (‘T → unit) → seq<‘T> → unitتابع داده شده را به هر عنصر مجموعه اعمال می کند.
      iter2 : (‘T1 → ‘T2 → unit) → seq<‘T1> → seq<‘T2> → unitتابع داده شده به طور همزمان به دو مجموعه اعمال می شود.

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

      iteri : (int → ‘T → unit) → seq<‘T> → unitتابع داده شده را به هر عنصر مجموعه اعمال می کند.

      عدد صحیح یا integer منتقل شده به تابع، نشان دهنده ایندکس عنصر است.

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

      کلام پایانی

      در قسمت اول دنباله یا توالی در #F به تعریف توالی در #F پرداختیم.

      ادامه مباحث رو در قسمت بعدی دنبال خواهیم نمود.

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