บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล

Download Report

Transcript บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล

บทที่ 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)
การแทนที่ขอ้ มูลแบบสแตติก


เป็ นกำรแทนที่ขอ้ มูลที่มีกำรจองเนื้ อที่แบบคงที่แน่ นอน กำรแทนที่
แบบนี้ ต้องมีกำรกำหนดขนำดก่อนกำรใช้งำน
ข้อเสีย คือไม่สำมำรถปรับขนำดให้เพิ่มขึ้ นหรือลดลงได้ ไม่สำมำรถ
เก็บข้อมูลเกินขนำดเนื้ อที่ที่กำหนดไว้ ถ้ำกำหนดขนำดเนื้ อที่ไว้มำก
เกินจำเป็ นทั้งๆ ที่มีขอ้ มูลอยูจ่ ำนวนน้อยจะทำให้สูญเสียเนื้ อที่โดย
เปล่ำประโยชน์
การแทนที่ขอ้ มูลแบบไดนามิก

เป็ นกำรแทนที่ขอ้ มูลที่ไม่ตอ้ งจองเนื้ อที่และขนำดของเนื้ อที่ก่อน
กำรใช้งำน สำมำรถยืดหยุน่ ได้ตำมควำมต้องกำรของผูใ้ ช้ ถ้ำ
ข้อมูลมีนอ้ ยก็ใช้เนื้ อที่น้อย และถ้ำข้อมูลมีมำกก็สำมำรถใช้เนื้ อที่
มำกตำมที่ใช้จริงได้ นอกจำกนั้นส่วนเนื้ อที่ในหน่ วยควำมจำหลัก
ที่ไม่ใช้แล้วสำมำรถส่งคืนเพื่อกลับมำใช้ใหม่ได้อีก
ขั้นตอนการพัฒนาโปรแกรม (Steps in program development)
มีข้นั ตอนหลักๆ ดังนี้
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
ตัวอย่าง Pseudo Code
Average of number
GET num1,num2,num2
COMPUTE sum=num1+num2+num3
COMPUTE average=sum/3
DISPLAY average
END
QUIZ (ให้เวลาทางาน 20 นาที)
จงเขียนอัลกอริทึมแบบ pseudo code เพื่อแสดงขั้นตอนของโจทย์ที่
กำหนดให้
1. รับค่ำตัวเลขจำนวนเต็ม 3 จำนวนทำงแป้นพิมพ์ จำกนั้ นให้หำว่ำตัวเลข
ที่มีคำ่ มำกที่สุดมีคำ่ เท่ำไร แล้วแสดงบนหน้ำจอ
2. รับค่ำตัวเลขจำนวนเต็ม 1 จำนวนทำงแป้นพิมพ์ จำกนั้ นให้แสดงสูตร
คูณของตัวเลขที่รบั ทำงหน้ำจอภำพ
เขียนใส่กระดำษที่แจกให้ กระดำษสำมำรถเขียนได้ท้งั ด้ำนหน้ำและด้ำนหลัง
โครงสร้างข้อมูลแบบอาร์เรย์




เป็ นโครงสร้างข้อมูลที่ประกอบไปด้วยสมาชิกซึ่ งมีรูปแบบข้อมูลเป็ นแบบ
เดียวกัน เรี ยงติดต่อกันไป และมีจานวนสมาชิกแน่นอน
การอ้างถึงข้อมูลในหน่วยความจาจะใช้ “ตัวบอกลาดับ” (Subscript) หรื อ
“ดรรชนี” (Index)
จานวน ตัวบอกลาดับหรื อดรรชนี จะเรี ยกว่า “มิติ” (Dimension)
โดยทัว่ ไปตัวบอกลาดับจะเริ่ มต้นจาก 0 เรี ยกว่า “ขอบเขตล่าง” (Lower
bound) ตัวบอกลาดับสุ ดท้าย เรี ยกว่า “ขอบเขตบน” (Upper bound)



การอ้างอิง หรื อการเข้าถึงสมาชิกตัวใด จะใช้ตวั บอกลาดับเพียงตัวเดียว
โดยทัว่ ไปตัวบอกลาดับจะเริ่ มต้นจาก 0 เรี ยกว่า “ขอบเขตล่าง” (Lower
bound)
ตัวบอกลาดับสุ ดท้าย เรี ยกว่า “ขอบเขตบน” (Upper bound)
อาร์เรย์ 1 มิติ

อำร์เรย์หนึ่ งมิติ เป็ นอำร์เรย์ชนิ ดโครงสร้ำงที่สำมำรถจัดเก็บ
ข้อมูลชนิ ดเดียวกันเป็ นกลุ่มหรือชุดที่เรียงต่อกันเป็ นแถวใน
หน่ วยควำมจำโดยใช้ตวั แปรชนิ ดเดียวกัน ชื่อเดียวกัน
แต่ ละเซลล์ในอาร์ เรย์
Score
82
61
43
56
78
Score[1]
Score[2]
Score[3]
Score[4]
Score[5]
การประกาศตัวแปรอาร์เรย์ 1 มิติ ในภาษา C
รูปแบบ
ชนิดข้อมูล ตัวแปรอาร์เรย์[ขนาด];
เช่น
int
num[10];
float area[5];
อาร์เรย์ 2 มิติ

อำร์เรย์สองมิติเป็ นอำร์เรย์ที่มีลกั ษณะเป็ นตำรำง ประกอบด้วย ช่อง
หลำยช่องเรียงกันเป็ นแถว ในแนวนอน(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
การอ้างถึงอาร์เรย์ 2 มิติ


รูปแบบ
ชื่ออำร์เรย์[ดัชนี กำกับแถว(row)][ดัชนี กำกับคอลัมน์(column)]
ตัวอย่ำง
Score
Score[1][2] ได้แก่ค่ำ 61
82
61
Score[3][4] ได้แก่ค่ำ 65
Score[2][5] ได้แก่ค่ำ 70
75
65
Lab 1
Lab 3
Lab 4
Lab 5
Student 1
43
56
78
Student 2
55
60
70
85
65
75
Student 3
80
Lab 2
75
การประกาศตัวแปรอาร์เรย์ 2 มิติ ในภาษา C
รูปแบบ
ชนิดข้อมูล ตัวแปรอาร์เรย์[ขนาดแถว][ขนาดคอลัมน์];
เช่น
int
num[2][3];
float area[5][4];
char stdname[5][20];