مقداردهی آرایه های یک بعدی
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
نحوه مقدار دهی خانه های آرایه یک بعدی چگونه است؟
نحوه مقداردهی آرایه های یک بعدی، دقیقا شبیه به مقدار دهی متغیرها است.
در متغیرها برای مقداردهی به شکل زیر عمل میکردیم:
string name = "kaarisho";
int age = 26;
float flag = true;
char ch = 'A';
و ...
در آرایههای یکبعدی نیز دقیقا همین قانون صدق میکند، با این تفاوت که چون تمامی خانههای آرایه هم نام با خود آرایه هستند، پس باید علاوه بر صدا زدن نام خانه، شماره (اَندیس) خانه هم صدا بزنیم:
int [] ages = new int [5];
ages [0] = 18;
ages [1] = 25;
ages [2] = 30;
ages [3] = 21;
ages [4] = 17;
نکته: شمارش اعداد در دنیای برنامهنویسی از صفر آغاز میشود، یعنی اگر آرایهای ۵ خانه داشته باشد، اندیس خانههای آن برابر است با صفر، یک، دو، سه و چهار (در نتیجه همیشه اندیس خانه آخر آرایه برابر با 1-n است)
حالا فرض کنید میخواهید مقداردهی خانههای آرایه را با ورودی کاربر انجام دهید، به همین منظور با توجه به توضیحاتی که در پست حلقههای تکرار داده شده، باید از حلقه for یا foreach استفاده کنیم:
سوال: برنامهای بنویسید که نام ۵ دانشآموز را از کاربر دریافت کرده و در آرایهای به نام names ذخیره کند:
روش اول: با استفاده از حلقه for
string [] names = new string [5];
for (int i =0; i < names.Length; i++)
{
Console.Write("Please enter student name {0}: ", i);
names [i] = Console.ReadLine();
}
در مثال فوق:
- خط اول تعریف آرایه پنج خانهای از جنس string (رشته) به نام names است.
- names.Length وظیفه شمارش خانههای آرایه را دارد تا نقطه پایان حلقه در شرط i < names.Length مشخص شود.
- در متد Write با استفاده از روش درونیابی مشخص کردهایم که پارامتر {0} یک متغیر است که باید در هر دور حلقه با استفاده مقدار i که بیرون از دابل کوتیشن مشخص شده تغییر کند.
- از آنجایی که i در هر دور حلقه یک عدد مابین صفر تا چهار است، درنتیجه خروجی کد بالا در نمایشگر هر بار یکی از خطوط زیر است:
Please enter student name 0
Please enter student name 1
Please enter student name 2
Please enter student name 3
Please enter student name 4
و به همین ترتیب متغیر i در هر دور حلقه باتوجه به شماره دور حلقه تغییر کرده و به همین علت، خروجی کد مقداردهی آرایه در هر دوره حلقه به شکل زیر خواهد بود:
names [0] = Console.ReadLine();
names [1] = Console.ReadLine();
names [2] = Console.ReadLine();
names [3] = Console.ReadLine();
names [4] = Console.ReadLine();
در نتیجه در هر دور حلقه، آنچه را که کاربر وارد میکند، متد ReadLine دریافت کرده و در خانه names [ i ] ذخیره میکند.
روش دوم: با استفاده از حلقه foreach
string [] names = new string [5];
foreach (var item in names)
{
Console.Write("Please enter student name {0}: ", item);
names [item] = Console.ReadLine();
}
در قطعه کد بالا نیز از آنجایی که در هر دور، حلقه تکرار foreach به خانهای از آرایه که نوبت آن شده item میگوید، پس با درج کلمه item در براکت جلوی نام آرایه، میتوانیم مقداردهی آرایه را باتوجه به ورودی کاربر انجام دهیم.
البته راهکار دیگری برای مقداردهی آرایه یکبعدی وجود دارد و آن هم این است که به جای تعریف تعداد خانه، مستقیم به آن مقادیر آرایه را پاس بدهیم:
int[ ] age = {18, 16, 19, 17, 15, 20, 28, 35, 46, 51};
در مثال بالا توانستیم همزمان با تعریف آرایه age از نوع دادهای int، درلحظه مقداردهی کرده و ۱۰ خانه برای آرایه به همراه مقادیرشان تعریف کنیم.
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.