آرایه ها
طولانی شدن بیدلیل کد، کم شدن خوانایی کد، و عدم امکان استفاده از ویژگیهایی که زبان برنامهنویسی در اختیار ما قرار داده است، فقط برخی از مواردی هستند که در صورتی که از آرایه استفاده نکنیم، به وجود میآیند. هنگامی که چندین مقدار با نوع دادۀ مشابه و ماهیت یکسان دارید، از آرایه استفاده کنید. در این فصل بیشتر با آرایه آشنا میشویم.
اهمیت استفاده از آرایه
خیلی از اوقات نیاز داریم که از یک نوع داده چندین مقدار داشته باشیم که ماهیت یکسانی دارند. مثلاً میخواهیم ساعات کار ماهانه را داشته باشیم. میتوانیم 12 متغیر عدد صحیح تعریف کنیم. (اعداد واقعی نیستند)
int timeFarvardin = 154;
int timeOrdibehesht = 161;
int timeKhordad = 183;
int timeTir = 183;
int timeMordad = 191;
int timeShahrivar = 169;
int timeMehr = 176;
int timeAban = 191;
int timeAzar = 183;
int timeDay = 183;
int timeBahman = 169;
int timeEsfand = 169;
همانطور که میبینید کار کردن با این همه متغیر اصلاً کار سادهای نیست. ضمن اینکه، کد را بی دلیل طولانیتر میکند و خوانایی کد هم کمتر میشود. در ضمن، نمیتوانیم از حلقهها (for یا while) برای پیمایش روی این متغیرها استفاده کنیم و موارد بیشتری که در ادامۀ مسیر با آنها مواجه میشویم. برای رفع این مشکل راههای زیادی وجود دارد. در صورتی که تعداد ثابت باشد، میتوانیم از آرایه استفاده کنیم.
نحوه تعریف آرایه
نوع_داده[] نام = { مقادیر آرایه که با کاما جدا شده اند } ;
در مثال بالا به جای 12 متغیر عدد صحیح که مقادیر ساعات را به آنها تخصیص دادیم، از یک آرایه بهشکل زیر استفاده میکنیم:
int[] times = { 154, 161, 183, 183, 191, 169, 176, 191, 183, 183, 169, 169 };
قطعه کد بالا همان روش تعریف متغیر بهصورت جداگانه است یعنی:
اولین عضو times همان timeFarvardin است
دومین عضو times همان timeOrdibehesht است
سومین عضو times همان timeKhordad است
چهارمین عضو times همان timeTir است
پنجمین عضو times همان timeMordad است
ششمین عضو times همان timeShahrivar است
هفتمین عضو times همان timeMehr است
هشتمین عضو times همان timeAban است
نهمین عضو times همان timeAzar است
دهمین عضو times همان timeDay است
یازدهیمن عضو times همان timeBahman است
دوازدهمین عضو times همان timeEsfand است
دسترسی به عضو آرایه
و برای دسترسی به هر عضو این آرایه میتوانیم از روش زیر استفاده کنیم:
[جایگاه عضو مورد نظر] نام_آرایه
برای مثال در قطعه کد زیر مقدار اولین عضو آرایه را به یک متغیر تخصیص میدهیم:
int timeFarvardin = times[0];
و درصورتی که در اواسط برنامه بخواهیم مقدار یکی از اعضای این آرایه را تغییر دهیم با دستور زیر میتوان این کار را انجام داد:
times[5] = 200; //ششمین عضو (شهریور) را به 200 تغییر می دهد
ایندکس (Index) چیست؟
همانطور که قبلاً گفتیم شمارش از 0 شروع میشود و تا 11 ادامه دارد (12 عدد در این آرایه داریم). پس times[0] اولین عضو آرایه است (154) و times[11] آخرین عضو آرایه (169). به این عدد که نشان دهنده جایگاه عضو در آرایه است، ایندِکس (Index) میگوییم.
در واقع آرایهای با طول n دارای ایندکسهای 0 تا n-1 است.
اگر خارج از محدودۀ ایندکس آرایه (کمتر از صفر یا بیشتر از n-1) عددی وارد کنید، برنامه خطا میدهد.
به دست آوردن طول آرایه
برای بهدست آوردن طول آرایه (تعداد عناصری که آرایه میتواند در خود نگه دارد) از قطعه کد زیر میتوانیم استفاده کنیم:
times.Length
که برای مثال بالا برابر با 12 است.
اندازۀ آرایه بعد از تعریف نمیتواند تغییر کند.
یک آرایۀ 7 تایی تعریف کنید که دمای هوای یک هفته را در خود ذخیره کند و در صورتی که آخرین روز گرمتر از اولین روز باشد، در کنسول بنویسد "هوا گرمتر شده است" در غیر این صورت اگر برابر بود بنویسید "دمای هوا تغییری نکرده است" و در غیر این صورت بنویسد "هوا سردتر شده است" (راهنمایی: دمای هوا در یک هفته را مقادیر 20،19،21،21،22،18،20 در نظر بگیرید).
پیمایش روی آرایه
برای انجام پیمایش روی اعضای آرایه از حلقه استفاده میکنیم و چون طول آرایه مشخص است، معمولاً از حلقۀ for برای این کار استفاده میشود.
قطعه کد زیر را در نظر بگیرید:
for(int i = 0; i < times.Length; i = i + 1)
{
Console.WriteLine("Month " + (i + 1) + " : " + times[i] + " hours");
}
در قطعه کد بالا با استفاده از حلقۀ for روی آرایۀ times پیمایش میکنیم (12 تکرار) و در هر بار عبارتی نوشته میشود که شمارۀ ماه (چون مقدار i از صفر شروع میشود و شمارۀ ماه از یک شروع میشود، پس یک واحد به i اضافه میکنیم) و تعداد ساعات متناظر همان ماه را مینویسد. در انتها عبارات زیر در کنسول نوشته میشوند:
Month 1 : 154 hours
Month 2 : 161 hours
Month 3 : 183 hours
Month 4 : 183 hours
Month 5 : 191 hours
Month 6 : 169 hours
Month 7 : 176 hours
Month 8 : 191 hours
Month 9 : 183 hours
Month 10 : 183 hours
Month 11 : 169 hours
Month 12 : 169 hours
در آرایۀ times با استفاده از حلقه روی آرایه پیمایش کنید و در صورتی که ساعات کاری هر ماه بیشتر از 190 ساعت باشد در کنسول بنویسید "ساعات کاری ماه... ام بیشتر از 190 ساعت است" و در صورتی که کمتر از 170 باشد در کنسول بنویسید "ساعات کاری ماه... ام کمتر از 170 ساعت است". به جای... از شمارۀ ماه استفاده کنید یعنی ماه 1 تا ماه 12.