Transcript ppt

ความรู้ เบือ้ งต้ นเกีย่ วกับโครงสร้ างข้ อมูลและอัลกอริทมึ
(Introduction to Data Structure and Algorithm)
1. ขั้นตอนการพัฒนาโปรแกรม
1.
2.
3.
4.
5.
6.
7.
กำหนดปัญหำ
ร่ ำงรำยละเอียดแนวทำงกำรแก้ปัญหำ
พัฒนำอัลกอริ ทึม
ตรวจสอบควำมถูกต้องของอัลกอริ ทึม
เขียนโปรแกรม
ทดสอบโปรแกรม
จัดทำเอกสำรและบำรุ งรักษำโปรแกรม
Introduction
2
1.1



พิจำรณำสิ่ งที่โจทย์ตอ้ งกำร
พิจำรณำรู ปแบบของผลลัพธ์ที่โจทย์ตอ้ งกำร
พิจำรณำข้อมูลนำเข้ำ
1.2

กำรกำหนดปัญหำ
ร่ ำงรำยละเอียดแนวทำงกำรแก้ปัญหำ
พิจำรณำหำวิธีกำร หรื อสูตรที่ตอ้ งกำรในกำรแก้ปัญหำ
Introduction
3
1.3


พัฒนำอัลกอริ ทึม
ผังงำน(Flowchart)
รหัสเทียม(Pseudo Code)
Introduction
4
ั ลักษณ์ผังงาน(Flowchart)ทีใ่ ชบ่้ อย
สญ
้ ทาง
แทนกิจกรรมเปรียบเทียบข้อมูลก ับเงือ
่ นไข โดยมีเสน
ออกเป็นทางเลือก
แทนการประมวลผลทว่ ั ไป ยกเว้นการอ่านข้อมูล และการแสดงผลล ัพธ์
ิ้ สุดของงาน ซงึ่ อาจเป็นทงโปรแกรม
แทนจุดเริม
่ ต้น และจุดสน
ั้
ย่อย (Subroutine) หรือโปรแกรมหล ัก (Main Program)
จุดต่อหน้าใหม่
แทนการนาข้อมูลเข้า (Input) และการนาผลล ัพธ์ออก
(Output) โดยทงั้ 2 กรณีน ี้ ย ังไม่ได้ระบุชนิดเครือ
่ งมือหรือ
อุปกรณ์ทใี่ ช ้
Introduction
5
ั ลักษณ์ผังงาน(Flowchart)ทีใ่ ชบ่้ อย (ต่อ)
สญ
การแสดงผลออกทางจอภาพ
การแสดงผลออกทางเครือ
่ งพิมพ์
Hard Disk หรือ จานแม่เหล็ก
จุดต่อของผ ังงานในหน้ากระดาษแผ่นเดียวก ัน
Introduction
6
รหัสเทียม(Pseudo Code)
• ถ้อยคำหรื อประโยคคำสัง่ ที่เขียนบรรยำยกำรทำงำนด้วยภำษำที่มนุษย์
เข้ำใจ
turn on calculator
clear calculator
repeat the following instructions
key in baht amount
key in decimal point (.)
key in satang amount
press addition (+) key
until all prices have been entered
write down total price
turn off calculator
1.
2.
3.
4.
5.
6.
7.
จัดเตรี ยมบะหมี่กึ่งสำเร็จรู ป
ต้ มนำ้ สะอำดให้ เดือด
นำบะหมี่สำเร็จรู ปใส่ ลงในชำม
ฉี กซองใส่ เครื่ องปรุงลงในชำม
นำนำ้ ที่ต้มเดือดเทลงในชำม
ปิ ดฝำ
รอประมำณ 3 นำที
Introduction
7
1.4
ตรวจสอบควำมถูกต้องของอัลกอริ ทึม
ตรวจสอบขั้นตอนต่ำง ๆ ด้วยมือ เพื่อให้แน่ใจว่ำอัลกอริ ทึมที่ออกแบบ
มำนั้นมีควำมถูกต้อง
 ตรวจสอบกำรนำข้อมูลเข้ำ
 ตรวจสอบกระบวนกำร ตรรกะ และค่ำของตัวแปรต่ำง ๆ
 ตรวจสอบผลลัพธ์ที่ได้
Introduction
8
1.5

เขียนโปรแกรม
ภำษำโปรแกรม เป็ นกลุ่มของคำหรื อสัญลักษณ์ที่ช่วยให้ผเู ้ ขียน
โปรแกรมสำมำรถติดต่อสื่ อสำรกับคอมพิวเตอร์ได้โดยมี
กฎไวยำกรณ์ (Syntax) ของแต่ละภำษำโปรแกรมเป็ นตัวกำหนด
วิธีกำรเขียน
Introduction
9
1.6


ทดสอบโปรแกรม
ดีบักเกอร์ (Debugger)คือโปรแกรมที่สำมำรถแจ้งข้อผิดพลำดทำง
ไวยำกรณ์ที่เกิดขึ้นในโปรแกรมโดยผูท้ ดสอบสำมำรถที่จะหยุด
โปรแกรมที่กำลังทำงำนนั้นไว้ชวั่ ขณะหนึ่งเพื่อตรวจสอบ
ข้อผิดพลำดได้
ข้ อผิดพลาดทีเ่ กิดขึน้ จากการเขียนโปรแกรม



ข้อผิดพลำดทำงไวยำกรณ์(Syntax Errors)
ข้อผิดพลำดที่เกิดขึ้นขณะทำกำรรันโปรแกรม(Run-Time Error)
ข้อผิดพลำดทำงตรรกะ (Logical Error)
Introduction
10
1.7

จัดทำเอกสำรและบำรุ งรักษำโปรแกรม
กำรจัดทำเอกสำร(Documentation)





คำบรรยำยลักษณะของโปรแกรม
คำอธิบำยพร้อมผังงำนหรื อรหัสเทียม
รำยกำรโปรแกรม(Program Listing)
ผลกำรทดสอบโปรแกรม
กำรบำรุ งรักษำโปรแกรม

(Program Maintenance)
กำรแก้ไขข้อผิดพลำดที่พบระหว่ำงกำรทดสอบหรื อระหว่ำงกำรใช้งำน ซึ่ งอำจเป็ น
กำรเปลี่ยนข้อมูลที่ตอ้ งกำรใช้ใหม่กำรปรับปรุ งข้อมูลให้ทนั เหตุกำรณ์อยูเ่ สมอ กำร
ปรับเปลี่ยนโครงสร้ำงบนหน้ำจอ เป็ นต้น
Introduction
11
2.
1.
2.
3.
4.
5.
6.
ปฏิบัติการพืน้ ฐาน 6 ประการ
ของคอมพิวเตอร์
กำรรับข้อมูล
กำรแสดงผล
กำรคำนวณ
กำรกำหนดค่ำตัวแปร
กำรเปรี ยบเทียบและเลือกกำรทำงำน
กำรทำงำนซ้ ำ ๆ
Introduction
12
2.1
กำรรับข้อมูล
รับค่ำข้อมูลจำกอุปกรณ์นำเข้ำข้อมูล เช่น คียบ์ อร์ ด, Scanner หรื อกำรอ่ำนข้อมูล
จำกแฟ้ มข้อมูล มำเก็บไว้ในตัวแปร
 รับค่ำ <ตัวแปร>
 อ่ำนค่ำ <ตัวแปร>
 read <ตัวแปร>
 get <ตัวแปร>
 scan <ตัวแปร>
 input <ตัวแปร>
Introduction
13
2.2
กำรแสดงผล
แสดงผลลัพธ์ผำ่ นอุปกรณ์แสดงผล เช่น จอภำพ, เครื่ องพิมพ์ หรื อ กำรบันทึก
ข้อมูลลงแฟ้ มข้อมูล
 แสดง <ข้อมูล>
 บันทึก <ข้อมูล>
 show <ข้อมูล>
 print <ข้อมูล>
 display <ข้อมูล>
 write <ข้อมูล>
Introduction
14
2.3
กำรคำนวณ
กำรคำนวณสูตรคณิ ตศำสตร์
<ตัวแปร> = สมกำรคณิ ตศำสตร์
 ให้ <ตัวแปร> = สมกำรคณิ ตศำสตร์
 คำนวณ <ตัวแปร> = สมกำรคณิ ตศำสตร์
 compute <ตัวแปร> = สมกำรคณิ ตศำสตร์
 calculate <ตัวแปร> = สมกำรคณิ ตศำสตร์
 Let <ตัวแปร> = สมกำรคณิ ตศำสตร์

Introduction
15
2.4
กำรกำหนดค่ำตัวแปร
กำหนดให้ตวั แปรมีค่ำต่ำง ๆ ตำมที่ตอ้ งกำร
 กำหนดให้ <ตัวแปร> = ค่ำ (หรื อใช้เครื่ องหมำย  แทน =)
 Let <ตัวแปร> = ค่ำ
 Set <ตัวแปร> = ค่ำ
 initialize <ตัวแปร> = ค่ำ
Introduction
16
2.5
กำรเปรี ยบเทียบและเลือกกำรทำงำน
ถ้ำ <เงื่อนไข>
กิจกรรม
...
ถ้ำไม่ใช่
กิจกรรม
...
if <เงื่อนไข> then
กิจกรรม
...
else
กิจกรรม
...
[end if]
Introduction
17
2.6
กำรทำงำนซ้ ำ ๆ
ทำซ้ ำ [จนกระทัง่ /ขณะที่] <เงื่อนไข>
กิจกรรม
...
[วนซ้ ำ]
do while <เงื่อนไข>
กิจกรรม
...
ทำซ้ ำ ตั้งแต่ <ตัวแปร> = เริ่ ม ถึง สิ้ นสุ ด
กิจกรรม
...
[วนซ้ ำ]
For <ตัวแปร> = เริ่ ม ถึง สิ้ นสุ ด
กิจกรรม
...
loop
Introduction
18
แบบฝึ กหัดท้ ายบทที่ 1
11.
จำกอัลกอริ ทึมต่อไปนี้ ต้องกำรหำผลรวมสะสมของค่ำ sum ในจำนวน 100
รอบ อยำกทรำบว่ำ อัลกอริ ทึมที่ให้มำนี้ผดิ ตรงจุดใด
sum  0
i  0
repeat
add i to sum
add 1 to i
until i>=100
Introduction
19
แบบฝึ กหัดท้ ายบทที่ 1
12.
จงแปลงซูโดโค้ดต่อไปนี้ให้เป็ นโครงสร้ำงควบคุมแบบ Repeat
z  0
x  1
dowhile x < 6
z  z + x
x  x + 1
enddo
Introduction
20
แบบฝึ กหัดท้ ายบทที่ 1
จงวิเครำะห์อลั กอริ ทึมต่อไปนี้วำ่ มีจุดที่ผดิ อย่ำงไร
i  1
sum  0
dowhile i > 0
sum  sum + 1
i  i + 1
enddo
13.
Introduction
21
3.



การวัดประสิ ทธิภาพของ
อัลกอริทึม
เวลำที่ใช้ประมวลผล
จำนวนชุดคำสัง่ ที่ถูกทำงำน
Big O
Introduction
22
เวลำที่ใช้ประมวลผล


จับเวลำที่ใช้ในกำรปัญหำดัวยอัลกอริ ทึมนั้น ๆ
ขึ้นอยูก่ บั spec ของเครื่ องคอมพิวเตอร์ และ compiler
Introduction
23
จำนวนชุดคำสัง่ ที่ถูกทำงำน

ลูปเชิงเส้น (Linear Loop)
for i = 1 To n
Statement
จะได้ f(n) = n
for i = 1 To n Step 2
Statement
จะได้ f(n) = n/2
Introduction
24
จำนวนชุดคำสัง่ ที่ถูกทำงำน (ต่อ)

ลูปลอกำริ ทึม (Logarithmic Loop)
for i = 1 To n Step i * 2
Statement
for i = n To 1 Step i / 2
Statement
จะได้ f(n) = log2 n
Introduction
25
จำนวนชุดคำสัง่ ที่ถูกทำงำน (ต่อ)

ลูปแบบซ้อน (Nested Loop)
for i = 1 To n
for j = 1 To n Step j * 2
Statement
จะได้ f(n) = n log2 n
for i = 1 To n
for j = 1 To n
Statement
จะได้ f(n) = n2
Introduction
26
Big O








O (ค่ำคงที่)
O (log n)
O (n)
O (n log n)
O (nk) โดยที่ k < n
O (kn) โดยที่ k < n
O (n!)
O (nn)
Introduction
27
ตัวอย่ำง
1. set sum to zero
2. set i to zero
3. dowhile i < n
3.1 add 1 to i
3.2 add score i to sum
4. Enddo
5. Compute mean = sum / n
จงคำนวณหำจำนวนคำสั่งที่ถกู execute และ Big O
Introduction
28
โครงสร้ างข้ อมูล



รู ปแบบกำรจัดเก็บข้อมูลในหน่วยควำมจำ
มีกำรกำหนดควำมสัมพันธ์ของข้อมูล
มีกำรกำหนดขั้นตอนวิธีกำรที่ใช้ในกำรจัดกำร
Introduction
29
ประเภทของโครงสร ้างข ้อมูล


้
โครงสร ้างข ้อมูลแบบเป็ นเสนตรง(linear
data
structure) ได ้แก่โครงสร ้างข ้อมูลแบบ อาร์เรย์ สตริง
สแตค และ คิว
้
โครงสร ้างข ้อมูลแบบไม่เป็ นเสนตรง(non-linear
data
structure) ได ้แก่ โครงสร ้างข ้อมูลแบบต ้นไม ้ และ
กราฟ
Introduction
30