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



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

جلسه ۱۷ : Sets در #F

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

      مقدمه

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

      Sets در زبان #F

      sets در #F یک ساختار داده است که به عنوان مجموعه ای از آیتم ها بدون حفظ ترتیبی که در آن آیتم ها وارد شده است عمل می کند. Sets اجازه نمی دهد ورودی های تکراری به مجموعه وارد شوند.

      ایجاد Sets در زبان #F

      Sets در زبان #F می توانند به روش های زیر ایجاد شوند:

      • با ایجاد یک Set خالی با استفاده از Set.empty و اضافه کردن آیتم ها با استفاده از add function.
      • تبدیل توالی ها و لیست ها به Sets.

      برنامه زیر تکنیک ها نشان می دهد.( ایجاد Sets در زبان #F )

      مثال : 

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

      مثال : 

      حال که ایجاد Sets در زبان #F رو می دونیم وارد مبحث بعدی یعنی عملیات پایه در Sets می شویم.

      عملیات پایه در Sets

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

      مقدارتوضیحات
      <add : ‘T → Set<‘T> → Set<‘Tیک Set جدید را با یک عنصر اضافه شده به Set بازمی گرداند. بدون استثنا اگر Set قبلا شامل عنصر داده شده است اعلام می شود.
      contains : ‘T → Set<‘T> → boolاگر عنصر داده شده در Set داده شده است، true ارزیابی می شود.
      count : Set<‘T> → intتعداد عناصر موجود در Set را بر می گرداند.
      <difference : Set<‘T> → Set<‘T> → Set<‘Tیک Set جدید با عناصری از Set دوم که از اولی حذف شده را برمی گرداند.
      <empty : Set<‘TSet خالی برای نوع مشخص شده.
      exists : (‘T → bool) → Set<‘T> → boolتست این که هر عنصر از مجموعه منطبق بر پیش فرض داده شده است.

      اگر تابع ورودی پیش فرض و عناصر i0 … iN باشد، این تابع محاسبه می کند پیش فرض i0 یا … یا پیش فرض iN را.

      <filter : (‘T → bool) → Set<‘T> → Set<‘Tمجموعه جدیدی را که شامل تنها عناصری از مجموعه است را بازمی گرداند، برای این که پیش فرض داده شده true را برگرداند .
      fold : (‘State → ‘T → ‘State) → ‘State → Set<‘T> → ‘Stateتابع accumulating داده شده را به تمام عناصر Set اعمال می کند.
      foldBack : (‘T → ‘State → ‘State) → Set<‘T> → ‘State → ‘Stateتابع accumulating داده شده را به تمام عناصر Set اعمال می کند.
      forall : (‘T → bool) → Set<‘T> → boolتست اینکه تمام عناصر مجموعه بر اساس پیش فرض داده شده است.

      اگر تابع ورودی p باشد و عناصر i0 … iN باشد، این تابع p i0 && … && p iN را محاسبه می کند.

      <intersect : Set<‘T> → Set<‘T> → Set<‘Tمحل برخورد یا فصل مشترک دو Set را محاسبه می کند.
      <intersectMany : seq<Set<‘T>> → Set<‘Tتقاطع یک توالی sets را محاسبه می کند. دنباله باید خالی(non-empty) نباشد.
      isEmpty : Set<‘T> → boolاگر Set خالی باشد، true می شود.
      isProperSubset : Set<‘T> → Set<‘T> → boolاگر تمام عناصر set اول در set دوم هستند و حداقل یک عنصر از دومی در اولی نیست، true ارزیابی می شود.
      isProperSuperset : Set<‘T> → Set<‘T> → boolاگر تمام عناصر set دوم در اولی هستند و حداقل یک عنصر از اولی در دومی نیست. true ارزیابی می شود.
      isSubset : Set<‘T> → Set<‘T> → boolاگر تمام عناصر set اول در set دوم هستند .true ارزیابی می شود.
      isSuperset : Set<‘T> → Set<‘T> → boolاگر تمام عناصر set دوم در اولی هستند. true ارزیابی می شود.
      iter : (‘T → unit) → Set<‘T> → unitتابع داده شده به هر عنصر set اعمال می شود، به ترتیب با توجه به تابع مقایسه یا comparison .
      <map : (‘T → ‘U) → Set<‘T> → Set<‘Uیک مجموعه جدید را که شامل نتایج اعمال تابع داده شده به هر عنصری از set ورودی است، را بازمی گرداند.
      maxElement : Set<‘T> → ‘Tبالاترین عنصر در set را بر اساس دستورالعمل مورد استفاده برای set بر می گرداند.
      minElement : Set<‘T> → ‘Tکمترین عنصر در set را بر اساس دستورالعمل مورد استفاده برای set می گیرد.
      <ofArray : ‘T array → Set<‘Tset ی از مجموعه ای که حاوی عناصر مشابه به عنوان آرایه های داده می شود ایجاد می کند.
      <ofList : ‘T list → Set<‘Tیک set را ایجاد می کند که شامل عناصر مشابه به عنوان لیست داده شده است.
      <ofSeq : seq<‘T> → Set<‘Tیک مجموعه جدید از آبجکت قابل شمارش داده شده را ایجاد می کند.
      partition : (‘T → bool) → Set<‘T> → Set<‘T> * Set<‘T>set را به دو set حاوی عناصر تقسیم می کند.

      برای این که پیش فرض داده شده به ترتیب true و false را برگرداند.

      <remove : ‘T → Set<‘T> → Set<‘Tیک set جدید را با عنصر مشخص شده ی حذف شده باز می گرداند. اگر set شامل عنصر داده شده نباشد، بدون استثنائی اعلام شده است.
      <singleton : ‘T → Set<‘Tset شامل عنصر داده شده است.
      toArray : Set<‘T> → ‘T arrayآرایه ای را ایجاد می کند که شامل عناصری از set به ترتیب است.
      toList : Set<‘T> → ‘T listلیستی را ایجاد می کند که شامل عناصر set به ترتیب است.
      <toSeq : Set<‘T> → seq<‘Tیک نمایش منظم مجموعه را به عنوان یک آبجکت قابل شمارش بازمی گرداند.
      <union : Set<‘T> → Set<‘T> → Set<‘Tunion دو set را محاسبه می کند.
      <unionMany : seq<Set<‘T>> → Set<‘Tunion یک set متوالی را محاسبه می کند.

      مثال زیر استفاده از برخی از ویژگی های فوق را نشان می دهد .

      مثال

      مثال : 

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

      مثال : 

      کلام پایانی

      set ها برخلاف توالی یا دنباله ها که در جلسه قبل دیدیم، مجموعه ای از آیتم ها ولی بدون حفظ ترتیبی که در آن آیتم ها وارد شده باشد، می باشند. در این قسمت علاوه بر نحوه ایجاد Sets در زبان #F به بررسی مقادیر مختلف وارد شده در set مانند تقسیم  set به دو set به وسیله <partition : (‘T → bool) → Set<‘T> → Set<‘T> * Set<‘T تا مقادیر true یا false رو برگرداند و خیلی مقادیر دیگری که قبلا بیان نمودیم بررسی شدند. در ادامه جلسات به مبحث Maps در اف شارپ خواهیم پرداخت. با ما همراه باشید.

      QR:  جلسه ۱۷ : Sets در #F
      به اشتراک بگذارید