آیا دوست دارید آرایه در سی شارپ را با ما بیاموزید؟

خانه / آموزش / آیا دوست دارید آرایه در سی شارپ را با ما بیاموزید؟
آرایه در سی شارپ
آرایه در سی شارپ

با دستورات سی شارپ و نحوه استفاده ازآنها راشناختیم ودانستیم چه کاربردی دارداکنون میخواهیم با مفهمو آرایه آشنا شویم.

میدانید آرایه چیست؟چه کاربردی دارد؟چگونه میتوان ازآنها استفاده کرد؟

آیا لازم است نحوه کار با آرایه ها را بشناسیم؟

بادانسته هایی که تا کنون آموختیم ،فهمیدیم که برای ذخیره داده ها میتوان از متغیرهایی ازنوع int، string، … استفاده کرد که یک خانه از حافظه را اشغال میکردند اما همیشه تعریف اینگونه متغیرها جوابگوی برنامه نویسی نیست.

فرض کنید میخواهیم  10 عدد صحیح را در حافظه نگهداری کنیم. یک روش این است که 10 متغیر از نوع صحیح تعریف کنیم و هر مقدار را در یک متغیر قرار دهیم.

شاید این روش برای 10 عدد مطلوب باشد ولی برای مثال بخواهیم نمرات ریاضی تعدادی ازدانش آموزان را بااین روش ذخیره کنیم مسلما این روش کار معقولی نیست. برای حل این مشکل سی شارپ از متغیرهای دیگری به نام متغیرهای اندیس دار یا آرایه استفاده کرد .

آرایه یک نوع داده ای خاص است که می تواند تعداد مشخصی مقدار را در خود به صورت دنباله ای از مقادیر ذخیره کند.پس آرایه اسمی برای چند متغیر همنوع است.

درواقع آرایه ها بهترین ساختارهای نگهداری برای ذخیره سازی داده های زیاد هستند.

تعریف آرایه:

; [تعداد خانه های آرایه]   نوع داده آرایه      new =     نام آرایه       []نوع داده آرایه

           ;[int[]      numbers     =  new              int                       [10        

 

نحوه ساخت و ایجاد چند نمونه از آرایه را در زیر ببینید :

 int[] counter = new int[10]; // یک آرایه 10 تایی از اعداد صحیح

 char[] letters = new char[20]; // آرایه 20 تایی از کارکترها

 string[] strArray = new string[5]; // آرایه رشته ای

 Student[] stdArray = new Student[4]; // آرایه ای از دانش آموزان

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

1) int[] numbers = new[] { 2,6,3,1,7,9};

در کد بالا، آرایه ای از نوع int تعریف شده و مقادیر مشخص شده داخل {} در خانه های آرایه قرار میگیرد. در مثال قبلی آرایه تعریف شده حاوی 6 خانه خواهد بود (بر اساس تعداد اعداد داخل {} ).

می توان برای راحتی کار، از نوشتن []int صرفنظر کرد: 

                            int[] numbers = { 2,6,3,1,7,9};

 

پس به طورکلی برای تعریف آرایه ها و مقداردهی آن میتوان گفت:

در هر خانه از آرایه با استفاده از اندیس یا index آن می توان مقدار وارد کرد

double[] balance = new double[10];

balance[0] = 4500.0;

همینطور می توانید ، هنگام تعریف یک آرایه به خانه های آن مقدار نسبت بدهید، مانند:

 

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

می توانید مانند زیر آرایه را ساخته و مقداردهی اولیه کنید

 

int [] marks = new int[5]  { 99,  98, 92, 97, 95};

همینطور می توان آرایه را بدون تعریف طول ثابت ایجاد کرد

 

int [] marks = new int[]  { 99,  98, 92, 97, 95};

دسترسی به خانه های آرایه:

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

در دو حالت ما نیاز به دسترسی به خانه های آرایه خواهیم داشت: 

  1. قرار دادن مقدار داخل یکی از خانه های آرایه
  2. گرفتن مقدار یکی از خانه های آرایه

ابتدا نحوه قرار دادن مقدار را با هم بررسی می کنیم: 

 

1) string[] names = new string[20];

2) names[10] = “ITPro.ir”;

همانطور که مشاهده می کنید ابتدا نام متغیر، سپس داخل [] اندیس خانه ای از آرایه که قصد داریم مقدار داخل آن قرار بگیرد را می نویسیم. اما به یک نکته توجه کنید که اندیس آرایه ها از شماره 0 شروع می شود. یعنی در کد بالا که عدد 10 را نوشتیم، اشاره به خانه نهم آرایه می کنید. برای مثال در یک آرایه 10 خانه ای، عدد 0 به خانه اول و عدد 9 به خانه دهم اشاره می کند. 

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

;[string[] names = new string[10

;”names[0] = “Reza

;”names[1] = “Hossien

;”names[2] = “Mohammad

Console.WriteLine(names[1]); // output Hossein

 

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

برای مثال، فرض کنید برنامه ای می خواهیم بنوسیم که 10 عدد را از کاربر دریافت کرده، سپس حاصل جمع این 10 عدد را در خروجی چاپ کند. 

1. در ابتدا باید آرایه ای که اعداد داخل آن باید ذخیره شوند را تعریف کنیم: 

int[] nums = new int[10];

  1. در قدم بعدی باید 10 عدد را از کاربر دریافت کرده و در خانه های آرایه ذخیره کنیم. دقت کنید، 10 مرتبه عملیات دریافت اطلاعات از کاربر تکرار می شود، پس ما باید یک حلقه تشکیل داده و داخل آن حلقه اقدام به دریافت اعداد از کاربر نماییم:

for (int index = 0; index <= 9; index++)

{

    Console.Write(“Enter number ” + (index + 1) + ” of 10: “);

    nums[index] = int.Parse(Console.ReadLine());

}

دقت کنید که شمارنده حلقه از عدد صفر شروع شده و تا زمانی که مقدار شمارنده کوچکتر یا مساوی عدد 9 باشد تکرار خواهد شد. ما می توانیم از عدد شمارنده برای دسترسی به خانه های آرایه نیز استفاده کنیم. همچنین قبل از دریافت عدد، پیغامی مناسب به کاربر جهت وارد کردن عدد نمایش می دهیم. 

3. در مرحله بعد، باید تک تک خانه های آرایه را خوانده و حاصل جمع را در یک متغیر جانبی ذخیره کنیم: 

int sum = 0;

for (int index = 0; index <= 9; index++)

{

    sum = sum + nums[index];

}

Console.WriteLine(“Sum of entered numbers: ” + sum);

می توان دستور داخل حلقه for را به صورت خلاصه تر نوشت: 

int sum = 0;

for (int index = 0; index <= 9; index++)

{

    sum += nums[index];

}

Console.WriteLine(“Sum of entered numbers: ” + sum);

 

 

چاپ آرایه :

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

ساختار کلی دستور foreach به صورت زیر است: 

foreach({type} {variable-name} in {collection})

{

    // loop syntaxes

}

 

  1. قسمت type باید نوع متغیری که مجموعه بر اساس آن تعریف شده را مشخص کنیم. برای مثال، اگر آرایه ای داریم که خانه های آن از نوع int است، باید به جای type نوع int را بنویسیم. به جای type می توان از کلمه کلیدی var که در بخش های قبلی با آن آشنا شدیم نیز استفاده کرد.
  2. قسمت variable-name باید نام متغیری که خانه های آرایه در آن قرار می گیرند را مشخص کنیم. این نام کاملاً دلخواه است.
  3. در قسمت collection نام مجموعه ای که قصد داریم به خانه های آن دسترسی داشته باشیم را می نویسیم.

شیوه عملکرد دستور foreach به این صورت است که حلقه ای بر روی مجموعه مورد نظر ایجاد می شود، سپس هر یک از خانه های آن مجموعه خوانده شده و مقدار آن داخل متغیری که نام آن را در بخش variable-name مشخص کردیم قرار میگیرد و ما می توانیم در هر تکرار به آیتم خانه های آرایه به ترتیب قرار گیری در مجموعه دسترسی داشته باشیم. به مثال زیر توجه کنید: 

string[] names = {“ITPro.IR”,”Mohammad”,”Hossein”,”Farhad”,”Saeed”,”Sadegh”,”Mahmoud”};

foreach (var name in names)

{

    Console.WriteLine(name);

}

بوسیله دستور بالا، کلیه آیتم های آرایه names در خروجی چاپ خواهد شد. دستور foeach بالا دقیقاً معادل دستور for زیر می باشد: 

for (int index = 0; index < names.Length; index++)

{

    Console.WriteLine(names[index]);

}

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

 

مثال:

 

    int n;

  Console.Write(“Enter Number Of Array : “);

  n = Convert.ToInt32(Console.ReadLine());

  int[] a=new int[n];

  for (int i = 0; i < n; i++)

       {

                 Console.Write(“Enetr Num “+(i+1)+” :”);

                 Console.Write(“Enetr Num {0}:”,i+1);

                 a[i] = Convert.ToInt32(Console.ReadLine());

       }

  foreach (int item in a)

         {

                Console.WriteLine(item);

         }

 درمثال بالا برنامه ای نوشتیم که تعدادخانه های لازم برای ایجاد یک آرایه را ازکاربر دریافت میکند یعنی کاربر مشخص میکند که چه مقدارحافظه اشغال شود ابتدا متغیری به نام n  تعریف میکنیم سپس متغیرn را بادستور ()ReadLine که مشخص کننده تعداد عناصرآرایه است را ازکاربر دریافت مینماییم بعد از آن آرایه n تایی از آرایه بانام a میسازیم سپس برای دسترسی به خانه های آرایه ازدستورfor استفاده میکنیم حال آرایه را بادستورforeach چاپ میکنیم.

نتیجه دستور به صورت زیرمیباشد:

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *