วันอังคารที่ 30 มิถุนายน พ.ศ. 2552

DTS03-23-06-2552

อะเรย์ เป็นโครงสร้างข้อมูลแบบง่าย ที่พบมากในการเขียนโปรแกรมภาษาคอมพิวเตอร์ทุกภาษา และมักใช้เป็นพื้นฐานในการทำความเข้าใจโครงสร้างข้อมูลตัวอื่น ๆ อะเรย์ เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้าย เซ็ตในคณิตศาสตร์ คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกับสมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากัน เรียงต่อเนื่องในหน่วยความจำหลัก อะเรย์ ถือเป็นโครงสร้างข้อมูลแบบสแตติค (Static data structure) โดยอะเรย์จะมีขนาดคงที่ เป็นแถวลำดับแบบอันดับ (Ordered list ) ที่ประกอบด้วยชุดของตัวแปรที่มีลักษณะเป็นช่องหลาย ๆ ช่องที่มีชื่อเดียวกัน สำหรับใช้เก็บข้อมูลชนิดเดียวกัน โดยข้อมูลที่อยู่ในช่องแต่ละช่อง จะเรียกว่า เป็นสมาชิกของอะเรย์
อะเรย์ มีคุณสมบัติหลัก ๆ ดังนี้
มีขนาดคงที่
ข้อมูลที่จัดเก็บแสดงผลออกมาแบบเรียงลำดับ (inorder)
สามารถดึงสมาชิกลำดับที่ i ใด ๆ ออกมาได้
สามารถแทนที่สมาชิกลำดับที่ i ใด ๆ ได้
สามารถเพิ่มสมาชิกใหม่เข้าไปในแถวลำดับได้
สามารถลบสมาชิกที่มีอยู่ออกจากแถวลำดับได้
การเข้าถึงข้อมูลใน Arrays
เราสามารถอ้างถึงสมาชิกทุกตัวภายในอาเรย์อย่างอิสระ ภายในขอบเขตของขนาดที่ได้ประกาศอะเรย์ไว้
โครงสร้างข้อมูลอะเรย์ (Array) เป็นโครงสร้างข้อมูลที่มีการจองพื้นที่หน่วยความจำ (Memory) เป็นชุด ๆ แต่ละชุดประกอบด้วยจำนวนช่องข้อมูลหลายช่อง พื้นที่แต่ละช่องข้อมูลจะอยู่ในตำแหน่งที่ต่อเนื่องกันไปตามลำดับ การเข้าถึงข้อมูล (Access) ข้อมูลใด ๆ ในโครงสร้าง สามารถกระทำได้โดยการระบุหมายเลขกำกับช่องข้อมูล ที่เรียกว่า ตัวดัชนี (Index) หรือบางครั้งเรียกว่า ตัวชี้ หรือ ซับสคริปต์ (Sub Script)
การกำหนด Array
การกำหนดอะเรย์จะต้องกำหนดชื่ออะเรย์ พร้อม subscript ซึ่งเป็น ตัวกำหนดขอบเขตของอะเรย์ มีได้มากกว่า 1 ตัว จำนวน subscript จะเป็นตัวบอกมิติของอะเรย์นั้น อะเรย์ที่มี subscript มากกว่า 1 ตัวขึ้นไป จะเรียกว่า อะเรย์หลายมิติ การกำหนด subscript แต่ละตัวจะประกอบไปด้วย ค่าสูงสุดและค่าต่ำสุดของ subscript นั้น การประกาศค่าตัวแปรอะเรย์ในภาษาคอมพิวเตอร์บางภาษา
ลักษณะโครงสร้างข้อมูลอะเรย์
ข้อกำหนดของการกำหนดค่าต่ำสุดและค่าสูงสุดของ subscript คือ
ค่าต่ำสุดต้องมีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดเสมอ
ค่าต่ำสุด เรียกว่า ขอบเขตล่าง (lower bound)
ค่าสูงสุด เรียกว่า ขอบเขตบน (upper bound)
ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก จะต้องมีค่ามากกว่า หรือเท่ากับขอบเขตล่าง และน้อยกว่าหรือเท่ากับขอบเขตบน
lower bound ≤ subscript ≤ upper bound ขนาดของ index แต่ละตัว ของ Array หาได้จาก ขนาดของ subscript = upper bound – lower bound + 1
อะเรย์ใช้ index ในการบ่งชี้ตำแหน่ง ดังนั้นการดึงข้อมูลและการจัดเก็บข้อมูลใดๆลงในอะเรย์ สิ่งที่ต้องคำนึงถึงคือ
ค่าต่ำสุด Lower bound ในแต่ละมิติ แทนด้วย L
ค่าสูงสุด Upper bound ในแต่ละมิติ แทนด้วย U
จำนวนหรือขนาดของอะเรย์ Range = ( U -L ) + 1

จำนวนสมาชิก หรือขนาดของอะเรย์ n มิติ หาได้จาก
ขนาดของอะเรย์ = ผลคูณของขนาดของ subscript แต่ละตัว
เช่น ขนาดของอะเรย์ A[1…
10] = Upper bound – lower bound+1
ขนาดของอะเรย์ K [1..5,1..10] = ผลคูณของขนาดของ subscript แต่ละตัว

Arrays หลายมิติ
การจัดเก็บอะเรย์ในหน่วยความจำหลัก จะใช้เนื้อที่ขนาดเท่ากัน เพื่อเก็บสมาชิกแต่ละตัว โดยเนื้อที่จะเรียงต่อเนื่องกัน การจัดเก็บอะเรย์ในหน่วยความจำหลัก จะพิจารณาตามประเภทของอะเรย์ในมิติต่าง ๆ ดังนี้
โครงสร้างข้อมูลอะเรย์หนึ่งมิติ (One-Dimensional Array)
โครงสร้างข้อมูลอะเรย์สองมิติ (Two-Dimensional Array)
โครงสร้างข้อมูลอะเรย์สามมิติ (Three-Dimensional Array)
รูปแบบ
Array
[l..u]
แถวลำดับ 1 มิติ
Array
[l1..u1,l2..u2]
แถวลำดับ 2 มิติ
Array
[l1..u1,l2..u2,l3..u3]
แถวลำดับ 3 มิติ
โครงสร้างข้อมูลอะเรย์หนึ่งมิติ (One-Dimensional Array)
คือ โครงสร้างข้อมูลแถวลำดับที่มีการจัดเก็บข้อมูลต่อเนื่องกันไปเป็นแถวต่อเนื่องกันตลอด ซึ่งเปรียบเหมือนกับตารางแถวเดียว โดยมีดัชนีอ้างอิงเพียง 1 ตัว
รูปแบบ data-type array-name[expression]
data-type คือ ประเภทของข้อมูลอะเรย์ เช่น int char float
array-name คือ ชื่อของอะเรย์
expression คือ นิพจน์จำนวนเต็มซึ่งระบุจำนวนสมาชิกของอะเรย์

ตัวอย่าง char a[4]; int num[10]; Char a[4];
หมายถึง คอมพิวเตอร์จะจองเนื้อที่ในหน่วยความจำสำหรับตัวแปร a ให้เป็นตัวแปรชุดชนิด character ขนาดสมาชิก 4 สมาชิก โดยหน่วยความจำจะเตรียมเนื้อที่ให้ 1 byte สำหรับ 1 ชื่อตัวแปร

ถ้าเป็นอะเรย์มิติเดียว สามารถทำได้ทั้งหมด 3 วิธี
1. มีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
ตัวอย่าง
#define N 5; void display(int b[N]) { int i; for(i=0; i
2. ไม่ต้องมีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
ตัวอย่าง
void display(int b[ ]) { int i; for(i=0; i<10;i++) printf(“%d\t”,b[i]); printf(“\n”); }
3. ตัวแปรที่ทำหน้าที่รับค่าถูกกำหนดเป็นพอยน์เตอร์
ตัวอย่าง
void display(int *b);
การส่งผ่านอะเรย์ให้กับฟังก์ชันเป็นการส่งผ่านโดยการอ้างอิงเรียกว่า Pass by reference คือ ค่าของสมาชิกแต่ละตัวจะไม่ได้ถูกส่งไปให้ฟังก์ชันแต่ชื่อของอะเรย์จะถูกมองเป็นตำแหน่งในหน่วยความจำที่ใช้เก็บสมาชิกตัวแรกซึ่ง address นี้จะถูกส่งให้กับอาร์กิวเมนต์ที่ตรงกัน ดังนั้น อาร์กิวเมนต์จึงเป็น pointer ชี้ไปยังสมาชิกตัวแรกของอะเรย์
Pass by value คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งค่าของตัวแปรหรือค่าคงที่ไปโดยตรง ค่าของอาร์กิวเมนต์ที่ผ่านให้กับฟังก์ชันจะถูกคัดลอกส่งให้กับฟังก์ชัน และจะถูกเปลี่ยนแปลงเฉพาะภายในฟังก์ชันโดยค่าของอาร์กิวเมนต์ในโปรแกรมที่เรียกใช้จะไม่เปลี่ยนแปลง
Pass by reference คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งเป็นค่าตำแหน่งที่อยู่ของตัวแปรไปซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของอาร์กิวเมนต์ที่ส่งไป ก็จะมีผลทำให้ค่าของอาร์กิวเมนต์นั้นในโปรแกรมที่เรียกใช้เปลี่ยนไปด้วย

โครงสร้างข้อมูลอะเรย์สองมิติ (Two-Dimensional Array)

คือ โครงสร้างข้อมูลที่มีการจัดเก็บข้อมูลแบบตารางสองทางข้อมูลมีการจัดเรียงกันตามแนวแถว(Row) และ แนวหลัก (Column) การอ้างถึงข้อมูลต้องระบุตำแหน่งแถว และตำแหน่งหลักที่ข้อมูลนั้นอยู่
สำหรับ Array 2 มิตินั้น ในการเข้าถึงสมาชิกตัวใดต้องใช้ตัวบอกลำดับ2 ตัว โดยโครงสร้างสามารถมองได้ในลักษณะ Matrix หรือ Table คือ สมาชิกถูกจัดเรียงให้อยู่ในลักษณะแถว (Row) และคอลัมน์ (Column)
รูปแบบทั่วไปของโครงสร้างข้อมูลอะเรย์ 2 มิติ A[L1 : U1 , L2 : U2]
เมื่อ A คือ ชื่อของโครงสร้างข้อมูลอะเรย์
L1 คือ ค่าขอบเขตต่ำสุด (lower Bound) ของแถว U1 คือ ค่าขอบเขตสูงสุด (Upper Bound) ของแถว
L2 คือ ค่าขอบเขตต่ำสุด (lower Bound) ของหลัก U2 คือ ค่าขอบเขตสูงสุด (Upper Bound) ของหลัก
Structure คือ โครงสร้างที่สมาชิกแต่ละตัวมีประเภทข้อมูลแตกต่างกันได้ โดยที่ใน structure อาจมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์หรือพอยเตอร์ หรือแม้แต่ structure ด้วยกันก็ได้
Structure กับ pointer
เราสามารถที่จะอ้างถึงที่อยู่เริ่มต้นของ structure ได้เหมือนกับตัวแปรอื่น ๆ โดยใช้ตัวดำเนินการ & ดังนั้น ถ้า variable เป็นตัวแปรประเภท structure &variable จะเป็นเลขที่อยุ่เริ่มต้นของตัวแปร
Pointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ (Address) ของตัวแปรที่อยู่ในหน่วยความจำ
ความรู้ทั่วไป
-Character หรือเรียกอีกอย่างหนึ่งว่า String
-การนับสมาชิกในอะเรย์ 1 มิติ ตัวที่หนึ่งต้องเริ่มที่ 0 เสอม
-วงเล็บคือสิ่งที่บอกฟัง์ชัน
-Input Process Output = IPO
-ถ้าตัวแปลที่เป็นตัวอักษรจะไม่ใช้ = เด็ดขาด จะใช้ “”
ความรู้นอกบทเรียน
-ดูแลตัวเองก่อนไปดูแลคนรอบข้าง
-การทำบุญให้ตัวเอง
-จิตอาสา จิตสาธารณะ
-การทำงานกับส่วนรวม

ไม่มีความคิดเห็น:

แสดงความคิดเห็น