320 likes | 540 Views
ARRAY. บทที่ 3 อาร์เรย์. วัตถุประสงค์เพื่อ. บอกคุณสมบัติโครงสร้งข้อมูลแบบอาร์เรย์ได้ สามารถอ้างอิงตำแหน่งสมาชิกและคำนวณหาจำนวนสมาชิกในอาร์เรย์ได้ เข้าใจหลักการจัดเก็บอาร์เรย์ในหน่วยความจำ สามารถคำนวณหาแอดเดรสในหน่วยความจำของอาร์เรย์หนึ่งมิติหรือหลายมิติได้
E N D
ARRAY บทที่ 3 อาร์เรย์
วัตถุประสงค์เพื่อ • บอกคุณสมบัติโครงสร้งข้อมูลแบบอาร์เรย์ได้ • สามารถอ้างอิงตำแหน่งสมาชิกและคำนวณหาจำนวนสมาชิกในอาร์เรย์ได้ • เข้าใจหลักการจัดเก็บอาร์เรย์ในหน่วยความจำ • สามารถคำนวณหาแอดเดรสในหน่วยความจำของอาร์เรย์หนึ่งมิติหรือหลายมิติได้ • เห็นความสำคัญของโครงสร้างข้อมูลแบบอาร์เรย์ที่เป็นพื้นฐานสำคัญต่อโครงสร้างข้อมูลอื่นๆ
หัวข้อที่บรรยาย • โครงสร้างข้อมูลแบบอาร์เรย์ • ประเภทของอาร์เรย์ • การอ้างอิงตำแหน่งสมาชิกในอาร์เรย์ • ขอบเขตของอาร์เรย์ • การจัดเก็บอาร์เรย์ในหน่วยความจำ • ตัวอย่างการใช้งานอาร์เรย์ • การนำอาร์เรย์ไปใช้งาน
โครงสร้างข้อมูลแบบอาร์เรย์โครงสร้างข้อมูลแบบอาร์เรย์ • อาร์เรย์คืออะไร • “อาร์เรย์ (Array) หรือแถวลำดับ คือการรวมกลุ่มของตัวแปรที่สามารถใช้ตัวแปรชื่อเดียวแทนข้อมูลสมาชิกได้หลายๆ ตัวในคราวเดียวกันด้วยการใช้เลขดัชนี (Index) เป็นตัวอ้างอิงตำแหน่งสมาชิกบนแถวลำดับนั้นๆ”
โครงสร้างข้อมูลแบบอาร์เรย์โครงสร้างข้อมูลแบบอาร์เรย์
คุณสมบัติสำคัญของอาร์เรย์คุณสมบัติสำคัญของอาร์เรย์ • อาร์เรย์เป็นตัวแทนกลุ่มของข้อมูลที่มีความสัมพันธ์กัน • สมาชิกในอาร์เรย์จะมีคุณสมบัติเหมือนๆ กัน คือมีชนิดข้อมูลเหมือนกันทั้งหมด • ขนาดของอาร์เรย์จะมีขนาดคงที่ (Static) เมื่อได้ถูกสร้างขึ้นครั้งแรก • ผู้ใช้สามารถอ้างอิงเพื่อเข้าถึงข้อมูลที่ต้องการได้ทันที (Direct Access)
ประเภทของอาร์เรย์ • ประเภทของอาร์เรย์เมื่อพิจารณาจากมิติของอาร์เรย์ • อาร์เรย์ 1 มิติ • อาร์เรย์หลายมิติ • ประเภทของอาร์เรย์เมื่อพิจารณาจากขนาดของอาร์เรย์ • อาร์เรย์ขนาดคงที่ • อาร์เรย์ที่เปลี่ยนแปลงขนาดได้
ตัวอย่างอาร์เรย์ 3 มิติ
ตัวอย่างอาร์เรย์ที่เปลี่ยนแปลงขนาดได้ตัวอย่างอาร์เรย์ที่เปลี่ยนแปลงขนาดได้
การอ้างอิงตำแหน่งสมาชิกในอาร์เรย์การอ้างอิงตำแหน่งสมาชิกในอาร์เรย์ • การอ้างอิงตำแหน่งสมาชิกในอาร์เรย์ จะต้องเริ่มต้นด้วยชื่ออาร์เรย์และตามด้วยเลขลำดับ (Position Number) กำกับไว้ • ภาษา C หรือ JAVA หมายเลขลำดับจะเริ่มต้นที่หมายเลข 0 ในขณะที่ภาษา FORTRAN จะเริ่มต้นด้วยหมายเลข 1 • การอ้างอิงสมาชิกในอาร์เรย์สามารถเข้าถึงได้โดยตรง จึงรับประกันได้ว่าการเข้าถึงด้วยการอ่านหรือการบันทึกข้อมูลในอาร์เรย์จะมีเวลาคงที่
เปรียบเทียบการอ้างอิงสมาชิกในแถวลำดับเปรียบเทียบการอ้างอิงสมาชิกในแถวลำดับ
ขอบเขตของอาร์เรย์ • เลขดัชนีในอาร์เรย์ประกอบไปด้วยช่วงขอบเขตของค่า ซึ่งประกอบด้วยขอบเขตล่างสุด (Lower Bound) และขอบเขตบนสุด (Upper Bound) • ภาษา C, C++, C#, JAVA ถูกกำหนดขอบเขตล่างสุดท่ากับ 0 • ภาษา FORTRAN ถูกกำหนดขอบเขตล่างสุดเท่ากับ 1 • ภาษา ADA, PL/1, PASCAL สามารถกำหนดขอบเขตล่างสุดและขอบเขตบนสุดของอาร์เรย์ได้ ซึ่งรวมถึงสามารถกำหนดขอบเขตค่าติดลบได้อีกด้วย
ตัวอย่างอาร์เรย์ที่แสดงขอบเขตตัวอย่างอาร์เรย์ที่แสดงขอบเขต • จำนวนสมาชิก = U – L + 1 • โดยที่ U = ขอบเขตบนสุด (Upper Bound) L = ขอบเขตล่างสุด (Lower Bound)
สูตรการหาจำนวนสมาชิกของอาร์เรย์ 2 มิติ • จำนวนสมาชิก = (U1 - L1 + 1) x (U2 – L2 + 1) • โดยที่ U1 = ขอบเขตบนสุดของแถว L1 = ขอบเขตล่างสุดของแถว U2 = ขอบเขตบนสุดของคอลัมน์ L2 = ขอบเขตล่างสุดของคอลัมน์
การจัดเก็บอาร์เรย์ในหน่วยความจำการจัดเก็บอาร์เรย์ในหน่วยความจำ • อาร์เรย์ที่จัดเก็บอยู่ในหน่วยความจำคอมพิวเตอร์จะมีลักษณะเป็นลำดับต่อเนื่องกัน • ใช้เนื้อที่ในการจัดเก็บข้อมูลสมาชิกของแต่ละตัวในขนาดเท่าๆ กัน • สมาชิกในอาร์เรย์ทุกตัวต้องเป็นข้อมูลชนิดเดียวกัน (Homogenous Elements) • เข้าถึงข้อมูลทุกตำแหน่งในอาร์เรย์ได้โดยตรง และใช้เวลาเท่ากัน
การจัดเก็บอาร์เรย์ 1 มิติ ในหน่วยความจำ • โครงสร้างข้อมูลอาร์เรย์ 1 มิติ จะจัดเก็บข้อมูลในลักษณะต่อเนื่องกันเป็นแถว ซึ่งอาจนำเสนอในมุมมองแบบแนวนอนหรือแนวตั้งก็ได้ • ArrayName[L:U] • ตัวอย่างการประกาศอาร์เรย์ในภาษา C • int a[20]; • a[0], a[1], a[2], a[3], … , a[19]
อาร์เรย์ 1 มิติในหน่วยความจำ • LOC(a[i]) = B +w(i-L)
การจัดเก็บอาร์เรย์ 2 มิติ ในหน่วยความจำ • โครงสร้างอาร์เรย์สองมิติมีรูปแบบตารางที่ประกอบด้วยแถว (Row) และคอลัมน์ (Column) ในเชิงคณิตศาสตร์ก็คือแมทริกซ์ (Matrix) • ArrayName[L1 : U1 , L2 : U2] • ตัวอย่างสรุปยอดขายของแต่ละไตรมาส ตั้งแต่ปี 2548-2550
อาร์เรย์ 2 มิติในหน่วยความจำ • การจัดเก็บด้วยการเรียงแถวเป็นหลัก • การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก • สมมติกำหนดให้ K[4,3] หรือ K[0:3,0:2] ด้วยภาษา C ดังนี้ • int K[4][3]; • กำหนดให้อาร์เรย์ K =
อาร์เรย์ 2 มิติในหน่วยความจำแบบเรียงแถวเป็นหลัก • LOC(K[i,j]) = B + w[C(i-L1)+(j-L2)]
อาร์เรย์ 2 มิติในหน่วยความจำแบบเรียงคอลัมน์เป็นหลัก • LOC(K[i,j]) = B + w[R(j-L1)+(i-L2)]
การจัดเก็บอาร์เรย์ 3 มิติ ในหน่วยความจำ • อาร์เรย์สามมิติก็คือการนำอาร์เรย์สองมิติมาเรียงซ้อนกันหลายๆ ชั้น (Page) ทำให้นอกจากจะมีแถวและคอลัมน์แล้วก็จะมีความลึกเพิ่มขึ้นอีก • ArrayName[L1 : U1 , L2 : U2, L3: U3] • ตัวอย่างกำหนดให้ S[3,4,5] หรือ S[0:2, 0:3, 0:4] ด้วยภาษา C • int S[3] [4] [5]; • S[0,0,0], S[0,0,1], S[i,j,k], … , S[2,3,4]
สูตรการหาจำนวนสมาชิกของอาร์เรย์ 3 มิติ • จำนวนสมาชิก=(U1 - L1 + 1)x(U2 – L2 + 1)x(U3 – L3 + 1) หรือ • จำนวนสมาชิก = P x R x C • โดยที่ P = ชั้น (Page) R = แถว (Row) C = คอลัมน์ (Column)
อาร์เรย์ S แบบสามมิติ ขนาด 3x4x5
อาร์เรย์ 3 มิติในหน่วยความจำแบบเรียงแถวเป็นหลัก • LOC(S[i,j,k]) = B + [w x R x C(i-L1)] + [w x C(j-L2)] + [w(k-L3)]
อาร์เรย์ 3 มิติในหน่วยความจำแบบเรียงแถวเป็นหลัก
ตัวอย่างการใช้งานอาร์เรย์ตัวอย่างการใช้งานอาร์เรย์ • ตัวอย่างการใช้งานอาร์เรย์ขนาดคงที่ (TestArray) • ตัวอย่างการใช้งานอาร์เรย์ที่เปลี่ยนแปลงขนาดได้ (TestDynamicArray) • พิมพ์และรันโปรแกรมผลลัพธ์ • นำเสนอหน้าชั้นเรียน
การนำอาร์เรย์ไปใช้งานการนำอาร์เรย์ไปใช้งาน • อาร์เรย์เหมาะกับงานที่ต้องมีการอ่านข้อมูลอยู่เสมอๆ หรือข้อมูลถูกแก้ไขเปลี่ยนแปลงอยู่เสมอๆ โดยที่จำนวนของข้อมูลไม่เปลี่ยนแปลง • ตัวอย่างเช่น การเก็บข้อมูลของนักเรียนในแต่ละชั้นเรียน ซึ่งจำนวนนักเรียนจะคงที่ตลอดปีการศึกษา แต่จะเข้าถึงข้อมูลนักเรียนเสมอเพื่อเรียกดูหรือแก้ไขข้อมูล • ถ้าเป็นอาร์เรย์ที่เปลี่ยนแปลงขนาดได้ จะเหมาะกับข้อมูลที่ไม่ทราบจำนวนของข้อมูลทั้งหมดตั้งแต่แรก • ถูกนำไปเป็นโครงสร้างพื้นฐานของโครงสร้างข้อมูลชนิดอื่นๆ
สรุปท้ายบทที่ 3 • อาร์เรย์ หรือแถวลำดับ คือการรวมกลุ่มของตัวแปรที่สามารถใช้ตัวแปรชื่อเดียวกันแทนข้อมูลสมาชิกได้หลายๆ ตัวในคราวเดียวกัน ด้วยการใช้เลขดัชนีเป็นตัวอ้างอิงตำแหน่งสมาชิก • คุณสมบัติของอาร์เรย์ • อาร์เรย์เป็นตัวแทนกลุ่มของข้อมูลที่มีความสัมพันธ์กัน • สมาชิกในอาร์เรย์จะมีคุณสมบัติหรือมีชนิดข้อมูลที่เหมือนกันทั้งหมด • ขนาดของอาร์เรย์จะมีขนาดคงที่เมื่อได้ถูกสร้างขึ้น • อาร์เรย์เป็นโครงสร้างข้อมูลที่ผู้ใช้สามารถอ้างอิงเพื่อเข้าถึงข้อมูลที่ต้องการได้ทันที
สรุปท้ายบทที่ 3 • เลขดัชนีในอาร์เรย์ประกอบด้วยช่วงขอบเขตของค่า • ขอบเขตล่างสุด • ขอบเขตบนสุด • โครงสร้างของอาร์เรย์ 1 มิติ คือ เป็นแถวลำดับต่อเนื่องกัน • โครงสร้างของอาร์เรย์ 2 มิติ คือ เป็นรูปแบบตาราง หรือแมทริกซ์ • โครงสร้างของอาร์เรย์ 3 มิติ คือ นำเอาอาร์เรย์ 2 มิติ มาเรียงซ้อนกัน โดยมีความลึกเพิ่มขึ้น