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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
เรื่อง การแก้ไขปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
Advertisements

ครั้งที่ 9 Function(ต่อ).
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
การเสนอโครงการวิทยานิพนธ์
Chapter 8 : Logic Modeling & Data Modeling
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
การทำงานแบบเลือกทำ (Selection)
การรับค่าและแสดงผล.
บทที่ ๖ หลักการแก้ปัญหาด้วยคอมพิวเตอร์
การใช้งานโปรแกรม Excel เบื้องต้น
การประยุกต์สมการเชิงเส้นตัวแปรเดียว
ผังงานโปรแกรม (Program Flowchart)
การบันทึกรายการปรับปรุง
หน่วยที่ 1 ระบบคอมพิวเตอร์
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
วิชา การออกแบบและพัฒนาซอฟต์แวร์
บทที่ 1. พื้นฐานความรู้ทั่วไป
การจำลองความคิด
Use Case Diagram.
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
ARRAY ข้อมูลชนิดอาร์เรย์
SCC : Suthida Chaichomchuen
PROCEDURE <<โปรแกรมย่อย>>
SCC : Suthida Chaichomchuen
คำสั่งแบบมีเงื่อนไข IF Statement
ตัวอย่างการวิเคราะห์งาน
โปรแกรม Microsoft Access
การเขียนโปรแกรมภาษาซี
ผังงาน (Flowchart) มหาวิทยาลัยเนชั่น หลักการภาษาชุดคำสั่ง
โครงสร้างข้อมูลแบบคิว
ตัวอย่างการวิเคราะห์งาน และ การเขียนผังงานและซูโดโค้ด
สัปดาห์ที่ 7 การแปลงลาปลาซ The Laplace Transform.
การเขียนผังงาน จุดประสงค์ 1.อธิบายความของผังงานได้
บทที่ 3 การวิเคราะห์ Analysis.
Flow Chart INT1103 Computer Programming
โครงสร้างข้อมูลคืออะไร ?
การออกแบบโปรแกรม ขั้นตอนการแก้ปัญหา การนิยามปัญหา (Problem definition)
โจทย์วิเคราะห์ปัญหาที่ 1
2.3.1 รหัสเทียม (Pseudo code)
โปรแกรม Microsoft Access
การออกแบบโครงสร้าง (Structured Design)
การเขียนโปรแกรมเบื้องต้น
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
หลักการเขียนโปรแกรม ( )
หลักการเขียนโปรแกรม ( )
ค21201 คณิตศาสตร์เพิ่มเติม 1
การเขียนโปรแกรมเบื้องต้น
หลักการเขียนโปรแกรม ( )
สรุปสถิติ ค่ากลาง ค่าเฉลี่ยเลขคณิต เรียงข้อมูล ตำแหน่งกลาง มัธยฐาน
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
บทที่ 7 การวิเคราะห์งานและการโปรแกรม แบบมีโครงสร้าง
ผังงาน (FLOW CHART) ตัวอย่างผังงาน
หลักการและวิธีการแก้ปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
คำอธิบายรายวิชา 1.คำอธิบายรายวิชา (คัดจากเอกสารหลักสูตร)
ผังงาน (FLOW CHART) ผังงาน (Flow Chart)เป็นรูปแบบของการจำลองความคิดแบบหนึ่ง รูปแบบของการจำลองความคิดเพื่อความสะดวกในการทำงาน แบ่ง เป็น ๒ แบบ คือ ๑) แบบข้อความ.
หลักการเขียนโปรแกรม ( )
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การแก้ปัญหาโปรแกรม (Flowchart)
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
หลักการเขียนโปรแกรม ( )
เด็กหญิง นัฐนรี โยธาตรี เลขที่ 13 ม.3/1
หลักการเขียนโปรแกรมเบื้องต้น
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
การเขียนผังงาน ผังงาน (Flowchart)
โครงสร้างข้อมูลแบบ สแตก (stack)
การแบ่งแยกและเอาชนะ Divide & Conquer
การแบ่งแยกและเอาชนะ Divide & Conquer
บทที่ 5 โปรแกรมย่อย.
ผังงานโปรแกรม (Program Flowchart)
ใบสำเนางานนำเสนอ:

การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design SCC : Suthida Chaichomchuen std@kmitnb.ac.th

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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