อาเรย์

อาเรย์ คือประเภทข้อมูลที่สามารถเก็บข้อมูลประเภทเดียวกันได้หลายๆ ตัวในหนึ่งตัวแปร เราเรียกว่าตัวแปรอาเรย์ มันเป็นชุดของข้อมูลที่จัดเก็บข้อมูลเรียงต่อกันภายในหน่วยความจำ ข้อมูลของอาเรย์นั้นสามารถเข้าถึงได้ผ่านทาง index ของมัน

การใช้อาเรย์ในการเขียนโปรแกรมนั้นจะช่วยอำนวยความสะดวกมากมาย เช่น คุณสามารถจัดการข้อมูลประเภทเดียวกันได้ โดยการใช้เพียงแค่ตัวแปรเพียงตัวเดียว และเรายังสามารถใช้ความสามารถของคำสั่ง loop ในการทำงานกับอาเรย์

Array in Visual Basic

ในรูปเป็นการแสดงตัวอย่างวิธีการเก็บข้อมูลของอาเรย์ เราเก็บตัวเลข 5 ตัวลงในอาเรย์ และตัวเลขแต่ละตัวจะมี index ของมัน โดย index ของอาเรย์นั้นจะเริ่มจาก 0 เสมอ

ประกาศอาเรย์

อาเรย์ คือตัวแปร ดังนั้นก่อนการใช้งานอาเรย์ เราจำเป็นต้องประกาศตัวแปรอาเรย์มาก่อน โดยการใช้คำสั่ง Dim เช่นเดียวกันกับการประกาศตัวแปรปกติ แต่สำหรับอาเรย์จะต้องมีการกำหนดขนาดด้วย โดยการใช้เครื่องหมาย () เพื่อบ่งบอกว่ามันเป็นตัวแปรอาเรย์

ต่อไปมาดูการประกาศและใช้งานอาเรย์ในภาษา Visual Basic

Module ArrayExample

Sub Main()

Dim number(4) As Integer
number(0) = 10
number(1) = 20
number(2) = 30
number(3) = 40
number(4) = 50

For index As Integer = 0 To number.Length - 1
Console.WriteLine("number({0}) = {1}", index, number(index))
Next

End Sub

End Module

ในตัวอย่าง เราได้ประกาศตัวแปรอาเรย์ เพื่อเก็บค่าตัวเลขจำนวน 5 ตัว และใช้คำสั่ง For loop ในการวนซ้ำเพื่อแสดงข้อมูลภายในอาเรย์

Dim number(4) As Integer

คำสั่งนี้เป็นการประกาศตัวแปรอาเรย์ที่ชื่อ numberเราได้กำหนดขนาดโดย (4) นั่นหมายความว่าขนาดที่แท้จริงของมันจะบวกไปอีก 1 เพราะว่า index ของอาเรย์ในภาษา Visual Basic นั้นจะเริ่มต้นที่ 0 ถึง 4 ดังนั้นมันจึงมีขนาดเป็น 5 นั่นเอง

number(0) = 10
number(1) = 20
number(2) = 30
number(3) = 40
number(4) = 50

ต่อมาเป็นการกำหนดค่าให้กับอาเรย์แต่ละตำแหน่งผ่านทาง index ของมัน โดยใส่ตัวเลข index ภายในเครื่องหมาย () เหมือนที่คุณเห็น number(0) เป็นข้อมูลในตำแหน่งแรกของอาเรย์ และ number(4) เป็นข้อมูลตำแหน่งสุดท้ายของอาเรย์

For index As Integer = 0 To number.Length - 1
Console.WriteLine("number({0}) = {1}", index, number(index))
Next

ต่อมาเราได้ใช้คำสั่ง For loop ในการวนอ่านค่าของอาเรย์ เพราะว่า index ของอาเรย์เป็นลำดับและเริ่มจาก 0 เราใช้คำสั่ง For loop ในการวนตั้งแต่ 0 ถึง 4 คำสั่ง number.Length เป็นการทราบขนาดของอาเรย์ และลบด้วยหนึ่งสำหรับ index ตัวสุดท้าย

number(0) = 10
number(1) = 20
number(2) = 30
number(3) = 40
number(4) = 50

และนี่เป็นผลลัพธ์จากการแสดงข้อมูลภายในอาเรย์

ต่อไปมาดูตัวอย่างเพิ่มเติมเกี่ยวกับอาเรย์ ซึ่งเราประกาศอาเรย์พร้อมกำหนดค่าให้กับมันในตอนเริ่มต้น รวมทั้งใช้ property และเมธอดกับอาเรย์

Module ArrayExample2

Sub Main()

Dim name = New String() {"Mateo", "Danny", "Thomas", "Jane"}
Console.WriteLine(String.Join(", ", name))

Dim number = New Integer(4) {8, 13, 20, 30, 38}
Console.WriteLine("Max = {0}", number.Max)
Console.WriteLine("Min = {0}", number.Min)
Console.WriteLine("Sum = {0}", number.Sum)

End Sub

End Module

ในตัวอย่าง เราได้ประกาศอาเรย์ และกำหนดค่าให้กับมันในทันที การประกาศค่าจะใช้คำสั่ง New ตามด้วยประเภทข้อมูลและขนาดของมัน และค่าของอาเรย์จะอยู่ภายในเครื่องหมาย () คั่นด้วยเครื่องหมาย comma ,

Dim name = New String() {"Mateo", "Danny", "Thomas", "Jane"}
Console.WriteLine(String.Join(", ", name))

เราได้ประกาศตัวแปรอาเรย์ name ที่มีขนาดเป็น 4 และกำหนดค่าให้กับมัน ถ้าหากเป็นการกำหนดค่าพร้อมกับการประกาศตัวแปร เราไม่ต้องระบขนาดของอาเรย์ก็ได้ และเราแสดงผลสมาชิกในอาเรย์ โดยใช้เมธอด String.Join() เป็นการนำค่าในอาเรย์มาต่อกันและคั่นด้วยเครื่องหมาย ,

Dim number = New Integer(4) {8, 13, 20, 30, 38}
Console.WriteLine("Max = {0}", number.Max)
Console.WriteLine("Min = {0}", number.Min)
Console.WriteLine("Sum = {0}", number.Sum)

ต่อมาเราประกาศตัวแปรอาเรย์ number ที่มีขนาดเป็น 5 เราใช้ property ต่างๆ เพื่อเข้าถึงค่าในอาเรย์ เช่น ค่ามากสุด ค่าน้อยสุด หรือผลรวมของจำนวนทั้งหมด อย่างไรก็ตามอาเรย์ยังมี property และเมธอดอีกหลายอย่าง เพราะมันเป็นคลาส

Mateo, Danny, Thomas, Jane
Max = 38
Min = 8
Sum = 109

นี่เป็นผลลัพธ์ของโปรแกรมการใช้อาเรย์

อาเรย์ 2 มิติ

อาเรย์ 2 มิติ คืออาเรย์ที่เก็บข้อมูลในรูปแบบตาราง มันเหมือนเป็นการนำอาเรย์ 1 มิติขนาดที่เท่ากันมาต่อกัน มาดูตัวอย่างการใช้อาเรย์ 2 มิติในภาษา Visual Basic

Module TwoDimensionalArray

Sub Main()

Dim number = New Integer(, ) {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}

For i As Integer = 0 To 3
For j As Integer = 0 To 2
Console.Write("{0} ", number(i, j))
Next
Console.WriteLine()
Next

End Sub

End Module

ในตัวอย่าง เราได้ประกาศตัวแปรอาเรย์ 2 มิติที่มีขนาด 4x3 มันหมายถึง 4 แถว และ 3 คอลัมน์ ดังนั้นจำนวนสมาชิกทั้งหมดในอาเรย์จะมี 12 ตัว เราใช้เครื่องหมาย (, ) คั่นระหว่างมิติของอาเรย์ และกำหนดค่าเริ่มต้นแบบเมทริกซ์

For i As Integer = 0 To 3
For j As Integer = 0 To 2
...

เราใช้สั่ง For loop ซ้อนกันในการวนอ่านค่าอาเรย์ loop ด้านนอกใช้ i เป็น index สำหรับแถว และ loop ด้านในใช้ j เป็น index สำหรับคอลัมน์ของอาเรย์ และเราเข้าถึงค่าของอาเรย์สองมิติโดยคู่อันดับของ index ทั้งสองในคำสั่ง number(i, j)

1 2 3
4 5 6
7 8 9
10 11 12

นี่เป็นผลลัพธ์ตัวอย่างการใช้งานอาเรย์ 2 มิติในภาษา Visual Basic

อาเรย์ 3 มิติและอาเรย์หลายมิติ

นอกจากนี้ อาเรย์ยังมี 3 มิติ และมากกว่านี้ได้ แต่โดยทั่วไปแล้วในการเขียนโปรแกรม เรามักจะใช้มากที่สุด 3 มิติ เช่น การใช้พัฒนาเกมส์ 3 มิติ ที่จะต้องเก็บตำแหน่งของวัตุ ทั้งแนวแกน x, y และ z เป็นต้น มาดูตัวอย่างสำหรับอาเรย์ 3 มิติ ต่อไปมาดูตัวอย่าง

Module ThreeDimensionalArray

Sub Main()

Dim point = New Integer(2, 2, 2) {
{{-1, 2, 0}, {1, 1, 5}, {0, -2, 3}},
{{3, 4, -3}, {1, 0, 1}, {-3, 2, 1}},
{{3, 4, -3}, {1, 0, 1}, {-3, 2, 1}}}

For i As Integer = 0 To 2
For j As Integer = 0 To 2
For k As Integer = 0 To 2
Console.Write("{0} ", point(i, j, k))
Next
Console.WriteLine()
Next
Console.WriteLine("---------")
Next

End Sub

End Module

ในตัวอย่าง เราได้สร้างอาเรย์ 3 มิติที่มีขนาดเป็น 3x3x3 และเราใช้คำสั่ง For loop ซ้อนกัน 3 ครั้งเพื่อที่จะวนอ่านค่าในอาเรย์ ซึ่งใช้ index i j และ k เพื่อที่จะนำมาสร้างเป็นคำสั่งในการเข้าถึงสมาชิกในอาเรย์ point(i, j, k)

อย่างไรก็ตาม คุณสามารถประกาศอาเรย์ที่มากกว่า 3 ได้ โดยการใส่เครื่องหมาย , คั่นแต่ละมิติของอาเรย์ และเข้าถึงข้อมูลในรูปแบบเดียวกัน

Dim multiDimArr = New DataTye(, ... ,)
multiDimArr(, ... , ) ' Access array's values

อาเรย์ของอาเรย์ (Jagged array)

อาเรย์ของอาเรย์ (Jagged array) คืออาเรย์ที่เก็บค่าเป็นอาเรย์ด้วยกัน สิ่งที่แตกต่างจากอาเรย์แบบปกติคือมันสามารถเก็บอาเรย์ที่มีขนาดที่แตกต่างกันได้ มาดูตัวอย่างการใช้งาน Jagged array ในภาษา Visual Basic

Module JaggedArray

Sub Main()

Dim sales()() As Double = New Double(3)() {}
Dim rd As Random = New Random()

For week As Integer = 0 To sales.GetUpperBound(0)
If week = 0 Then
sales(week) = New Double(4) {}
Else
sales(week) = New Double(6) {}
End If
Next

For week As Integer = 0 To sales.GetUpperBound(0)
Dim upper = sales(week).GetUpperBound(0)
For d = 0 To upper
sales(week)(d) = rd.Next() Mod 90 + 10
Next
Next

For week As Integer = 0 To sales.GetUpperBound(0)
Dim upper = sales(week).GetUpperBound(0)
Console.Write("Week {0}: ", (week + 1))
For d = 0 To upper
Console.Write(sales(week)(d) & " ")
Next
Console.WriteLine()
Next

End Sub

End Module

ในตัวอย่าง เราได้ประกาศ Jagged อาเรย์เพื่อเก็บยอดของการขายในแต่ละสัปดาห์เป็นจำนวน 4 สัปดาห์

Dim sales()() As Double = New Double(3)() {}

นี่เป็นการประกาศ Jagged array เราต้องกำหนดขนาดของมันในมิติแรกเสมอ ซึ่งเราได้กำหนดขนาดเป็น 4

For week As Integer = 0 To sales.GetUpperBound(0)
If week = 0 Then
sales(week) = New Double(4) {}
Else
sales(week) = New Double(6) {}
End If
Next

นี่เป็นการประกาศอาเรย์ภายใน เราใช้เมธอด sales.GetUpperBound(0) สำหรับรับค่าของขนาดของอาเรย์ซึ่งคือ 4 ที่เราได้ประกาศไว้ เราได้ใช้คำสั่ง If ในการสร้างอาเรย์ที่มีขนาด 5 สำหรับสัปดาห์แรก และ 7 สำหรับสัปดาห์ต่อๆ มา

For week As Integer = 0 To sales.GetUpperBound(0)
Dim upper = sales(week).GetUpperBound(0)
For d = 0 To upper
sales(week)(d) = rd.Next() Mod 90 + 10
Next
Next

นี่เป็นการกำหนดค่าให้กับอาเรย์จากการสุ่มค่า จากตัวแปร rd ซึ่งเป็นออบเจ็คสำหรับสุ่มตัวเลข เราได้สุ่มค่าตั้งแต่ 10 - 99 ใส่ลงในอาเรย์ภายในของแต่ละแถว คำสั่ง sales(week).GetUpperBound(0) ใช้ในการหาขนาดของอาเรย์ภายใน

Week 1: 49 43 67 79 91
Week 2: 19 60 25 96 86 63 56
Week 3: 43 83 86 47 16 77 89
Week 4: 46 22 63 33 81 67 55

และนี่เป็นตัวอย่างผลลัพธ์ทีไ่ด้จากการรันโปรแกรม ซึ่งเป็นค่าที่สุ่มมา คุณจะสังเกตว่าในสัปดาห์เลข อาเรย์มีแค่ 5 สมาชิก ซึ่งเกิดจากตอนที่เราได้กำหนดไว้ในคำสั่ง If

อาเรย์เมธอด

เมธอด คือกลุ่มของโค้ดหรือสามารถทำงานเพื่อวัตถุประสงค์บางอย่าง เนื่องจากอาเรย์นั้นเป็นออบเจ็ค ดังนั้นมันมีเมธอดสำหรับให้ใช้งานมากมาย โดยเมธอดสำหรับจัดการอาเรย์นั้นจะอยู่ในคลาส Array มาดูตัวอย่างในการใช้เมธอดกับอาเรย์

Module ArrayMethods

Sub Main()

Dim names = New String() {"Mateo", "Danny", "Thomas", "Jane"}

Array.Sort(names)

For Each el As String In names
Console.Write(el + " ")
Next

Console.WriteLine()

Array.Reverse(names)

For Each el As String In names
Console.Write(el + " ")
Next

Console.WriteLine()

names.SetValue("Sam", 0)

For i As Integer = 0 To names.Length - 1
Console.Write(names.GetValue(i) + " ")
Next

End Sub

End Module

ในตัวอย่าง เราได้ประกาศอาเรย์ names ซึ่งเก็บค่าที่เป็น String

Array.Sort(names)

เมธอด Array.Sort() เป็นเมธอดในการเรียงข้อมูลจากน้อยไปหามาก มันสามารถใช้ได้กับข้อมูลประเภทต่างๆ ไม่ว่าจะเป็นตัวเลขหรือ String

For Each el As String In names
Console.Write(el + " ")
Next

หลังจากเรียงข้อมูลในอาเรย์จากน้อยไปมากแล้ว เราได้ใช้คำสั่ง For Each loop ในการวนอ่านค่าในอาเรย์ ซึ่งคำสั่ง For Each loop เป็นคำสั่งที่ออกแบบมาสำหรับใช้งานกับอาเรย์

Array.Reverse(names)

ต่อมาเราใช้เมธอด Array.Reverse() ในการกลับค่าข้อมูลในอาเรย์ โดยสมาชิกตัวแรกจะไปอยู่ท้ายสุด และสมาชิกตัวท้ายสุดจะมาอยู่ตัวแรกตามลำดับ ถ้าเราใช้เมธอดนี้หลังจากเมธอด Array.Sort() เราจะได้อาเรย์ที่เรียงจากมากไปน้อย

names.SetValue("Sam", 0)

นี่เป็นคำสั่งในการกำหนดค่าให้กับสมาชิกในอาเรย์ โดยใช้เมธอด SetValue() อากิวเมนต์ตัวแรกเป็นข้อมูลและตัวที่สองเป็น index ของอาเรย์ มันมีความหมายเช่นเดียวกันกับคำสั่ง names(0) = "Sam"

Console.Write(names.GetValue(i) + " ")

นี่เป็นการอ่านค่าจากอาเรย์มาแสดงผลโดยการใช้เมธอด GetValue() มันมีความหมายเช่นเดียวกันกับคำสั่ง names(i)

Danny Jane Mateo Thomas
Thomas Mateo Jane Danny
Sam Mateo Jane Danny

และนี่เป็นผลลัพธ์ของโปรแกรม

อย่างไรก็ตาม ยังมีเมธอดต่างๆ อีกสำหรับการจัดการอาเรย์ ซึ่งเป็นเมธอดพื้นฐานในการจัดการข้อมูลแบบอาเรย์โดยที่เราไม่ต้องเขียนขึ้นใหม่ และในบทนี้ คุณได้เรียนรู้เกี่ยวกับอาเรย์ในภาษา Visual Basic


บทความเกี่ยวกับ อาเรย์

อาเรย์ ในภาษา C

ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับอาเรย์ในภาษา C ซึ่งคุณได้เห็นการใช้งานของอาเรย์ไปบ้างแล้วในบทก่อนหน้า อาเรย์ คือตัวแปรที่เก็บข้อมูลเป็นชุดข้อมูล โดยข้อมูลของอาเ...

อาเรย์ ในภาษา C#

อาเรย์เป็นประเภทข้อมูลชนิดหนึ่ง ที่คุณสามารถเก็บค่าตัวแปรประเภทเดียวกันได้หลายๆ ค่าไว้ในตัวแปรเดียวที่เรียกว่า ตัวแปรอาเรย์ ในการสร้างอาเรย์ในภาษา C# มีรูปแบบด...

อาเรย์ ในภาษา Java

ในบทนี้ เราจะแนะนำให้คุณได้รู้จักกับอาเรย์ การสร้างและใช้งานอาเรย์ในภาษา Java การใช้งานอาเรย์กับคำสั่ง For loop อาเรย์ (Array) คือ ประเภทของข้อมูลที่สามารถเก็บข...

อาเรย์ ในภาษา C++

อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษา C++ มันสามารถเก็บข้อมูลที่เป็นชุดไว้ในตัวแปรเดียวโดยการใช้ index เพื่อเป็นตัวชี้ของตำแหน่งข้อมูล ดังนั้นอาเรย์จึงเป็นตัวแปรประ...

อาเรย์ ในภาษา PHP

อาเรย์ (Array) คือประเภทข้อมูลที่เก็บข้อมูลเป็นชุดลำดับเรียงต่อกันในหน่วยความจำ อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษา PHP ที่สามารถเก็บข้อมูลได้มากกว่าหนึ่งค่า อาเร...