1 / 30

การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design

การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design. SCC : Suthida Chaichomchuen std@kmitnb.ac.th. Structured Design. มักใช้ในงานที่มีความซับซ้อนมาก วัตถุประสงค์เพื่อลดความยาวของผังงาน หรือซูโดโค้ดที่มีความยาวมาก

juro
Download Presentation

การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design

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. การออกแบบโปรแกรมอย่างมีโครงสร้างStructured Design SCC : Suthida Chaichomchuen std@kmitnb.ac.th

  2. Structured Design • มักใช้ในงานที่มีความซับซ้อนมาก • วัตถุประสงค์เพื่อลดความยาวของผังงาน หรือซูโดโค้ดที่มีความยาวมาก • ใช้หลักการแบ่งงานออกเป็นส่วนหลัก ๆ จากนั้นจึงแบ่งส่วนหลักออกเป็นย่อย ๆ ลงไปอีกชั้นหนึ่ง

  3. Structured Design • งานย่อยในขั้นสุดท้ายที่ได้จะเรียกว่า ปัญหา ย่อย หรือมีชื่อทั่วไปคือ • งานย่อย (subtask) • ฟังก์ชั่น (function) • โมดูล (module)

  4. Top-Down Design • เป็นการออกแบบโปรแกรมแบบโครงสร้างชนิดหนึ่ง • ใช้หลักการของการแบ่งปัญหาออกเป็นส่วนหลัก ๆ แล้วจึงแยกออกเป็นโมดูลย่อย ๆ อีกครั้ง • มีขั้นตอนการออกแบบ 6 ขั้นตอน

  5. โปรแกรมหลัก SubA …………….. …………….. Call SubA …………….. …………….. …………….. …………….. Return การออกแบบเป็นโมดูล

  6. โปรแกรมหลัก SubX SubX1 …………….. …………….. Call subX …………….. …………….. Call subY …………….. …………….. Call subX1 Return …………….. …………….. Return SubY …………….. …………….. Return การออกแบบเป็นโมดูล

  7. Top-Down Design มีขั้นตอนการออกแบบ 6 ขั้นตอน 1. กำหนดปัญหา 2. แบ่งส่วนของงานออกเป็นงานย่อย 3. เขียนแผนภาพลำดับชั้น 4. กำหนดโมดูลหลักในรูปของซูโดโค้ด 5. พัฒนาซูโดโค้ดของทุกโมดูล 6. ตรวจสอบผลของอัลกอริทึมที่ได้

  8. 1. กำหนดปัญหา • โดยการแบ่งปัญหาออกเป็น 3 ส่วน • ส่วนการรับข้อมูล • ส่วนการประมวลผล • ส่วนการแสดงผลลัพธ์

  9. 2. แบ่งส่วนของงานออกเป็นงานย่อย • นำส่วนงานหลักแต่ละส่วนออกเป็นงานย่อย หรือที่เรียกว่า โมดูล • แต่ละโมดูลจะถูกกำหนดขึ้นมาเพื่อให้ทำงานเฉพาะอย่าง และถือเป็นส่วนหนึ่งของงานหลัก

  10. 3. เขียนแผนภาพลำดับชั้น • เขียนแผนภาพแบบลำดับชั้น (Hierarchy chart) เพื่อให้เห็นถึงโครงสร้างรวมของโปรแกรม • เพื่อแสดงถึงความสัมพันธ์ของโมดูลหลักกับโมดูลย่อย

  11. 4. กำหนดโมดูลหลักในรูปของซูโดโค้ด • กำหนดอัลกอริทึมของโมดูลหลักในรูปของซูโดโค้ด • บางครั้งอาจต้องมีการกำหนดค่าเริ่มต้นของตัวแปร หรืองานบางอย่างก่อนที่จะเข้าขั้นตอนการวนซ้ำ หรือหลังจากออกจากขั้นตอนการวนซ้ำ

  12. 5. พัฒนาซูโดโค้ดของทุกโมดูล • พัฒนาซูโดโค้ดของทุกโมดูลย่อยที่อยู่ในแผนภาพลำดับชั้น • การพัฒนาซูโดโค้ดจะเสร็จสิ้นลงได้ ถ้าเขียนซูโดโค้ดทุกโมดูลได้สำเร็จ

  13. 6. ตรวจสอบผลของอัลกอริทึมที่ได้ • กำหนดตัวอย่างชุดข้อมูล และนำไปแทนค่าตัวแปรในอัลกอริทึม เพื่อตรวจสอบความถูกต้องในระดับแรกก่อนที่จะพัฒนาเป็นโปรแกรมต่อไป

  14. ปัญหาพื้นที่วงกลม รับข้อมูล คำนวณพื้นที่ แสดงผล รัศมี รัศมี พื้นที่วงกลม พื้นที่=พาย*รัศมี โครงสร้างการแก้ปัญหาการหาพื้นที่วงกลม จงสร้างโปรแกรมคำนวณพื้นที่วงกลม โดยรับค่ารัศมีจากแป้นพิมพ์ และแสดงค่าพื้นที่ออกทางจอภาพ

  15. ข้อดีของ Top-Down Design • ทำให้การวิเคราะห์และทำความเข้าใจในปัญหาง่ายขึ้น • การปรับปรุงแก้ไขโปรแกรมทำได้ง่าย เพียงแก้ไขที่โมดูลเท่านั้น • ทดสอบวิธีแก้ปัญหาได้ง่าย

  16. ตัวอย่างที่ 1 • จงออกแบบอัลกอริทึมให้แสดงข้อความพร้อมที่จะรับอักษรสามตัว และเรียงลำดับอักษรสามตัวนั้นจากน้อยไปหามาก แล้วแสดงผลการเรียงลำดับบนจอภาพและรอรับอักษรชุดใหม่ ทำเช่นนี้เรื่อยไปจนกว่าชุดอักษรที่เข้ามามีค่าเป็น ‘xxx’ จึงเลิกการทำงาน

  17. วิธีทำ : กำหนดปัญหา • ส่วนที่ 1 รับตัวอักษร • ส่วนที่ 2 เรียงลำดับตัวอักษร • ส่วนที่ 3 แสดงผลการเรียงลำดับ

  18. วิธีทำ : แบ่งส่วนของงานออกเป็นงานย่อย • ส่วนที่ 1 รับตัวอักษร • รับตัวอักษรตัวที 1, 2 และ 3 • ตรวจสอบว่าแต่ละตัวเป็น ‘x’ หรือไม่ • วนรับจนจบเงื่อนไข

  19. แบ่งส่วนของงานออกเป็นงานย่อยแบ่งส่วนของงานออกเป็นงานย่อย • ส่วนที่ 2 เรียงลำดับตัวอักษร • เปรียบเทียบตัวที่ 1 กับตัวที่ 2 • เปรียบเทียบตัวที่ 2 กับตัวที่ 3 • เปรียบเทียบตัวที่ 1 กับตัวที่ 2 ซ้ำ • ส่วนที่ 3 แสดงผลการเรียงลำดับ • แสดงผลตัวอักษรที่ 1, 2 และ 3

  20. ปัญหาเรียงตัวอักษร รับตัวอักษร จัดเรียงจากน้อยไปมาก แสดงตัวอักษร เปรียบเทียบกับ ‘xxx’ จับคู่ตัวอักษรเปรียบเทียบ วิธีทำ : เขียนแผนภาพลำดับชั้น

  21. วิธีทำ : กำหนดโมดูลหลักในรูปของซูโดโค้ด • Begin • Call Input_Characters • Call Sort_Characters • Call Output_Characters • End

  22. วิธีทำ : พัฒนาซูโดโค้ดของทุกโมดูล • Call Input_Characters Read char1, char2, char3 While (char1<>‘x’) AND (char2<>‘x’) AND (char3<>‘x’) DO . . . ENDDO

  23. พัฒนาซูโดโค้ดของทุกโมดูลพัฒนาซูโดโค้ดของทุกโมดูล • Call Sort_Characters IF (char1>char2) THEN temp=char1 char1=char2 char2=temp ENDIF

  24. พัฒนาซูโดโค้ดของทุกโมดูลพัฒนาซูโดโค้ดของทุกโมดูล IF (char2>char3) THEN temp=char2 char2=char3 char3=temp ENDIF

  25. พัฒนาซูโดโค้ดของทุกโมดูลพัฒนาซูโดโค้ดของทุกโมดูล • Call Output_Characters Write char1, char2, char3

  26. วิธีทำ : ตรวจสอบผลของอัลกอริทึมที่ได้ • ป้อนชุดตัวอักษรเช่น ‘x’ ‘a’ ‘m’ • สังเกตว่าผลที่ได้คือ amx หรือไม่? • ป้อนชุดตัวอักษรเช่น ‘x’ ‘x’ ‘x’ • สังเกตว่าจบการทำงานหรือไม่?

  27. ตัวอย่างที่ 2 • จงออกแบบอัลกอริทึมสำหรับอ่านรหัสพนักงาน อัตราการจ่ายเงินเดือน จำนวนชั่วโมงการทำงานในหนึ่งสัปดาห์ แล้วคำนวณรายได้ของพนักงานคนนั้น เพื่อแสดงออกมาบนจอภาพตามเงื่อนไขที่กำหนด แล้วรอรับข้อมูลของพนักงานคนต่อไป จนกระทั่งหมดข้อมูล

  28. ตัวอย่างที่ 2 : เงื่อนไข 1 • พนักงานทุกคนต้องมีชั่วโมงการทำงานน้อยกว่าหรือเท่ากับ 60 ชั่วโมง • ถ้ามีจำนวนชั่วโมงการทำงานมากกว่า 60 ให้พิมพ์ข้อความ • ‘Hours worked exceeds limit of 60’

  29. ตัวอย่างที่ 2 : เงื่อนไข 2 • อัตราการจ่ายเงินมากที่สุดชั่วโมงละ 125 บาท • ถ้ามีอัตราการจ่ายเงินมากกว่า 125 บาทต่อชั่วโมง ให้พิมพ์ข้อความ • ‘Pay rate exceeds 125 baht’

  30. ตัวอย่างที่ 2 : เงื่อนไข 3 • ถ้ามีจำนวนชั่วโมงการทำงานมากกว่า 35 ชั่วโมง ส่วนที่เหลือคิดเป็น การทำงานล่วงเวลา • คำนวณอัตราการทำงานล่วงเวลาเป็น 1.5 เท่าของอัตราปกติ

More Related