درس هفتم : آرایه ها
درس هفتم : آرایه ها
7-1 مقدمه
آرایه ها لیستی از داده ها هستند. اهمیت آرایه ها موقعی است که هزاران داده ی مختلف را بخواهیم به صورت جداگانه ذخیره کنیم. تصور کنید تعریف هزاران متغیر چقدر برای برنامه نویس مشکل است و این حجم تعریف متغیر چه حافظه ای را اشغال میکند. اما با یک آرایه ی هزار عضوی و یک حلقه ی For که بعدها درس داده خواهد شد، به راحتی می توان این کار را انجام داد. آرایه ها میتوانند از هر نوع تعریف شوند. برای مثال ، String, Integer, Double و غیره. اما باید توجه داشت بر خلاف زبانهایی مثل جاوا اسکریپت، در ویژوال بیسیک، در هر آرایه فقط و فقط از یک نوع داده می توان ذخیره نمود. اگر آرایه ی عددی تعریف کردید، دیگر نمیتوانید در همان آرایه کاراکتر ذخیره کنید و برعکس.
7-2 انواع آرایه
آرایه ها در ویژوال بیسیک دو نوعند:
- آرایه های یک بعدی (One dimensional)
- آرایه های دو بعدی (Two dimensional)
7-2-1 آرایه های یک بعدی
این آرایه ها کاربرد بیشتری در مسائل معمولی دارند. سینتکس تعریف آرایه ی یک بعدی به صورت زیر است :
Dim arrayName() As datatype
7-2-2 آرایه های دو بعدی
این آرایه ها با نام ماتریس هم شناخته میشوند. سینتکس تعریف آرایه ی دو بعدی به صورت زیر است:
Dim arrayName(lastIndex1, lastIndex2) As datatype
7-3 ایندکس چیست؟
در آرایه شامل یک سری خانه های مستقل است که با یک شماره مشخص میشوند. این شماره همان ایندکس آن خانه است. در سینتکس تعریف آرایه ها، lastIndex شماره آخرین خانه ی آرایه است. در اکثر زبانهای برنامه نویسی ایندکس گذاری از صفر شروع میشود. برای مثال اگر یک آرایه ی 3 عضوی داشته باشیم، ایندکس اولی خانه ی آن صفر، دومین خانه ایندکس یک، و سومین و آخرین خانه ایندکس شماره ی دو دارد. بنابراین ایندکس آخرین خانه در آرایه ها همیشه یک عدد از سایز آرایه کمتر است. پس اگر بخواهیم یک آرایه ی هفت عضوی داشته باشیم، lastIndex را باید 6 بگذاریم. برای اشاره به ایندکس یک خانه از آرایه، نام آرایه را نوشته و شماره ایندکس را در داخل پرانتز جلوی آن می آوریم:
Dim arrayName(lastIndex) As datatype
arrayName(index)
7-4 انتساب داده به آرایه های یک بعدی
برای انساب ارزش به آرایه ها چندین راه وجود دارد.
7-4-1 انتساب مستقیم
در این روش در همان موقع تعریف آرایه لیستی از داده ها را در داخل براکت در حالی که با کاما از هم جدا شده اند به آرایه ی مورد نظر انتساب میدهیم.
Dim myArray(5) As Integer myArray = {1,2,3,4,5}
7-4-2 انتساب با ایندکس
در این روش هر داده را جداگانه به یکی از ایندکس های آرایه نسبت میدهیم.
Dim myArray(3) As Integer myArray(0) = 1 myArray(1) = 2 myArray(2) = 3
7-4-3 انتساب با حلقه ی FOR
متداول ترین و بهترین روش برای انتساب آرایه ها با حجم بالا استفاده ی از حلقه ها میباشد. حلقه ها را در درس های بعدی شرح خواهم داد اما فعلا فقط با سینتکس آن آشنا باشید.
Dim myArray(99) As Integer Dim i As Integer For i = 0 To 98 myArray(i) = i+1 Next
7-5 متد arrayName.length
آرایه ها یک متد داخلی برای بازگرداندن طول آرایه (یا همان سایز آرایه) دارند که در صورت استفاده ی بجا بسیار سودمند است. متد Length برای به دست آوردن ایندکس آخرین خانه ی آرایه هم میتواند استفاده شود. فقط کافی است از عددی که این متد بر میگرداند، یک رقم کم کنید.
7-6 انتساب به آرایه های دو بعدی
همانند روش انتساب به آرایه های یک بعدی عمل میشود. با این تفاوت که به جای یک lastIndex دو عدد داریم. یکی برای ردیف یا همان بعد اول، و دیگری برای ستون و بعد دوم میباشد. برای انتساب با حلقه به آرایه های دو بعدی باید از حلقه های تودرتو استفاده کرد که در درسهای بعدی به آنها خواهیم پرداخت.
7-7 لیست باکس ListBox
در این مثال یک آرایه 10 عضوی تعریف و هر عضو را در یک شی به نام ListBox قرار میدهیم. این شی را از ToolBox پیدا کنید و در فرم قرار دهید. برای انتساب به لیست باکس از متد Add ستفاده میکنیم.
ListBox1.Items.add()
حالا که با این شی آشنا شدید، فرمی مشابه شکل 1-7 طراحی و کد زیر را برای آن بنویسید. به یاد داشته باشید آزمون و خطا یک راه یادگیری ست.
Public Class Form1 Public i As Integer = 0 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim names(5) As String names(i) = TextBox1.Text ListBox1.Items.Add(i + 1 & " ." & names(i)) TextBox1.ResetText() i += 1 End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click i = 0 TextBox1.ResetText() ListBox1.Items.Clear() End Sub End Class
شکل 1-7
تمرین : یک آرایه دو بعدی 5 عضوی تعریف کنید و نام و نمره ی دانش آموزان یک کلاس را دریافت و نامها را در یک لیست باکس قرار دهید. سپس میانگین نمرات کل کلاس را محاسبه و نمایش دهید.