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