วันอังคารที่ 6 กรกฎาคม พ.ศ. 2553

ใกล้ชิดกับน้องอาเรย์ ..อีกนิด

มาทำความรู้จักกับอาเรย์ 3 พี่น้องกัน น้องเล็กสุดคือ อาเรย์ 1 มิติ เป็นอาเรย์ที่มีสมาชิกหลายตัวเรียงติดต่อกันไปในแนวนอน หรืออาจเรียงในแนวตั้งก็ได้ ดังภาพ a) ส่วนอาเรย์ 2 มิติ เป็นอาเรย์ที่มีลักษณะเป็นตาราง เปรียบเสมือนนำอาเรย์ 1 มิติที่มีขนาดเท่ากันมาเรียงแถวซ้อนต่อกันเป็นชั้น ดังภาพ b) ส่วนพี่ใหญ่ อาเรย์ 3 มิติ ก็ซับซ้อนไปอีกนั่นคือเหมือนการนำเอาตารางอาเรย์ 2 มิติมาเรียงซ้อนทับกันเป็นชั้น ๆ ดังภาพ c) จากภาพที่เห็นนั้นเราจะสนใจเฉพาะดัชนีที่เรียงรายกันอยู่กรอบนอกของอาเรย์แต่ละประเภท
เวลาเราเรียกชุดอาเรย์ 1 มิติ ก็ใช้รูปทั่วไปได้ว่า A(L:U) โดยที่ A คือชื่อของอาเรย์ ซึ่งเรากำหนดเองได้ แต่ขอยกตัวอย่างว่าชื่อ A ก็แล้วกัน ส่วน L คือ ดัชนีต่ำสุดของอาเรย์ และ U คือ ดัชนีสูงสุดของอาเรย์ แต่โดยปกติมักไม่ค่อยสนใจ L เท่าไร คืออาจไม่เขียนไว้ในรูปทั่วไปของชุดอาเรย์ เพราะถือว่าเริ่มที่ 0 (ศูนย์)จึงอาจเขียนรูปทั่วไปเพียง A(U) มีตำราหลายเล่มก็บอกเริ่มที่ 1 เพื่อจะได้ง่ายกับการคำนวณ ดังนั้นจากภาพ a) ก็เรียกว่าเป็นชุดอาเรย์ A(9) ซึ่งมีสมาชิกคือ A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7],A[8],A[9] มีสมาชิก 10 ตัว (เพราะนับจากสมาชิกตัวที่ศูนย์ด้วย)สังเกตด้วยนะว่าถ้าเป็นสมาชิก จะใช้วงเล็บ []เรียกว่า Square Brackets ส่วนชุดอาเรย์ใช้วงเล็บ ()ที่เรียกว่า parentheses ตัวอย่างจากภาพ a) ข้อมูลของ A[2] คือ -5 ข้อมูลของ A[7] คือ 56
ส่วนชุดอาเรย์ 2 มิติ ใช้รูปทั่วไปคือ A(L1:U1,L2:U2) ซึ่งจะเห็นว่าต้องระบุดัชนีต่ำสุดของแถวกับดัชนีสูงสุดของแถว (L1:U1) และระบุดัชนีต่ำสุดของคอลัมน์กับดัชนีสูงสุดของคอลัมน์ (L2:U2) ซึ่งซับซ้อนขึ้นกว่า 1 มิติ แต่อาจละ L1 และ L2 ไว้ก็ได้ เขียนเพียง A(U1,U2) จากภาพ b) จึงสามารถเขียนเป็นรูปทั่วไปได้ว่า A(0:9,0:9) หรือเขียนเพียง A(9,9)มีสมาชิก 100 ตัว คือ
A[0,0],A[0,1],A[0,2],A[0,3],...,A[0,9],
A[1,0],A[1,1],A[1,2],A[1,3],...,A[1,9],
A[2,0],A[2,1],A[2,2],A[2,3],...,A[2,9],
...
...
A[9,0],A[9,1],A[9,2],A[9,3],...,A[9,9]
การเขียนสมาชิกของอาเรย์ 2 มิติ จะต้องเขียนเป็นคู่ลำดับอย่างที่เห็น โดยระบุ ชื่ออาเรย์[แถว,คอลัมน์] หากระบุว่า A[3,5] ก็หมายความว่าเรากำลังจะสนใจกับสมาชิกของอาเรย์ A แถวที่ 3 คอลัมน์ที่ 5 ซึ่งเมื่อดูจากภาพจะเห็นได้ว่า A[3,5] นั้นเก็บข้อมูล 55 นั่นเอง
 
ชุอาเรย์ 3 มิติ ใช้รูปทั่วไปคือ A(L1:U1,L2:U2,L3:U3) ในภาพ c) คือ A(0:9,0:9,0:2)หรือเขียนเพียง A(9,9,2) ซึ่งเมื่อระบุสมาชิกก็จะต้องให้ละเอียดลงไปถึงระดับความลึก เช่น A[1,4,0] หมายถึงสมาชิกแถวที่ 1 คอลัมน์ที่ 4 ชั้นที่ 0 หรือ A[5,8,2] หมายถึงสมาชิกแถวที่ 5 คอลัมน์ที่ 8 ชั้นที่ 2 หวังว่าคงทำความเข้าใจได้ไม่ยากเน้อ
 
ขอบคุณภาพจาก book.mql4.com/variables/arrays

รู้จักกับน้องอาเรย์ (Array) เค้าว่าง่ายนะ

อาเรย์เป็นการจัดเก็บข้อมูลรูปแบบหนึ่งที่ซับซ้อนมากขึ้นกว่าการจัดเก็บแบบตัวแปรธรรมดา เพราะสามารถจัดเก็บข้อมูลได้หลาย ๆ ตัว (เรียกว่าเหล่าสาวกก็ได้)จะเก็บได้กี่ตัวก็ขึ้นอยู่กับโปรแกรมเมอร์นี่ละกำหนดเอง เรียกได้ว่าเป็นการจัดเก็บแบบมีโครงสร้าง (structure) ถือเป็นโครงสร้างข้อมูลที่ง่ายที่สุด ทำความเข้าใจได้ไม่ยาก ลักษณะสำคัญของเจ้าอาเรย์ก็คือ เป็นการจัดเก็บข้อมูลโดยมีสมาชิกเรียงติดต่อกันไปในหน่วยความจำ เหมือนคอนโดที่มีห้องเรียงติด ๆ กันนั่นละ แต่ละช่องสมาชิกก็จัดเก็บข้อมูลได้ 1 ชุด นอกจากนี้สมาชิกของอาเรย์ยังต้องเก็บข้อมูลชนิดเดียวกัน เช่น ถ้าอาเรย์หนึ่ง ๆ ถูกกำหนดให้เก็บตัวเลขจำนวนเต็ม สาวกของอาเรย์นั้น ๆ ก็ต้องเก็บได้เฉพาะเลขจำนวนเต็มเท่านั้น หรือหากกำหนดให้อาเรย์สามารถเก็บได้เฉพาะตัวอักษร เหล่าสาวกของเขาก็สามารถเก็บได้เฉพาะตัวอักษรเหมือนกันทุกช่อง เหมือนคอนโดที่กำหนดให้เช่าเฉพาะผู้หญิง ก็ต้องให้อยู่ได้เฉพาะผู้หญิงเท่านั้น ผู้ชาย ตุ๊ด เกย์ อยู่บ่ได้ เมื่อสมาชิกหรือเหล่าสาวกของอาเรย์ต้องมีชนิดเดียวกัน ก็สืบเนื่องมาได้ว่าสมาชิกเหล่านั้นก็ย่อมต้องมีขนาดที่เท่ากันด้วย ขนาดในที่นี้อย่าคิดเป็นอื่น เพราะมันคือขนาดของการใช้พื้นที่ในหน่วยความจำ ซึ่งมีหน่วยเป็นไบต์ (Byte) ดังนั้นถ้าสมาชิกในอาเรย์มี 10 ช่อง แต่ละช่องใช้พื้นที่ 2 ไบต์ ก็หมายความว่า อาเรย์นี้ใช้พื้นที่ในหน่วยความจำไปทั้งสิ้น 20 ไบต์
นอกจากลักษณะสำคัญ ของอาเรย์ที่ว่าไปแล้วข้างต้น อาเรย์ยังเป็นโครงสร้างที่เอื้อให้สามารถเข้าถึงข้อมูลในสมาชิกแต่ละตัวได้โดยตรง ซึ่งอาจเข้าถึงเพื่อไปแก้ไขข้อมูลในสมาชิกตัวที่ 2 ไปลบข้อมูลในสมาชิกตัวที่ 8 หรืออาจไปเพิ่มข้อมูลแทรกเข้าไประหว่างสมาชิกตัวที่ 5 กับตัวที่ 6 ก็ได้ เรียกได้ว่า จะเข้าไปจัดการกับข้อมูลส่วนไหน อย่างไร ก็ทำได้อยู่แว้ว

ขอบคุณภาพจาก http://www.manansaini.co.cc