همه چیزی که باید در آرایه ها در #C بدانید

همه چیزی که باید در آرایه ها در #C بدانید
فهرست مقاله [نمایش]

    آرایه‌ها در #C گروهی از متغیرها هستند که تحت یک نام در حافظه قرار می‌گیرند. در برنامه‌نویسی، گاهی اوقات نیاز پیدا می‌کنیم تا دسته‌ای از اطلاعات را در یک مکان ذخیره کنیم. به عنوان مثال، ممکن است بخواهیم 1000 عدد مختلف را در حافظه نگه‌داری کنیم. در چنین مواقعی، استفاده از 1000 متغیر جداگانه منطقی نیست و بهتر است از آرایه‌ها استفاده کنیم.
     برای یادگیری زبان برنامه نویسی سی شارپ سایت باگتو به شما کمک می کند که آموزش سی شارپ(#C) را از سطوح پایه آموزش ببینید و در دوره آموزش سی شارپ پیشرفته به بالاترین سطح از دانش سی شارپ دست خواهید یافت.

    آرایه مقداری از حافظه را که در اختیار دارد به خانه های که تعداد آن را ما مشخص می کنیم تقسیم می کند و مقادیر را در این خانه ها ذخیره می کند. که به هر مورد از این خانه ها عنصر آرایه گفته می شود. نوع آرایه در سی شارپ می تواند انواع داده معتبر  مانند float , int , char , string ,long , و غیره باشد.

     

     

    نکات مهم در کار با آرایه‌ها در#C:

    • آرایه‌ها داینامیک هستند: می‌توانیم در طول اجرای برنامه، داده‌های آنها را تغییر دهیم.
    • طول آرایه: با استفاده از خصوصیت length می‌توانیم طول آرایه را مشخص کنیم.
    • مقداردهی اولیه: می‌توانیم آرایه‌ها را هنگام ایجاد با [] مقداردهی کنیم.
    • آرایه‌ها مرتب هستند: هر عنصر آرایه با یک شماره اندیس که از 0 شروع می‌شود، مشخص می‌شود
    • آرایه ها در سی شارپ یک شئ از نوع system.array هستند.
    • مقادیر پیش فرض برای آرایه های از نوع عددی مانند int , long  مقدار 0 می باشد و برای آرایه های غیر عددی مقدار null به عنوان پیشفرض ذخیره می شود
    • عناصر آرایه می توانند از هر نوعی باشند
    • آرایه ها را می توانیم با حلقه های for و foreach پیمایش کنیم.
    • زبان سی شارپ از آرایه های چند بعدی پشتیبانی می کند

     

    استفاده از کلاس array برای آرایه ها در سی شارپ

    این کلاس پایه برای همه آرایه ها استفاده می شود و ویژگی ها و روش های مختلفی را برای کار با آرایه ها ارائه می دهد.
     

    کلاس array در سی شارپ

    کلاس array در سی شارپ برای کار با آرایه ها ساخته شده است، این کلاس امکاناتی زیادی نظیر ایجاد، ویرایش، جستجو و مرتب سازی آرایه ها را به ما ارائه می دهد کلاس array بر اساس رابط IList ساخته شده است و یک مجموعه در نظر  گرفته می شود. در ادامه این مقاله امکانات کلاس array را معرفی  می کنیم. دانش کارایی این کلاس

    در جدول  زیر properties های که کلاس array  ارائه می دهد را مشاهده می کنید

    IsFixedSizeبا این خصوصیت می توانیم دریابیم که ارایه اندازه ثابت دارد یا خیر
    IsReadOnlyاین خصوصیت مشخص می کند که نوع آرایه فقط خواندنی است یا خیر
    IsSynchronized 
    Lengthتعداد عناصر ارایه را به ما برمیگرداند
    LongLengthتعداد عناصر ارایه را به صورت عدد 64 بیتی برمیگرداند
    Rankاین خصوصیت تعداد بعد ارایه را برمیگرداند

     

     

    متد های کلاس array را در جدول زیر بررسی می کنیم

    AsReadOnly()

    آرایه را به فقط خواندنی تبدیل می کند.

    BinarySearch()

    با استفاده از الگوریتم جستجوی باینری یک مقدار را در آرایه تک بعدی جستجو می کند

    Clear()

    این متد مقادیر داخل عناصر ارایه را پاک می کند و مقادیر پیش فرض را در عناصر قرار می دهد. که این مقدار بسته به نوع داده ای ارایه 0 یا false و یا null می باشد.

    ConvertAll()

    آرایه ای از یک نوع را به ارایه ای از نوع دیگر تبدیل می کند.

    Copy()

    این متد برای کپی کردن عناصر یک آرایه در یک آرایه دیگر است. در پارامتر ورودی این متد می توانیم تعدادی که قصد کپی آن را داریم مشخص کنیم. مثال زیر 5 عنصر اول ارایه کپی می کند.  Array.Copy(first,second,5);

     

     

    Empty()

    آرایه خالی برمیگرداند

    Equals()

    تعیین میکند که شئ وارد شده در پارامتر ورودی برابر با شئ فعلی است یا خیر

    Find()

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

    FindAll()

    یک مقدار از ورودی دریافت می کند و همه ی عناصری که برابر با آن باشد را بر می گرداند.

    FindIndex()

    یک مقدار را از ورودی می گیرد و index اولین عنصری که برابر با آن باشد را بر می گرداند

    FindLast()

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

    FindLastIndex()

    یک مقدار را از ورودی می گیرد و index آخرین عنصری که برابر با آن باشد را بر می گرداند

    FoeEach()

    حلقه ی foreach را بر روی ارایه اجرا می کند.

    GetEnumerator()

    IEnumerator را برای Array برمی گرداند.

    GetLength()

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

    GetLongLength()

    تعداد عناصر موجود در ارایه را به عدد 64 بیتی بر میگرداند

    GetLowerBound()

    محدوده پایینی بعد ارایه را نشان می دهد.

    GetType()

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

    GetUpperBound()

    محدوده بالایی بعد ارایه را برمیگرداند

    GetValue()

    این متد یک عدد که index ارایه است را دریافت میکند و مقدار آن را برمی گرداند.

    IndexOf()

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

    IndexOf(array,”bugeto”);

    Resize()

    از این متد برای تغییر سایزآرایه های تک بعدی استفاده می کنیم

    Reverse()

    این متد ترتیب عناصرآرایه تک بعدی را معکوس می کند

    SetValue()

    مقداری را از پارامتر ورودی دریافت می کند و در عنصر مشخص شده قرار می دهد.

    Sort()

    عناصر را در یک ارایه ی تک بعدی مرتب می کن

     

     

    مقدار دهی آرایه در سی شارپ 

    در زبان برنامه نویسی سی شارپ با 5 روش مختلف می توانیم مقدار دهی آرایه ها را انجام دهیم. 

    میتوانیم با استفاده از شماره  Index به عنصر مورد نظر دسترسی داشته باشیم و مقدار دهی آن را انجام دهیم.

                string[] learningSite = new string[10];
                learningSite[0] = "bugeto.net";
    

     

    این امکان نیز وجود دارد که هنگام تعریف آرایه همان لحظه مقدار دهی آن را انجام دهیم.

    double[] balance = { 2340.0, 4523.69, 3421.0};

     

    در یک خط کد می توانیم بعد از ایجاد کردن بلافاصله مقداردهی آن را انجام دهیم

    int [] num = new int[5]  { 20,  77, 118, 110, 115};

     

    برای مقدار دهی می توانیم اندازه آرایه را وارد نکنیم و همانجا شروع به مقدار دهی کنیم

    int [] num = new int[]  { 20,  19, 88, 1399, 1400};

     

    می توانیم با روش زیر یک متغیر را در یک متغیر دیگر کپی کنیم. در چنین حالتی هر دو متغیر به یک مکان از حافظه اشاره می کنند.

    int [] num = new int[]  { 20,150,186, 698, 7};
    int[] score = marks;
    

     

    هنگامی که یک آرایه ایجاد می کنیم، کامپایلر #C به طور ضمنی بسته به نوع آرایه، مقدار پیش فرضی برای آن در نظر  می گیرد به عنوان مثال برای ارایه ای از نوع int تمام عناصر آن با 0 مقدار دهی می شوند.

     

     با استفاده از Index به عناصر داخل یک آرایه دسترسی داریم. این کار با قرار دادن شماره Index در داخل علامت  [ ] قابل اجرا است.

    double salary = balance[9];

    در مثال زیر یک ارایه با تعداد 10 عنصر ایجاد می کنیم و با یک حلقه مقادیری در عناصر آرایه قرار می دهیم سپس با یک حلقه دیگر دسترسی و نمایش عناصر ارایه را انجام می دهیم.

                int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
                int i, j;
    
                /* مقدار دهی عناصر ارایه */
                for (i = 0; i < 10; i++)
                {
                    n[i] = i + 100;
                }
    
                /* نمایش عناصر  ارایه*/
                for (j = 0; j < 10; j++)
                {
                    Console.WriteLine("Element[{0}] = {1}", j, n[j]);
                }
                Console.ReadKey();
    

    استفاده از حلقه foreach برای آرایه

    در مثال قبلی از حلقه for برای دسترسی به عناصر آرایه استفاده کردیم. در این مثال از حلقه foreach برای دسترسی به عناصر آرایه استفاده می کنیم.

                int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
                int i ;
    
                /* مقدار دهی عناصر ارایه */
                for (i = 0; i < 10; i++)
                {
                    n[i] = i + 100;
                }
    
                /* نمایش عناصر  ارایه*/
      
     
                foreach (int j in n)
                {
                      i = j - 100;
                    Console.WriteLine("Element[{0}] = {1}", i, j);
                }
                Console.ReadKey();
    

     

    نحوه جستجو در آرايه سي شارپ

     

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

     

    جستجو در آرایه با استفاده از متد Find

    با استفاده از متد Find() از کلاس array می توانیم جستجو در آرایه ها را انجام دهیم. این متد یک ارایه از ورودی دریافت می کند و با عبارات لامبدا در پارامتر ورودی دوم این متد نحوه جستجو را مشخص  می کنیم.  این متد در عناصر آرایه  اولین عنصری را که شرایط جستجو شده را داشته باشد بر می گرداند.

                 string[] persons = new string[] { "ehsan", "mayasam", "jamshid", "samyar", "sasan", "ahora" };
    
                var search1 = Array.Find(persons, p => p == "ehsan");
    
                var search2 = Array.Find(persons, p => p.StartsWith("s"));
    
                Console.WriteLine(search1);
                Console.WriteLine(search2);
    
    
                Console.ReadKey();
    

    خروجی

    ehsan
    samyar

     

    جستجو در آرایه با استفاده از متد FindAll

    متد FindAll همانند متد Find عمل می کند با این تفاوت که Find فقط اولین عنصر را بر می گرداند ولی متد FindAll تمامی عناصری که شرایط را داشته باشند برمی گرداند. خروجی این متد نیز خود یک آرایه است، کد زیر  یک مثال از این جستجو است که خروجی آن را با یک foreach نمایش می دهیم.

                string[] persons = new string[] { "ehsan", "mayasam", "jamshid", "samyar", "sasan", "ahora" };
    
     
                var search1 = Array.FindAll(persons, p => p.StartsWith("s"));
    
                foreach (var item in search1)
                {
                    Console.WriteLine(item);
    
                }
    
     
                Console.ReadKey();
    

    خروجی

    samyar
    sasan

     

    جستجو در آرایه با استفاده از متد FindLast

    متد FindLast دقیقا همانند متد Find  عمل می کند با این تفاوت که این متد آخرین عنصر یافت شده را بر می گرداند.

    string searchFindLast = Array.FindLast(persons, p => p.StartsWith("s"));

     

    جستجو در آرایه با استفاده از متد FindIndex

    متد FindIndex جستجو را در آرایه انجام میدهد و Index اولین عنصری را که پیدا کند  بر می گرداند.

    int searchFindIndex = Array.FindIndex(persons, p => p.StartsWith("s"));

     

    جستجو در آرایه با استفاده از متد FindLastIndex

    این متد همانند FindIndex عمل می کند با این تفاوت که Index آخرین عنصر یافت شده را بر می گرداند.

                int searchFindLastIndex = Array.FindLastIndex(persons, p => p.StartsWith("s"));

    نمايش عناصر آرايه در #C
     

     با استفاده از Index به عناصر داخل یک آرایه دسترسی داریم. این کار با قرار دادن شماره Index در داخل علامت  [ ] قابل اجرا است.

    double salary = balance[9];

    در مثال زیر یک ارایه با تعداد 10 عنصر ایجاد می کنیم و با یک حلقه مقادیری در عناصر آرایه قرار می دهیم سپس با یک حلقه دیگر دسترسی و نمایش عناصر ارایه را انجام می دهیم.

                int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
                int i, j;
    
                /* مقدار دهی عناصر ارایه */
                for (i = 0; i < 10; i++)
                {
                    n[i] = i + 100;
                }
    
                /* نمایش عناصر  ارایه*/
                for (j = 0; j < 10; j++)
                {
                    Console.WriteLine("Element[{0}] = {1}", j, n[j]);
                }
                Console.ReadKey();
    

    استفاده از حلقه foreach برای آرایه

    در مثال قبلی از حلقه for برای دسترسی به عناصر آرایه استفاده کردیم. در این مثال از حلقه foreach برای دسترسی به عناصر آرایه استفاده می کنیم.

                int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
                int i ;
    
                /* مقدار دهی عناصر ارایه */
                for (i = 0; i < 10; i++)
                {
                    n[i] = i + 100;
                }
    
                /* نمایش عناصر  ارایه*/
      
     
                foreach (int j in n)
                {
                      i = j - 100;
                    Console.WriteLine("Element[{0}] = {1}", i, j);
                }
                Console.ReadKey();
    

    اگر با مفهوم  حلقه ها  در سی شارپ آشنا نیستین در مقاله حلقه foreach در زبان سی شارپ  در سایت باگتو بصورت مفصل به آموزش حلقه foreach پرداختیم.


    • نویسنده: احسان بابائی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران