1 / 86

อัลกอริธึมและการวิเคราะห์ปัญหา

อัลกอริธึมและการวิเคราะห์ปัญหา. ครูเตชะภู พงษ์แจ่ม. นิยามอัลกอริธึม. อัลกอริธึม (Algorithm) หมายถึง ลำดับขั้นตอนวิธีในการทำงานของโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งถ้าปฏิบัติตามขั้นตอนอย่างถูกต้องแล้ว จะต้องสามารถช่วยแก้ปัญหาหรือประมวลผลตามความต้องการได้สำเร็จ

Download Presentation

อัลกอริธึมและการวิเคราะห์ปัญหา

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. อัลกอริธึมและการวิเคราะห์ปัญหาอัลกอริธึมและการวิเคราะห์ปัญหา ครูเตชะภู พงษ์แจ่ม

  2. นิยามอัลกอริธึม • อัลกอริธึม (Algorithm) หมายถึง ลำดับขั้นตอนวิธีในการทำงานของโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งถ้าปฏิบัติตามขั้นตอนอย่างถูกต้องแล้ว จะต้องสามารถช่วยแก้ปัญหาหรือประมวลผลตามความต้องการได้สำเร็จ • ในการเขียนอธิบายอัลกอริธึมนั้น เราสามารถคิดอัลกอริธึมเพื่อมาแก้ปัญหาได้หลายแบบ

  3. ตัวอย่าง การต้มไข่ไก่ • วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก • Algorithm 1 • ต้มน้ำให้เดือด • ใส่ไข่ • รอ 10 นาที • ดับไฟ / ปิดเตา • ปอกไข่ Algorithm 2 - ต้มน้ำให้เดือด - ใส่ไข่ - รอ 5 นาที - ดับไฟ / ปิดเตา

  4. Algotithm 1 Vs Algotithm 2 • ผลที่ได้เหมือนกันคือ ไข่ต้ม • ผลลัพธ์อัลกอริธึม 1 สามารถทานได้เลย ส่วนอัลกอริธึม 2 ต้องปอกก่อนทาน • สรุปคือ เราได้ผลลัพธ์ตามที่โจทย์ต้องการคือ ไข่ต้ม

  5. Algotithm 3 การต้มไข่ไก่ทาน • วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก • Algorithm • ต้มน้ำให้เดือด • รอ 10 นาที • ดับไฟ / ปิดเตา • ปอกไข่ What’s up?

  6. Algotithm 3 การต้มไข่ไก่ทาน • วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก • Algorithm • ต้มน้ำให้เดือด • รอ 10 นาที • ดับไฟ / ปิดเตา • ปอกไข่ Algorithm นี้จะไม่ได้ไข่ต้ม เพราะ....

  7. การวิเคราะห์ปัญหา • กระบวนการทำงานของคอมพิวเตอร์ Input Process Output • องค์ประกอบของงาน • Input , Process , Output การพิจารณา • ขั้นตอนการทำงานเป็นการนำเข้า ป้อนเข้าระบบ ถือเป็น Input • ขั้นตอนเกี่ยวกับการกระทำ(กริยา) ถือเป็น Process • ขั้นตอนการนำข้อมูลออกจากระบบ แสดงผล ถือเป็น Output

  8. Example • เราลองนำขั้นตอนการต้มไข่มาวิเคราะห์ • ต้มน้ำให้เดือด => การกระทำ(Process) • ใส่ไข่ => การป้อนข้อมูล(Input) • รอ 10 นาที => การกระทำ(Process) • ดับไฟ => การกระทำ(Process) • ปอกไข่ => การกระทำ(Process) • ผลลัพธ์ => ไข่ต้มสุก (Output)

  9. การวิเคราะห์ปัญหา ข้อมูลที่นำเข้าสู่ระบบคอมพิวเตอร์ประกอบด้วยอะไรบ้าง • การวิเคราะห์ปัญหา วิเคราะห์ผลลัพธ์ (Output) วิเคราะห์ Input Process เขียนขั้นตอนการแก้ปัญหา - กำหนดวัตถุประสงค์ของงาน - รูปแบบของผลลัพธ์

  10. การวิเคราะห์ปัญหา ตัวอย่างต้องการคำนวณหาพื้นที่ของสามเหลี่ยมรูปหนึ่ง 1. วิเคราะห์ผลลัพธ์ พื้นที่สามเหลี่ยม กำหนดวัตถุประสงค์ การคำนวณหาพื้นที่สามเหลี่ยม รูปแบบผลลัพธ์ ความยาวฐาน = ……………… ความสูง = ……………… พื้นที่สามเหลี่ยม = …………… 2.กำหนดข้อมูลเข้า1. ความยาวฐาน 2. ความสูง

  11. การวิเคราะห์ปัญหา 3. ขั้นตอนการประมวลผล • ป้อนความยาวฐาน • ป้อนความสูง • คำนวณพื้นที่สามเหลี่ยม จากสูตร พื้นที่สามเหลี่ยม = ความยาวฐาน ความสูง

  12. ตัวอย่าง อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลข 1. เปิดเครื่องคิดเลข 2. พิมพ์ยอดเงิน 3. กดเครื่องหมาย (+) 4. กลับไปที่ข้อ 2 ทำจนกระทั่งราคาทั้งหมดถูกพิมพ์เข้าเครื่องและกด เครื่องหมาย = 5. เขียนยอดรวมราคา 6. ปิดเครื่องคิดเลข

  13. การวิเคราะห์อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลขการวิเคราะห์อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลข • 1. วิเคราะห์ผลลัพธ์ : ยอดรวมราคา • 2. กำหนดข้อมูลเข้า : ยอดเงิน • 3. ขั้นตอนการประมวลผล • 3.1 พิมพ์ยอดเงิน • 3.2 กดเครื่องหมาย + • 3.3 วนการทำงาน • 3.4 กดเครื่องหมาย = • 3.5 คำนวณยอดรวมราคา

  14. ตัวอย่าง 4 • การโยนเหรียญเสี่ยงทายเพื่อตัดสินใจว่าจะกินขนมปังหรือผลไม้ โดยมีเงื่อนไขว่า ถ้าออกหัวกินขนมปัง ถ้าออกก้อยกินผลไม้ • วัตถุดิบ : ผลการโยน ผลลัพธ์ : กินอะไร(ผลไม้/ขนมปัง) • โยนเหรียญ => การกระทำ • ดูเหรียญ => รับข้อมูล • ถ้าออกหัว => ไปขั้นตอนที่ 5 • ถ้าออกก้อย => ไปขั้นตอนที่ 6 • กินขนมปัง => ไปขั้นตอนที่ 7 • กินผลไม้ => ไปขั้นตอนที่ 7 • หยุด

  15. การออกแบบอัลกอริธึม • ในการเขียนอธิบายอัลกอริธึมนั้น เราสามารถคิดอัลกอริธึมเพื่อมาแก้ปัญหาได้หลายแบบ ซึ่งในแต่ละแบบเครื่องคอมพิวเตอร์ก็จะใช้ในหน่วยความจำ และเวลาในการประมวลผลไม่เท่ากัน ดังนั้น การจะเปรียบเทียบว่าโปรแกรมคอมพิวเตอร์ใครเก่งกว่ากันนั้นจึงใช้การเปรียบเทียบและประสิทธิภาพของอัลกอริธึมนั่นเอง • อัลกอริธึมของใครใช้เวลาในการประมวลผลและหน่วยความจำน้อยกว่า ถือว่าอัลกอริธึมนั้นฉลาดกว่า

  16. ประสิทธิภาพของอัลกอริธึม • จะพิจารณาอยู่ 2 ส่วนหลักๆ ดังนี้ • หน่วยความจำ(memory)ที่จะต้องใช้ในการประมวลผล • เวลา(time)ที่ใช้ในการประมวลผล

  17. อัลกอริธึมต้มมาม่า

  18. อัลกอริธึมที่ดีจะประกอบด้วยคุณสมบัติต่างๆดังนี้อัลกอริธึมที่ดีจะประกอบด้วยคุณสมบัติต่างๆดังนี้ • อัลกอริธึมที่ดีต้องมีความถูกต้อง (correctness) • อัลกอริธึมที่ดีต้องง่ายต่อการอ่าน(readability) • อัลกอริธึมที่ดีต้องสามารถปรับปรุงได้ง่ายต่ออนาคต(ease of modification) • อัลกอริธึมที่ดีสามารถนำกลับมาใช้ใหม่ได้(Reusability) • อัลกอริธึมที่ดีต้องมีประสิทธิภาพ (efficiency)

  19. การควบคุมการทำงานของโปรแกรม (Program Control Flow) • การควบคุมการทำงานของโปรแกรมเป็นเครื่องมือที่ผู้พัฒนาโปรแกรมใช้ในการแสดงลำดับการทำงานของโปรแกรมหรือใช้อธิบายอัลกอริธึม ให้เป็นระบบและง่ายต่อความเข้าใจ โดยโครงสร้างอาจจะอยู่ในรูปแบบดังนี้คือ 1. ผังงาน (Flowchart) ซึ่งเป็น Flow Diagram ชนิดหนึ่งสำหรับใช้อธิบายขั้นตอนการทำงานของโปรแกรมในลักษณะรูปภาพ 2. ชุดคำสั่งเทียม (Pseudocode) จะมีสัญลักษณ์คล้ายกับภาษาอังกฤษ ก้ำกึ่งระหว่างภาษาอังกฤษกับภาษาคอมพิวเตอร์ใช้ในการอธิบายลักษณะโครงสร้างข้อมูล และการทำงานของอัลกอริธึมที่เราเขียนขึ้น

  20. Flow Chart และ Pseudo Code Algorithm Summation • Sum = 0 • Input (value1) • Input (value2) • Input (value3) • Sum = value1 + value2 + value3 • Output (sum) End . การเขียนอัลกอริธึมการบวกเลข 3 ตัว ในรูปแบบ Pseudo

  21. สัญลักษณ์ในผังงาน (Flow Chart)

  22. สัญลักษณ์ในผังงาน (Flow Chart)

  23. สัญลักษณ์ในผังงาน

  24. จงเขียนผังงานแสดงการเขียนและส่งจดหมายจงเขียนผังงานแสดงการเขียนและส่งจดหมาย ตัวอย่างการเขียนผังงาน

  25. ตัวอย่างผังงานการถอนเงินจาก ATM

  26. ตัวอย่างผังงานการทานยาตัวอย่างผังงานการทานยา

  27. วิธีการเขียนผังงานที่ดีวิธีการเขียนผังงานที่ดี • 1. ใช้สัญลักษณ์ตามที่กำหนดไว้ • 2. ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง หรือจากซ้ายไปขวา • 3. คำอธิบายในภาพสัญลักษณ์ผังงานควรสั้นกะทัดรัด และเข้าใจง่าย • 4. ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า - ออก • 5. ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน • 6. ผังงานควรมีการทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรมจริง

  28. โครงสร้างพื้นฐานที่ใช้ในการเขียนโปรแกรมโครงสร้างพื้นฐานที่ใช้ในการเขียนโปรแกรม 1. โครงสร้างแบบลำดับ (Sequence Structure) 2. โครงสร้างแบบเลือก (Selection Structure) 3. โครงสร้างแบบทำซ้ำหรือวนรอบ (Repetition or Looping Structure)

  29. 1. โครงสร้างแบบลำดับ (Sequence Structure) • ทำงานตามลำดับ • ทำงานจากบนลงล่าง (จุดเริ่มต้นถึงสิ้นสุด) • มีจุดเริ่มต้นจุดเดียว – จุดสิ้นสุดจุดเดียว • อาจเรียกใช้โมดูลอื่นได้

  30. START คำสั่ง 1 คำสั่ง 2 คำสั่ง 3 STOP ผังงานโปรแกรมโครงสร้างแบบลำดับ

  31. START ราคา = 0 รับจำนวนสินค้า และราคา ราคา = จำนวนชิ้น*ราคา พิมพ์ราคา STOP ตัวอย่าง โปรแกรมรับข้อมูลจำนวนสินค้าและราคาสินค้า

  32. ตัวอย่าง โปรแกรมรับข้อมูลจำนวนสินค้าและราคาสินค้า • อัลกอริธึม • เริ่มต้นทำงาน • กำหนดค่า จำนวนเงินที่ชำระ(Price) เท่ากับศูนย์ • รับข้อมูล จำนวนสินค้า (Amt) และ ราคา (Cost) • คำนวณจำนวนเงินที่ชำระ จาก Price = Amt x Cost • แสดงผล จำนวนที่ต้องชำระ • จบการทำงาน รหัสเทียม (Pseudo Code) Begin Price = 0 Read Amt, Cost Price = Amt x Cost Write Price End

  33. แบบฝึกหัดโปรแกรมคำนวณพื้นที่สามเหลี่ยมแบบฝึกหัดโปรแกรมคำนวณพื้นที่สามเหลี่ยม การแสดงผล : พื้นที่สามเหลี่ยม การรับข้อมูล : ความสูงและฐาน การประมวลผล : คำนวณพื้นที่สามเหลี่ยม ½ x สูง x ฐาน จงเขียน Algorithm, Pseudo code, Flowchart

  34. ตัวอย่าง โปรแกรมคำนวณพื้นที่สามเหลี่ยม • อัลกอริธึม • เริ่มต้นทำงาน • กำหนดค่า พื้นที่สามเหลี่ยม(Area)= 0 • รับข้อมูล ความสูง(Height) และ ฐาน (Base) • คำนวณพื้นที่สามเหลี่ยม จากArea = Height x Base • แสดงผล พื้นที่สามเหลี่ยม • จบการทำงาน รหัสเทียม (Pseudo Code) Begin End

  35. ตัวอย่าง โปรแกรมคำนวณพื้นที่สามเหลี่ยม Flowchart

  36. แบบฝึกหัดโปรแกรมคำนวณพื้นที่วงกลมแบบฝึกหัดโปรแกรมคำนวณพื้นที่วงกลม การแสดงผล : พื้นที่วงกลม การรับข้อมูล : การประมวลผล : จงเขียน Algorithm, Pseudo code, Flowchart

  37. 2. โครงสร้างแบบเลือก (Selection Structure) • มีเงื่อนไขที่ต้องตัดสินใจเลือกการทำงาน • ผลลัพธ์ของเงื่อนไขคือ จริง หรือ เท็จ เท่านั้น

  38. ใช่ เงื่อนไข งานที่ต้องทำ ไม่ใช่ งานต่อไป 2.1 Flowchart แบบหนึ่งทางเลือก • แบบ 1 ทางเลือก หรือ โครงสร้าง IF….THEN • เป็นโครงสร้างที่ทดสอบเงื่อนไข แล้วเลือกว่าจะทำหรือไม่ทำ ก่อนที่จะไปทำงานอื่นต่อไป

  39. 2.1 Flowchart แบบหนึ่งทางเลือก - แบบ 1 ทางเลือก หรือ โครงสร้าง IF….THENจะทำงานเมื่อเงื่อนไขเป็นจริง เงื่อนไข เท็จ/FALSE จริง/TRUE คำสั่ง A รหัสเทียม IF …………… THEN …(คำสั่งA)…

  40. 2.1 Flowchart แบบหนึ่งทางเลือก • ตัวอย่าง โครงสร้าง IF….THEN • แม่ถามว่าหิวข้าวหรือไม่ ถ้าหิวก็ให้กิน ถ้าไม่หิวไม่ต้องกิน แล้วจึง เดินงานไปโรงเรียน (งานต่อไป) ใช่ หิวใช่ไหม? งานกินข้าว ไม่ใช่ งานเดินทางมาเรียน

  41. ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ เงื่อนไข - ถ้าได้คะแนนสอบ 50 คะแนนขึ้นไป ให้พิมพ์ข้อความความ ‘You pass’- ถ้าได้คะแนนต่ำกว่า 50 คะแนน ให้จบการทำงาน

  42. Score>=50 Write ‘You pass’ STOP ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ START Read Score Y N

  43. ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ • อัลกอริธึม • เริ่มต้นทำงาน • รับค่า คะแนนสอบ(Score) • ถ้าคะแนนสอบตั้งแต่ 50 คะแนนขึ้นไป ให้พิมพ์ทางหน้าจอว่า ‘You pass’ • จบการทำงาน รหัสเทียม (Pseudo Code) Begin Read Score IF Score >= 50 THEN Write ‘You pass’ End

  44. ตัวอย่างรับค่าอายุนักศึกษา ถ้าอายุนักศึกษาน้อยกว่า 20 ปี ให้แสดงคำว่า “you are so young” จงเขียน Algorithm, Pseudo code, Flowchart

  45. 2.2 Flowchart แบบสองทางเลือก แบบ 2 ทางเลือก หรือ โครงสร้าง IF…THEN...ELSE ใช่ ไม่ใช่ เงื่อนไข งาน 2 งาน 1

  46. เงื่อนไข 2.2 Flowchart แบบสองทางเลือก แบบ 2 ทางเลือก หรือ โครงสร้าง IF…THEN...ELSE เท็จ/FALSE จริง/TRUE คำสั่ง B คำสั่ง A รหัสเทียม IF …………….. THEN …..(คำสั่งB)….. ELSE ..…(คำสั่งA)...… END IF

  47. ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ เงื่อนไข • ถ้าได้คะแนนสอบ 50 คะแนนขึ้นไป ให้พิมพ์ข้อความว่า ‘Pass’- ถ้าได้คะแนนต่ำกว่า 50 คะแนน ให้พิมพ์ข้อความว่า ‘Fail’ • ตัวแปร Grade เก็บค่าผลลัพธ์

  48. Read Score Score>=50 ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ START Y Grade = ‘Pass’ N Grade = ‘Fail’ Write Grade STOP

  49. ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ รหัสเทียม (Pseudo Code) Begin Read Score IF Score >= 50 THEN Grade = ‘Pass’ ELSE Grade = ‘Fail’ END IF Write Grade End • อัลกอริธึม • เริ่มต้นทำงาน • รับค่า คะแนนสอบ (Score) • ถ้าคะแนนสอบตั้งแต่ 50 คะแนนขึ้นไป ให้ทำนิพจน์ Grade=‘Pass’ ถ้าน้อยกว่า 50 คะแนน ให้ทำนิพจน์ Grade=‘Fail’ • แสดงผล เกรด (Grade) • จบการทำงาน

  50. ตัวอย่างให้รับค่า A,B ถ้า A>B ให้หาค่าผลต่าง แต่ถ้าไม่ใช่ให้หาค่าผลรวม จงเขียน Algorithm, Pseudo code, Flowchart

More Related