آرایه
آرایه نوعی متغیر است که لیستی از آدرسهای مجموعه ای از داده های همنوع یا غیر همنوع را در خود ذخیره می کند. تعریف چندین متغیر از یک نوع برای هدفی یکسان بسیار خسته کننده است. مثلا اگر بخواهید صد متغیر از نوع اعداد صحیح تعریف کرده و از آنها استفاده کنید. مطمئنا تعریف این همه متغیر بسیار کسالت آور و خسته کننده است. اما با استفاده از آرایه می توان همه آنها را در یک خط تعریف کرد. در زیر راهی ساده برای تعریف یک آرایه نشان داده شده است :
numbers = Array.new
numbers نام آرایه را نشان می دهد. هنگام نامگذاری آرایه بهتر است که نام آرایه نشان دهنده نوع آرایه باشد. به عنوان مثال برای نامگذاری آرایه ای که اعداد را در خود ذخیره می کند از کلمه number استفاده کنید. حتی می توانیم به هنگام ایجاد آرایه مقادیر خانه های آن را نیز مشخص کنیم :
numbers = Array [1, 2, 3, 4, 5]
یا
numbers = Array.[] (1, 2, 3, 4, 5)
در این مثال 5 مقدار در 5 آدرس از فضای حافظه کامپیوتر شما ذخیره می شود. مثالا بالا را به روش زیر هم می توان پیاده سازی کرد :
numbers = [] numbers[0] = 1 numbers[1] = 2 numbers[2] = 3 numbers[3] = 4 numbers[4] = 5
اندیس یک آرایه از صفر شروع شده و به یک واحد کمتر از طول آرایه ختم می شود.به عنوان مثال شما یک آرایه 5 عضوی دارید، اندیس آرایه از 0 تا 4 می باشد چون طول آرایه 5 است پس 1-5 برابر است با 4. این بدان معناست که اندیس 0 نشان دهنده اولین عضو آرایه است و اندیس 1 نشان دهنده دومین عضو و الی آخر. برای درک بهتر مثال بالا به شکل زیر توجه کنید :
به هر یک از اجزاء آرایه و اندیسهای داخل کروشه توجه کنید.کسانی که تازه شروع به برنامه نویسی کرده اند معمولا در گذاشتن اندیس دچار اشتباه می شوند و مثلا ممکن است در مثال بالا اندیسها را از 1 شروع کنند. در مثال های بالا، ما یک آرایه با طول نا مشخص تعریف کردیم. یعنی مشخص نکردیم که چه تعداد عنصر قرار است در آرایه قرار بگیرند. اگر بخواهیم که تعداد عناصر را هم مشخص کنیم می توانیم تعداد آنها را در داخل پرانتز بنویسیم:
numbers = Array.new(5)
ساده ترین روش تعریف آرایه، به صورت زیر است:
numbers = [1, 2, 3, 4, 5]
در ادامه این درس و درس های بعدی از این روش برای تعریف آرایه استفاده می کنیم.
دستیابی به مقادیر آرایه با استفاده از حلقه for
در زیر مثالی در مورد استفاده از آرایهها آمده است. در این برنامه 5 مقدار از کاربر گرفته شده و میانگین آنها حساب میشود:
1: numbers = Array.new(5) 2: total = 0 3: average = 0.0 4: 5: i = 0 6: while i < numbers.length 7: print "Enter a number: " 8: num = gets.to_i 9: numbers[i] = num 10: i+=1 11: end 12: 13: j = 0 14: while j < numbers.length 15: total += numbers[j] 16: j+=1 17: end 18: 19: average = total / numbers.length 20: puts "Average = #{average}"
Number 0: 95 Number 1: 85 Number 2: 80 Number 3: 87 Number 4: 92 Average = 87
در خط 1 یک آرایه تعریف شده است که میتواند 5 آیتم را در خود ذخیره کند. خطوط 2 و 3 متغیرهایی تعریف شدهاند که از آنها برای محاسبه میانگین استفاده میشود. توجه کنید که مقدار اولیه total صفر است تا از بروز خطا هنگام اضافه شدن مقدار به آن جلوگیری شود. در خطوط 5 تا 11 حلقه while برای تکرار و گرفتن ورودی از کاربر تعریف شده است. از خاصیت طول (length) آرایه برای تشخیص تعداد اجزای آرایه استفاده میشود. اگر چه میتوانستیم به سادگی در حلقه while مقدار 5 را برای شرط قرار دهیم ولی استفاده از خاصیت طول آرایه، کار راحتتری است و میتوانیم طول آرایه را تغییر دهیم و شرط حلقه while با تغییر جدید هماهنگ شود. در خط 8 ورودی دریافت شده از کاربر به نوع صحیح تبدیل و در آرایه ذخیره میشود. اندیس استفاده شده در number (خط 9) مقدار i جاری در حلقه است. برای مثال در ابتدای حلقه مقدار i صفر است بنابراین وقتی در خط 9 اولین داده از کاربر گرفته میشود اندیس آن برابر 0 میشود. در تکرار بعدی i یک واحد اضافه میشود و در نتیجه در خط 9 و بعد از ورود دومین داده توسط کاربر اندیس آن برابر 1 میشود. این حالت تا زمانی که شرط در حلقه while برقرار است ادامه مییابد.
در خطوط 17-13 از حلقه while دیگر برای دسترسی به مقدار هر یک از دادههای آرایه استفاده شده است. در این حلقه نیز مانند حلقه قبل از مقدار متغیر شمارنده به عنوان اندیس استفاده میکنیم. هر یک از اجزای عددی آرایه به متغیر total اضافه میشوند. بعد از پایان حلقه میتوانیم میانگین اعداد را حساب کنیم (خط 15). مقدار total را بر تعداد اجزای آرایه (تعداد عددها) تقسیم میکنیم (خط 19). برای دسترسی به تعداد اجزای آرایه میتوان از خاصیت length آرایه استفاده کرد. خط 20 مقدار میانگین را در صفحه نمایش چاپ میکند. خروجی برنامه بالا می تواند به صورت زیر باشد (البته ممکن است برای شما متفاوت باشد). آرایهها در برخی شرایط بسیار پر کاربرد هستند و تسلط شما بر این مفهوم و اینکه چطور از آنها استفاده کنید بسیار مهم است.