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



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

جلسه ۲۱-۰۱ : آرایه ها در #F

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

      مقدمه

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

      آرایه ها در #F

      آرایه ها fixed-size, zero-based, mutable از عناصر داده متوالی هستند که همه ی آن ها از یک نوع می باشند.

      ایجاد آرایه ها

      شما می توانید آرایه ها را با استفاده از سینتکس های مختلف و روش ها و یا با استفاده از توابعی از ماژول Array ایجاد کنید.

      در این بخش ما درباره ایجاد آرایه ها بدون استفاده از توابع ماژول بحث خواهیم کرد.
      سه روش syntactical برای ایجاد آرایه ها بدون توابع وجود دارد.

      • با فهرست مقادیر متوالی بین [| و |] که با semicolons جدا شده است.
      • با قرار دادن هر عنصر در یک خط جداگانه، در این صورت جداساز semicolon اختیاری است.
      • با استفاده از عبارات توالی با استفاده از یک اپراتور نقطه (.) و براکت ([و]) می توانید از عناصر آرایه استفاده کنید.

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

      مثال : 

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

      مثال : 

      در ادامه عملیات پایه در آرایه ها در #F روخواهیم داشت.

      عملیات پایه در آرایه ها در #F

      ماژول کتابخانه Microsoft.FSharp.Collections.Array از عملیات در آرایه های یک بعدی پشتیبانی می کند.
      جدول زیر عملیات پایه در آرایه ها در #F را نشان می دهد.

      مقدارتوضیحات
      []append : ‘T [] → ‘T [] → ‘Tآرایه ای ایجاد می کند که شامل عناصر یک آرایه به دنبال عناصر آرایه دیگری است.
      average : ^T [] → ^Tمیانگین عناصر در یک آرایه را به دست می آورد.
      averageBy : (‘T → ^U) → ‘T [] → ^Uمیانگین عناصر ایجاد شده توسط اعمال یک تابع به هر عنصر آرایه را بازمی گرداند.
      blit : ‘T [] → int → ‘T [] → int → int → unitتعدادی از عناصر را از یک آرایه می خواند و آنها را در دیگری می نویسد.
      []choose : (‘T → U option) → ‘T [] → ‘Uیک تابع عرضه شده به هر عنصر آرایه اعمال می شود.

      آرایه ای را که حاوی نتایج x برای هر عنصر است برای این که آن تابع ( Some (x را بازگرداند.

      []collect : (‘T → ‘U []) → T [] → ‘Uتابع عرضه شده را به هر عنصر آرایه اعمال می کند، نتایج را تلفیق می کند و آرایه ترکیبی را باز می گرداند.
      []concat : seq<‘T []> → ‘Tیک آرایه را ایجاد می کند که شامل عناصر هر کدام از آرایه های ارائه شده می باشد.
      []copy : ‘T → ‘Tآرایه ای را ایجاد می کند که حاوی عناصر آرایه ارائه شده است.
      []create : int → ‘T → ‘Tیک آرایه ایجاد می کند که مقدار عناصر آن به اندازه ی عرضه ابتدایی است.
      []empty : ‘Tیک آرایه خالی از نوع داده را برمی گرداند.
      exists : (‘T → bool) → ‘T [] → boolتست این که آیا هر عنصر از یک آرایه، پیش فرض ارائه شده را برآورده می کند.
      exists2 : (‘T1 → ‘T2 → bool) → ‘T1 [] → ‘T2 [] → boolتست این که آیا هر جفت عناصر مربوطه از دو آرایه شرایط عرضه شده را برآورده می کند.
      []fill : ‘T [] → int → int → ‘T → unitمقدار عناصر آرایه را با مقدار عرضه شده پر می کند.
      filter : (‘T → bool) → ‘T [] → ‘Tمجموعه ای را که حاوی تنها عناصری از آرایه های ارائه شده است را برای این که وضعیت بازگشت true عرضه شود.
      find : (‘T → bool) → ‘T [] → ‘Tاولین عنصر را بازمی گرداند که تابع ارائه شده true را بازگرداند.

      KeyNotFoundException را اعلام می کند، اگر چنین عنصری وجود ندارد.

      findIndex : (‘T → bool) → ‘T [] → intشاخص اول عنصر را در یک آرایه نمایش می دهد که شرایط عرضه شده را برآورده می کند.

      KeyNotFoundException را اعلام می کند، اگر هیچ یک از عناصر این شرط را برآورده نمی کند.

      fold : (‘State → ‘T → ‘State) → ‘State → ‘T [] → ‘Stateیک تابع را برای هر عنصر آرایه اعمال می کند.

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

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

      fold2 : (‘State → ‘T1 → ‘T2 → ‘State) → ‘State → ‘T1 [] → ‘T2 [] → ‘Stateیک تابع را به جفت عناصر از دو آرایه ارائه شده، از چپ به راست اپلای می کند یک آرگومان accumulator را از طریق محاسبات تری.

      دینگ می کند.

      دو آرایه ورودی باید طول یکسان داشته باشند.

      در غیر این صورت، ArgumentException مطرح شده است.

      foldBack : (‘T → ‘State → ‘State) → ‘T [] → ‘State → ‘Stateیک تابع را برای هر عنصر آرایه اعمال می کند.

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

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

      foldBack2 : (‘T1 → ‘T2 → ‘State → ‘State) → ‘T1 [] → ‘T2 [] → ‘State → ‘Stateیک تابع به جفت عناصر از دو آرایه ی ارائه شده اعمال  می شود.

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

      دو آرایه ورودی باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است.

      forall : (‘T → bool) → ‘T [] → boolتست این که آیا تمام عناصر آرایه شرایط عرضه شده را برآورده می کنند.
      forall2 : (‘T1 → ‘T2 → bool) → ‘T1 [] → ‘T2 [] → boolتست این که آیا تمام عناصر متناظر دو آرایه ارائه شده، شرایط عرضه شده را برآورده می کنند.
      get : ‘T [] → int → ‘Tعنصر را از یک آرایه می گیرد.
      []init : int → (int → ‘T) → ‘Tیک تابع عرضه شده برای ایجاد آرایه ای از ابعاد عرضه شده استفاده می کند.
      isEmpty : ‘T [] → boolتست این که آیا یک آرایه حاوی عناصر است
      iter : (‘T → unit) → ‘T [] → unitتابع عرضه شده را به هر عنصر آرایه اعمال می کند.
      (iter2 : (‘T1 → ‘T2 → unit) → ‘T1 [] → ‘T2 [] → unitتابع عرضه شده را به یک جفت عناصر برای تطابق شاخص ها در دو آرایه اعمال می کند.

      دو آرایه باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است.

      iteri : (int → ‘T → unit) → ‘T [] → unitتابع عرضه شده را به هر عنصر آرایه اعمال می کند.

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

      iteri2 : (int → ‘T1 → ‘T2 → unit) → ‘T1 [] → ‘T2 [] → unitتابع عرضه شده را به یک جفت عنصر از تطبیق شاخص ها در دو آرایه اعمال می کند.

      همچنین index عناصر را منتقل می کند.

      دو آرایه باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است.

      length : ‘T [] → intطول آرایه را برمی گرداند.

      ویژگی Length هم همین کار را می کند.

      []map : (‘T → ‘U) → ‘T [] → ‘Uیک آرایه ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به هر یک از عناصر یک آرایه ارائه شده است.
      []map2 : (‘T1 → ‘T2 → ‘U) → ‘T1 [] → ‘T2 [] → ‘Uیک آرایه ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به عناصر متناظر دو آرایه ارائه شده است.

      دو آرایه ورودی باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است.

      []mapi : (int → ‘T → ‘U) → ‘T [] → ‘Uیک آرایه ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به هر یک از عناصر یک آرایه ارائه شده است.

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

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

      کلام پایانی

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

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

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