บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล
Download
Report
Transcript บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล
อ.เกียรติศักดิ์ โยชะนัง
ข้อมูล คือ ข้อเท็จจริงที่มีอยูใ่ นชีวิตประจำวันเกี่ยวกับบุคคล
สิ่งของ หรือ เหตุกำรณ์ที่สนใจศึกษำ ข้อมูลอำจเป็ นตัวเลข
(numeric) หรืออำจเป็ นตัวอักษรหรือข้อควำม (alphabetic)
และข้อควำมที่เป็ นตัวเลขผสมข้อควำม (alphanumeric)
นอกจำก นี้ ข้อมูลอำจเป็ นภำพ (image) หรือ เสียง(sound) ก็ได้้
โครงสร้ำงข้อมูล (data structures) เกิ้จำกคำสองคำ คือ โครงสร้ำง
และ ข้อมูล
โครงสร้ำง เป็ นควำมสัมพันธ์ระหว่ำงสมำชิกในกลุ่ม
โครงสร้ำงข้อมูล หมำยถึง ควำมสัมพันธ์ระหว่ำงข้อมูลที่อยูใ่ น
โครงสร้ำงนั้น
กำรศึกษำโครงสร้ำงข้อมูลประเภทต่ำงๆ จะต้องศึกษำสิ่งต่อไดปนี้
1. นิ ยำม (definition) เป็ นกำรศึกษำควำมหมำย ควำมสัมพันธ์
ระหว่ำงข้อมูล และกำร้ำเนิ นกำรในโครงสร้ำงข้อมูลประเภทนั้ น
2. กำรนำไดปใช้จริงในเครื่องคอมพิวเตอร์ (implement)
แบ่งเป็ น 2 ประเภท คือ
โครงสร้ำงข้อมูลทำงกำยภำพ (physical data structures)
โครงสร้ำงข้อมูลทำงตรรกะ
(logical data structures)
เป็ นโครงสร้ำงข้อมูลทัว่ ไดปที่มีใช้ในภำษำคอมพิวเตอร์ ซึ่งแบ่งออกเป็ น 2
ประเภทตำมลักษณะข้อมูล ้ังนี้
1. ข้อมูลเบื้ องต้น (primitive data types)
2.
ข้อมูลโครงสร้ำง (structured data types)
เป็ นโครงสร้ำงข้อมูลที่เกิ้จำกจินตนำกำรของผูใ้ ช้เพื่อใช้แก้ปัญหำในโปรแกรมที่
สร้ำงขึ้ น จำแนกได้้เป็ น 2 ประเภท ้ังนี้
1. โครงสร้ำงข้อมูลแบบเชิงเส้น (linear data structures)
2. โครงสร้ำงข้อมูลแบบไดม่ใช่เชิงเส้น (non-linear data
structures)
ข้อมูลที่ตอ้ งกำรประมวลผลจะถูกนำไดปเก็บในหน่ วยควำมจำหลัก ้ังนั้นเมื่อเรำ
ต้องใช้โครงสร้ำงข้อมูล จึงต้องมีกำรแทนที่ขอ้ มูลในหน่ วยควำมจำหลัก้้วย
โ้ยทัว่ ไดปกำรเขียนโปรแกรมคอมพิวเตอร์มีกำรแทนที่ขอ้ มูลในหน่ วยควำมจำหลัก
อยู่ 2 วิธี คือ
1. กำรแทนที่ขอ้ มูลแบบสแตติก (static memory representation)
2. กำรแทนที่ขอ้ มูลแบบได้นำมิก (dynamic memory representation)
เป็ นกำรแทนที่ขอ้ มูลที่มกี ำรจองเนื้ อที่แบบคงที่แน่ นอน กำรแทนที่แบบนี้
ต้องมีกำรกำหน้ขนำ้ก่อนกำรใช้งำน
ข้อเสีย คือไดม่สำมำรถปรับขนำ้ให้เพิ่มขึ้ นหรือล้ลงได้้ ไดม่สำมำรถเก็บ
ข้อมูลเกินขนำ้เนื้ อที่ที่กำหน้ไดว้ ถ้ำกำหน้ขนำ้เนื้ อทีได่ ว้มำกเกินจำเป็ น
ทั้งๆ ที่มีขอ้ มูลอยูจ่ ำนวนน้อยจะทำให้สญ
ู เสียเนื้ อที่โ้ยเปล่ำประโยชน์
เป็ นกำรแทนที่ขอ้ มูลที่ไดม่ตอ้ งจองเนื้ อที่และขนำ้ของเนื้ อที่ก่อนกำร
ใช้งำน สำมำรถยื้หยุน่ ได้้ตำมควำมต้องกำรของผูใ้ ช้ ถ้ำข้อมูลมีน้อย
ก็ใช้เนื้ อที่นอ้ ย และถ้ำข้อมูลมีมำกก็สำมำรถใช้เนื้ อที่มำกตำมที่ใช้จริง
ได้้ นอกจำกนั้นส่วนเนื้ อที่ในหน่ วยควำมจำหลักที่ไดม่ใช้แล้วสำมำรถ
ส่งคืนเพื่อกลับมำใช้ใหม่ได้้อีก
มีข้นั ตอนหลักๆ ้ังนี้
1. นิ ยำมปั ญหำ
2. เขียนอัลกอริทึม
3. ท้สอบควำมถูกต้องของอัลกอริทึม
4. แปลงอัลกอริทึมเป็ นภำษำคอมพิวเตอร์
5. ติ้ตั้งโปรแกรม
6. จั้ทำคู่มือ
ขั้นตอนกำรทำงำนที่มีลำ้ับ มีควำมชั้เจน สำมำรถทำงำนได้้จริง
และมีจุ้เริ่มต้นและจุ้สิ้ นสุ้กำรทำงำน
อัลกอริทึมหนึ่ งๆ สำมำรถสื่อออกมำ้้วยภำษำใ้ๆ ก็ได้้ เช่น
◦ ภำษำพู้ (Natural Language) เช่น ภำษำไดทย อังกฤษ จีน ญี่ปุ่น
เกำหลีฯลฯ
◦ ภำษำโปรแกรม (Programming Language) เช่น C/C++, Java
ฯลฯ
ทำได้ 2 วิธี
1. รหัสเทียม (Pseudo Code)
2. ผังงำน (Flowchart)
1. A computer can receive information
RAED and GET are used in pseudo code.
READ ใช้กรณีที่มีกำรอ่ำนข้อมูลจำกแฟ้ มข้อมูล
GET ใช้กรณีรบั ข้อมูลจำกแป้นพิมพ์
2. A computer can put out information
PRINT , WRITE , PUT , OUTPUT or DISPLAY
are used in pseudo code.
PRINT ใช้ กรณีแสดงผลลัพธ์ทำงแป้นพิมพ์
WRITE ใช้ กรณีแสดงผลลัพธ์โดยเขียนลงแฟ้มข้ อมูล
PUT , OUTPUT , DISPLAY ใช้ กรณีแสดงผลลัพธ์ทำงหน้ ำจอ
3. A computer can perform arithmetic
the following symbols can be written in pseudo code.
+ for Add
- for Subtract
* for Multiply
/ for Divide
() for Parentheses
COMPUTE หรื อ CALCULATE ใช้ หน้ ำสูตร หรื อคำสัง่ คำนวณ
4. A computer can assign a value to a variable or
memory location.
กรณีกำหน้ค่ำเริ่มต้นให้ตวั แปร ให้ใช้คำว่ำ INITIALISE หรือ SET
กรณีกำหน้ค่ำที่เป็ นผลจำกกำรประมวลผลให้ตวั แปร ใช้สญ
ั ลักษณ์ = หรือ
5. A computer can compare two variables and select
one of two alternate action.
keyword IF , THEN and ELSE are used
IF score < 50 THEN
grade = “F”
ELSE
grade = “P”
END IF
6. A computer can repeat a group of actions.
6.1 Leading decision loop
DOWHILE condition p is true
statement block
ENDDO
6.2 Trailing decision loop
REPEAT
statement
statement
UNTIL condition is true
6.3 Counted loop
DO loop_index = initial_value to final_value
statement_block
ENDDO
Average of number
GET num1,num2,num2
COMPUTE sum=num1+num2+num3
COMPUTE average=sum/3
DISPLAY average
END
เป็ นโครงสร้ ำงข้ อมูลที่ประกอบไปด้ วยสมำชิกซึง่ มีรูปแบบข้ อมูลเป็ นแบบเดียวกัน
เรี ยงติดต่อกันไป และมีจำนวนสมำชิกแน่นอน
กำรอ้ ำงถึงข้ อมูลในหน่วยควำมจำจะใช้ “ตัวบอกลำดับ” (Subscript) หรื อ “ดรรชนี”
(Index)
จำนวน ตัวบอกลำดับหรื อดรรชนี จะเรี ยกว่ำ “มิติ” (Dimension)
โดยทัว่ ไปตัวบอกลำดับจะเริ่ มต้ นจำก 0 เรี ยกว่ำ “ขอบเขตล่ำง” (Lower bound)
ตัวบอกลำดับสุดท้ ำย เรี ยกว่ำ “ขอบเขตบน” (Upper bound)
กำรอ้ ำงอิง หรื อกำรเข้ ำถึงสมำชิกตัวใด จะใช้ ตวั บอกลำดับเพียงตัวเดียว
โดยทัว่ ไปตัวบอกลำดับจะเริ่ มต้ นจำก 0 เรี ยกว่ำ “ขอบเขตล่ำง” (Lower
bound)
ตัวบอกลำดับสุดท้ ำย เรี ยกว่ำ “ขอบเขตบน” (Upper bound)
อำร์เรย์หนึ่ งมิติ เป็ นอำร์เรย์ชนิ ้โครงสร้ำงที่สำมำรถจั้เก็บ
ข้อมูลชนิ ้เ้ียวกันเป็ นกลุ่มหรือชุ้ที่เรียงต่อกันเป็ นแถวใน
หน่ วยควำมจำโ้ยใช้ตวั แปรชนิ ้เ้ียวกัน ชื่อเ้ียวกัน
แต่ ละเซลล์ในอาร์ เรย์
Score
82
61
43
56
78
Score[1]
Score[2]
Score[3]
Score[4]
Score[5]
รูปแบบ
ชนิดข้อมูล ตัวแปรอาร์เรย์[ขนาด];
เช่น
int
num[10];
float area[5];
อำร์เรย์สองมิติเป็ นอำร์เรย์ที่มีลกั ษณะเป็ นตำรำง ประกอบ้้วย ช่อง
หลำยช่องเรียงกันเป็ นแถว ในแนวนอน(Row) และในแนวตั้ง
(Column)
Lab 1
Lab 2
Lab 3
Lab 4
Lab 5
Student 1
82
61
43
56
78
Student 2
75
65
55
60
70
Student 3
80
75
85
65
75
ชื่ออาร์ เรย์
Score
รูปแบบ
ชื่ออำร์เรย์[้ัชนี กำกับแถว(row)][้ัชนี กำกับคอลัมน์(column)]
ตัวอย่ำง
Score
Score[1][2] ได้้แก่ค่ำ 61
Score[3][4] ได้้แก่ค่ำ 65
82
61
Score[2][5] ได้้แก่ค่ำ 70
Lab 1
Lab 2
Student 1
Lab 3
Lab 4
Lab 5
43
56
78
Student 2
75
65
55
60
70
Student 3
80
75
85
65
75
รูปแบบ
ชนิดข้อมูล ตัวแปรอาร์เรย์[ขนาดแถว][ขนาดคอลัมน์];
เช่น
int
num[2][3];
float area[5][4];
char stdname[5][20];