آرايهها(Arrays) در #c – بخش اول
چهارشنبه 10 آذر 1389 11:11 PM
يكي ديگر از انواع دادهاي در زبان C#، آرايهها (Arrays) ميباشند. يك آرايه را به عنوان مخزني براي نگهداري اطلاعات در نظر ميگيريم كه داراي ليستي از محلهايي است كه در آنها اطلاعات ذخيره شده است و از طريق اين ليست ميتوان به اطلاعات آنها دسترسي پيدا نمود. به هنگام اعلان آرايهها بايد نوع، اندازه و تعداد بعد آنها را نيز معين نمود.
آرایه ها در سی شارپ به این صورت تعریف می گردند :
یعنی ابتدا نوع آرایه ، سپس علامتهای [] و آنگاه نام آرایه را ذکر می کنیم.
از آنجایی که آرایه ها جزو انواع داده ای ارجاعی به حساب می آیند ، آرایه تعریف شده تا زمانی که به استفاده از کلمه کلیدی new تقاضای درخواست حافظه نکند ، قابل استفاده نیست. برای این کار مطابق مثال زیر عمل میکنیم :
ابتدا نام آرایه و سپس عملگر = را ذکر می کنیم. سپس عملگر new و بعد از آن نام آرایه به همراه نوع آرایه. عددی که داخل [] ذکر می شود تعداد عناصر آرایه را مشخص میکند. در مثال بالا یک آرایه 20 عنصری از نوع int خواهیم داشت.
average = new float[10];
numbers = new double[10];
می توان این دو مرحله را در یک خط انجام داد :
int[] TestArray = new int[20];
float[] average = new float[10];
double[] numbers = new double[10];
دسترسي به عناصر آرايه
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
اگر شكل فوق را آرايهاي تك بعدي تصور نماييد، مشاهده مينماييد كه خانه شماره 5 آرايه حاوي اطلاعات مربوط به ششمين داده ورودي شما ميباشد.
مثال زیر اولین عنصر آرایه را با 20 مقدار دهی میکند.
مقداردهی اولیه به عناصر آرایه در هنگام تعریف
مانند مقال زیر عمل میکنیم :
آرایه فوق یک آرایه 5 عنصری با مقادیر 1 تا 5 خواهد بود.
آرایه های چندبعدی (ماتریسها)
این آرایه ها بر دو نوع هستند :
آرایه های مستطیلی یا Rectangular که در آنها تعدا ستونهای تمام سطرها با هم برابر است
آرایه های دندانه دار یا jagged که تعداد ستونهای سطرها می تواند با یکدیگر برابر نباشد.
آرایه های مستطیلی
این آرایه ها اینگونه تعریف می شوند :
این آرایه شبیه شکل زیر خواهد بود :
مثال فوق یک آرایه دو بعدی که دارای 2 سطر و 5 ستون است را تعریف می نماید.
مثال زیر یک آرایه 4 بعدی را تعریف می نماید :
دسترسی به عناصر آرایه چند بعدی
این کار شبیه به آرایه های تک بعدی است. معمولاً به بعد اول آرايه سطر و به بعد دوم آن ستون ميگويد. مثلاً monthArray[3,7] عنصر واقع در سطر 3 و ستون 7 آرايه را مشخص مينمايد.
در مثال زیر به عنصر سطر 1 و ستون 1 آرایه مقدار 10 را انتساب داده ایم.
مقداردهی اولیه به عناصر آرایه در هنگام تعریف
این کار شبیه به آرایه های تک بعدی است با این تفاوت که هر سطر را در یک { } قرار میدهیم.
در مثال فوق یِک آرایه دوبعدی داریم که دو سطر و 3 ستون دارد.
آرایه های دندانه دار
آرايههاي دندانهدار (Jagged Arrays) که در زبان C# وجود دارند در صرفهجويي حافظه بسيار موثر ميباسند. يك آرايه دندانهدار، در حقيقت يك آرايه تك بعدي است كه هر يك از اعضاي آن خود يك آرايه تك بعدي ميباشند. اندازه اين عناصر ميتواند متفاوت باشد و تفاوت اين آرايهها با آرايههاي چند بعدي در همين جا نمايان ميشود. استفاده از اين آرايهها در مواردي كاربرد دارد كه نيازي نيست تا تمامي ابعاد آرايه داراي تعداد عناصر مساوي باشند.
در مثال زیر ، آرایه دندانه داری تعریف نموده ایم که 5 سطر دارد و هر سطر آن می تواند یک آرایه تک بعدی باشد. دقت کنید که نباید در هنگام تعریف تعداد ستونها را مشخص کنیم .
اکنون باید آرایه های تک تک سطرها را مشخص نماییم :
jagged[0] = new int[3];
jagged[1] = new int[2];
jagged[2] = new int[5];
jagged[3] = new int[1];
jagged[4] = new int[6];
با استفاده از آرايه دندانهدار :
در تعريف اول كه در آن از آرايه چند بعدي استفاده كرديم، مشاهده ميكنيد كه آرايهاي دو بعدي تعريف كردهايم كه بعد اول آن 12 عضو و بعد دوم آن 31 عضو دارد. اين عمل دقيقاً همانند ايجاد يك جدول براي نگهداري روزهاي ماههاي سال است.
اما در حالت دوم كه در آن از آرايه دندانهدار بهره بردهايم، يك آرايه تعريف نمودهايم كه بعد اول آن 12 عضو دارد ولي بعد دوم آنرا را تعريف نكردهايم كه داراي چند عضو است و هر يك از عناصر بعد اول آرايه ميتواند داراي تعداد اعضاي متفاوتي باشد كه با استفاده از اين روش ميتوان به هر يك از ماههاي سال تعداد روزهاي مورد نظر آن ماه را تخصيص داد و فضايي بلا استفاده ايجاد نخواهيم كرد. توجه نماييد كه چون تعداد عناصر بعد ديگر اين آرايه معين نشده است در برنامه بايد اين تعداد عنصر را مشخص نماييم:
مشاهده ميكنيد كه به هر ماه، تعدا عنصر مورد نياز خود را تخصيص دادهايم. تنها بايد به تفاوت اعلان آرايههاي دندانهدار با آرايههاي چند بعدي توجه نماييد.