Transcript Document

Chap 9
ขั้นตอนการเขียนโปรแกรมคอมพิวเตอร์
คอมพิวเตอร์ จะไม่สามารถทางานได้ถา้ ไม่มีชุดคาสั่งที่ป้อนเข้า
สู่ เครื่ อง ซึ่ งคอมพิวเตอร์ จะทางานตามทีละคาสั่งโดยลาดับ ดังนั้นการ
เขี ย นโปรแกรมคอมพิ ว เตอร์ จึ ง เป็ นส่ ว นที่ ส าคัญ มาก ซึ่ งจะท าให้
คอมพิวเตอร์ทางานได้อย่างมีประสิ ทธิภาพ ถ้าเราเขียนโปรแกรมอย่างมี
ระบบและหลักเกณฑ์ จะทาให้ดียงิ่ ขึ้น ซึ่งสามารถสรุ ปขั้นตอนการเขียน
โปรแกรมออกเป็ น 7 ขั้นตอนดังนี้
- ขันตอนการวิ
้
เคราะห์ปัญหา(Analysis the problem)
- ขันตอนการออกแบบโปรแกรม(Design
้
Program)
- ขันตอนการเขี
้
ยนโปรแกรมโดยใช้ ภาษาใดภาษาหนึง่ (Codeing)
- ขันตอนการตรวจสอบข้
้
อผิดพลาดโปรแกรม(Testing and Debug)
- ขันตอนการทดสอบและความถู
้
กต้ อง(Testing and Validating)
- ขันตอนการท
้
าเอกสารประกอบโปรแกรม(Documentation)
- ขันตอนการบ
้
ารุงรักษาโปรแกรม(Program Maintenance)
ขัน้ ตอนการวิเคราะห์ ปัญหา(Analysis the problem)
ประกอบด้ วย 3 องค์ประกอบได้ แก่
1. การระบุข้อมูลเข้ า (input specification) คือข้ อมูลที่จะป้อนเข้ าสู่
คอมพิวเตอร์ พร้ อมกับโปรแกรมเพื่ อให้ โ ปรแกรมทาการประมวลผลและ
ผลลัพธ์ออกมา
2. การระบุข้อมูลออก(Output Specification) จะพิจารณาว่างานที่ทามี
เป้ าหมายหรื อ วัตถุป ระสงค์ อ ะไร ต้ อ งการผลลัพธ์ ที่ มี รูป ร่ า งหน้ าตาเป็ น
อย่างไร
3. กาหนดวิธีการประมวลผล(Process Specification) ต้ องรู้ วิธีการ
ประมวลผลเพื่อให้ ผลลัพธ์ตามต้ องการ
ขัน้ ตอนการออกแบบระบบ(Design a Program)
ขันตอนการออกแบบจะใช้
้
เครื่ องมือมาช่วยในการออกแบบ(แต่ยงั ไม่ได้
เขี ย นโปรแกรมจริ ง) แต่ จ ะช่ ว ยให้ การเขี ย นโปรแกรมง่ า ยขึ น้ จะ
เปรี ยบเสมือนการสร้ างแปลงบ้ านลงกระดาษไว้ ในขัน้ ตอนการออกแบบ
สามารถนาเครื่ องมือมาใช้ ได้ ซึง่ เครื่ องมือที่นิยมใช้ คือ
- อัลกอริทมึ หรื อ ขันตอนวิ
้
ธี (Algorithm)
- ผังงาน (Flowchart)
- รหัสจาลอง(Pseudo-Code)
- แผนภูมิโครงสร้ าง(Structure Chart)
อัลกอริ ทึม หรื อ ขั้นตอนวิธีคืออะไร?
 คือขั้นตอนวิธีการเขียนโปรแกรมหรื อการแก้ปัญหาต่างๆ หรื อการทางาน
ต่างๆ เช่น ขั้นตอนวิธีในการ แปรงฟัน ตัดผม และ อื่นๆ
 ขั้นตอนวิธี คือ กลุ่มคาสัง่ ที่มีข้นั ตอนที่ชดั เจน เพื่อประมวลผลข้อมูลที่
รับเข้ามา และ สร้างข้อมูลออกอย่างถูกต้อง
 ขั้นตอนวิธีเขียนเป็ นภาษาอังกฤษ หรื อ ภาษาไทย
 เพื่อให้การเขียนขั้นตอนวิธีมีประสิ ทธิภาพ
ควรมีหลักดังนี้
 ต้ องมีความแจ่มชัดไม่กากวม
 ให้ ผลลัพธ์ที่ถกู ต้ องทุกกรณี
 มีการสิ ้นสุดของการทางาน
ผังงานโปรแกรม (Program Flowchart)
ผังงานโปรแกรม คือ
เป็ นเครื่ องมื ออี ก แบบหนึ่ งที่ ใ ช้รูปภาพ แสดงถึ งขั้น ตอนในการเขี ยน
โปรแกรม หรื อขั้นตอนในการแก้ปัญหาทีละขั้น และมีเส้นที่แสดงทิศ
ทางการไหลของข้อ มู ล ตั้ง แต่ จุ ด เริ่ มต้น จนกระทั้ง จุ ด สิ้ น สุ ด ของ
โปรแกรมหรื อผลลัพธ์ของโปรแกรม
ผังงานโปรแกรม(ต่อ)
สัญลักษณ์เหล่านี้สามารถทาการประกอบเป็ นโปรแกรมโครงสร้างได้ 3
แบบ คือ
1. แบบเรี ยงลาดับ (sequence)
2. แบบทางเลือก (selection)
3. แบบวนซ้ า (repetition)
กฎการเขียนผังโปรแกรม
1. ต้องใช้สญ
ั ลักษณ์ตรงกับความหมาย
2. เขียนคาอธิบายในสัญลักษณ์แสดงถึงหน้าที่
3. ใช้เส้นลูกศรแสดงการไหลของข้อมูล
4. ผังงานโปรแกรมมองจากบนลงล่าง
รหัสจาลอง( Pseudo code)
รหัสจาลอง คือ
จะมีการใช้ขอ้ ความที่เป็ นภาษาอังกฤษหรื อภาษาไทยก็ได้ ในการแสดง
ขั้นตอนการแก้ปัญหา แต่จะมีการใช้คาเฉพาะ(reserve words)
ที่มีอยู่ในภาษาโปรแกรมมาช่ วยเขียน โครงสร้ างของรหัสจาลองจึ งมี
ส่ วนคล้ายกับการเขียนโปรแกรมมาก ดังนั้นรหัสจาลองจึงเป็ นเครื่ องมือ
อีกแบบทิ่ใช้กนั ในการออกแบบโปรแกรม
แผนภูมิและโครงสร้าง(Sturcture Charts)
แผนภูมิและโครงสร้าง คือ
จะเป็ นการแบ่งงานใหญ่ออกเป็ นโมดูลย่อยๆ ซึ่ งเรี ยกว่าการออกแบบ
จากบนลงล่าง(Top-Down Design) และแต่ละโมดูลย่อยก็ยงั
สามารถแตกออกได้อีกจนถึงระดับที่ล่างสุ ด ที่สามารถเขียนโปรแกรม
ได้อย่างง่าย
การเขียนโปรแกรมด้ วยภาษาคอมพิวเตอร์ (Coding)
ขัน้ ตอนนี จ้ ะเป็ นการเขี ย นโปรแกรมด้ ว ยภาษาคอมพิ ว เตอร์ เ ช่ น ภาษา C,
Pascal, Java และอื่นๆ หลักการเขียนโปรแกรมที่ดีควรจะต้ องเริ่ มตังแต่
้ การ
วิเคราะห์ปัญหาให้ ได้ ก่อน แล้ วทาการออกแบบโปรแกรมจึงจะเริ่มเขียนโปรแกรม
การตรวจสอบข้ อผิดพลาดของโปรแกรม
(Testing and Debugging)
หลัง จากที่ ท าการเขี ย นโปรแกรมเสร็ จ สิ น้ แล้ ว โปรแกรมนัน้ จะต้ อ งได้ รั บการ
ตรวจสอบก่ อ นว่ า มี ข้ อ ผิ ด พลาดในโปรแกรมหรื อ ไม่ โดยทั่ว ไปมี วิ ธี ที่ ต รวจ สอบ
ข้ อผิดพลาดของโปรแกรม 2 ขันตอนคื
้
อ
 ตรวจสอบด้ วยตนเอง(Self Checking) เป็ นการทดลองเขียนโปรแกรมลงบน
กระดาษ แล้ วใส่ตรวจสอบการทางานของโปรแกรมทีละขันด้
้ วยตนเองว่า
โปรแกรมมีการทางานที่ถกู ต้ องตามผลลัพธ์ที่ต้องการหรื อไม่
 ตรวจสอบด้ วยการแปลโปรแกรม หลังจากเขียนโปรแกรมเสร็จ ก็จะป้อนโปรแกรม
เข้ าสู่เครื่ องเพื่ อทาการแปลโปรแกรม โดยจะมีการเรี ยกใช้ Compilier หรื อ
interpreter ทาการแปลโปรแกรมให้ เป็ นภาษา Machine Language ในการแปล
นี จ้ ะเป็ นการตรวจสอบความผิ ด พลาดของโปรแกรมด้ วยและโดยทั่ ว ไปมี
ข้ อ ผิ ด พลาดดัง นี ้ 1. ข้ อ ผิ ด พลาดด้ า นไวยาการของภาษา 2. ข้ อ ผิ ด พลาดใน
ระหว่างการรั น ของโปรแกรม 3. ข้ อผิด พลาดที่ เกิ ดจากการตี ความหมายของ
ปั ญหาผิดไป
การทดสอบความถูกต้ องของโปรแกรม
(Testing and Validating)
บางครัง้ โปรแกรมอาจผ่านการแปล โดยไม่มีข้อผิดพลาดใดๆ ออกมา แต่เมื่ อนา
โปรแกรมไปใช้ งานปรากฏว่าได้ ผลลัพธ์ ที่ไม่ถกู ต้ อง ดังนันควรจะต้
้
องมีขนตอนการ
ั้
ทดสอบความถูกต้ องของโปรแกรมอีกทีด้วยเช่น





การใส่ข้อมูลที่ถกู ต้ อง
การใช้ ขอบเขตและความถูกต้ องของข้ อมูล
การใช้ ความสมเหตุสมผล
ข้ อมูลที่เป็ นตัวเลขและตัวอักษร
ข้ อมูลเป็ นไปตามข้ อกาหนด
การทาเอกสารประกอบโปรแกรม
(Documentation)
การทาเอกสารประกอบโปรแกรม คือการอธิ บายรายละเอียดของโปรแกรมว่า
จุดประสงค์ของโปรแกรมคืออะไร สามารถทางานอะไรได้ บ้าง และมีขัน้ ตอนการ
ทางานของโปรแกรมเป็ นอย่างไร
โปรแกรมเมอร์ ที่ดีควรจะมีการทาเอกสารประกอบโปรแกรม ทุกขันตอนของการ
้
พัฒนาโปรแกรม เอกสารนี ้จะเป็ นประโยชน์มากต่อหน่วยงานและตัวเอง โดยทั่ วไป
เอกสารประกอบโปรแกรมจะมีอยูด่ ้ วยกัน 2 แบบ
 เอกสารประกอบโปรแกรมสาหรับผู้ใช้
 เอกสารประกอบโปรแกรมสาหรับผู้เขียนโปรแกรม
การบารุ งรักษาโปรแกรม
(Maintenance)
เมื่อโปรแกรมเสร็จสมบูรณ์และนาไปใช้ งานจริ ง ช่วงแรกผู้ใช้ อาจจะไม่ค้ นุ เคยก็
อาจทาให้ เกิดปั ญหาต่างๆ ดังนัน้ จึงต้ องมีผ้ ูคอยดูแลควบคุมและตรวจสอบการ
ทางาน การบารุ ง รั ก ษาจึงเป็ นขัน้ ตอนที่ ผ้ ูเ ขี ยนโปรแกรมต้ อ งคอยเฝ้ าดูแ ละหา
ข้ อผิดพลาดของโปรแกรมในระหว่างที่ผ้ ใู ช้ ใช้ งานโปรแกรม
หรื อบางครัง้ การใช้ งานโปรแกรมไปนานๆ ผู้ใช้ อาจต้ องการเปลี่ยนแปลงงาน
เดิ ม เพื่ อ ให้ เ หมาะสม นัก เขี ย นโปรแกรมต้ อ งคอยปรั บ ปรุ ง แก้ ไ ขให้ เ หมาะสม
ตลอดเวลา
คุณสมบัตขิ องนักเขียนโปรแกรมที่ดี





รักและชอบในการเขียนโปรแกรม
มีความคิดริเริ่มสร้ างสรรค์และใฝ่ รู้
มีความอดทน
ต้ องรู้จกั ทางานเป็ นทีม
ต้ องหมัน่ ทาเอกสารประกอบการเขียนโปรแกรม
Pseudo Code
 รหัสเทียม
คือ รหัสจาลองที่ใช้เป็ นตัวแทนของอัลกอริ ทึม โดยมีถ ้อยคาหรื อ
ประโยคค าสั่ ง ที่ เ ขี ย นอยู่ ใ นรู ปแบบของภาษาอัง กฤษที่ ไ ม่ ข้ ึ นกั บ
ภาษาคอมพิวเตอร์ใดภาษาหนึ่ง
คือ การแสดงขั้นตอนวิธีการที่ใช้ภาษาเขียนที่เข้าใจได้ง่าย อาจใช้
ภาษาไทยหรื อภาษาอังกฤษก็ได้ข้ ึนอยู่กบั ความสะดวกของผูเ้ ขียนและ
กิ จ กรรมที่ จ ะน าเสนอ มัก ใช้รู ปแบบคล้ายประโยคภาษาอัง กฤษเพื่ อ
อธิบายรายละเอียดของอัลกอริ ทึม
หลักการเขียน Pseudo Code
 ถ้อยคาที่ใช้เขียน ใช้ภาษาอังกฤษที่เข้าใจง่าย
 ในหนึ่งบรรทัด ให้มีเพียงหนึ่งประโยคคาสัง่
 ใช้ยอ่ หน้าให้เป็ นประโยชน์ ในการแสดงการควบคุมอย่างเป็ นสัดส่วน
 แต่ละประโยคคาสัง่ ให้เขียนจากบนลงล่าง และมีทางออกทางเดียว
 กลุ่มของประโยคคาสัง่ อาจรวมเป็ นหมวดหมู่แล้วเรี ยกใช้เป็ นโมดูล
ต.ย. อัลกอริทึม : ต้ มมาม่ า 30 ถ้ วย
1. ซื้ อมาม่า 30 ซอง
2. 2. ต้มน้ า 7.5 ลิตรจนเดือด
3. 3. ทาซ้ า 30 ครั้ง
1. เตรี ยมถ้วยและฝาปิ ดถ้วย
2. ฉี กซองมาม่า แล้วเทลงถ้วยเปล่า
3. ฉี กเครื่ องปรุ ง แล้วเทลงถ้วยเดิม
4. เทน้ าร้อนลงถ้วยแล้วปิ ดฝา
4. เรี ยกเพื่อนทั้ง 30 คน
5. เชิญทุกคนเปิ ด 30 ฝา แล้วรับประทาน
ต.ย. อัลกอริทึม : รับค่ า 3 ครั้งแล้ วหาผลรวม
1. set sum
2. input value1
3. input value2
4. input value3
5. calculate sum = value1 + value2 + value3
6. write sum
Flowchart
สัญลักษณ์
ความหมาย
สัญลักษณ์
ความหมาย
เริ่มต้ นและ
สิ ้นสุดโปรแกรม
พิมพ์ผลลัพธ์ออก
ทางกระดาษ
รับข้ อมูลาทาง
คีย์บอร์ ด
ประมวลผลทัว่ ๆ ไป
อ่านเขียนข้ อมูล
ลงดิกส์
ตัดสินใจเลือก
Flowchart
อ่านเขียน
ข้ อมูลจากเทป
แม่เหล็ก
รอยต่อของเส้ น
เชื่อม
อ่านเขียน
ข้ อมูลลง
ฐานข้ อมูล
ไปหน้ าถัดไป
แสดงผลลัพธ์
ออกทาง
หน้ าจอ
เส้ นเชื่อม
ตัวอย่ าง ต้ องการเขียนโปรแกรมบวกเลขสองตัว
แนวคิ ดที ่ 1
•ถ้ าโจทย์ไม่ได้ ระบุวา่ ให้ ค่าตัวเลขมาจากไหน ให้
ถือว่ามาจากคีย์บอร์ ดเป็ นหลัก ดังนันท
้ าการคือรับ
ตัวเลขสองตัว
•รับค่าแล้ วเก็บไว้ ที่ไหน โดยปกติแล้ วจะเก็บไว้ ใน
ตัวแปร ดังนันทารสร้
้
างตัวแปรขึ ้นมาเพื่อเก็บค่า
โดยที่ตวั เลขตัวแรกไว้ ที่ตวั แปร A และตัวเลขตัวที่
สองไว้ ที่ตวั แปร B
•แล้ วจากนันก็
้ เอาเลขสองตัวมาบวกกันแล้ ว
แสดงผล
ขัน้ ตอนวิ ธี
1) รับตัวเลขตัวแรกเก็บไว้ ที่ A
2) รับตัวเลขตัวที่สองเก็บไว้ ที่ B
3) แสดงผลบวกของ A+B
Flow chart
Start
Input A,B
A+B
End
แนวคิ ดที ่ 2
•ถ้ าโจทย์ไม่ได้ ระบุว่าให้ ค่าตัวเลขมาจากไหน
ให้ ถือว่ามาจากคีย์บอร์ ดเป็ นหลัก ดังนันท
้ า
การคือรับตัวเลขสองตัว
•ทาการสร้ างตัวแปรขึ ้นมาเพื่อเก็บค่าจาก
คีย์บอร์ ด โดยที่ตวั เลขตัวแรกไว้ ที่ตวั แปร A
และตัวเลขตัวที่สองไว้ ที่ตวั แปร B
•นาตัวเลขทังสองตั
้
วบวกกันแล้ วเก็บผลรวมไว้
ที่ตวั แปร C
•แสดงค่าของ C
ขัน้ ตอนวิ ธี
1) รับตัวเลขตัวแรกเก็บไว้ ที่ A
2) รับตัวเลขตัวที่สองเก็บไว้ ที่ B
3) C = A+B
4) แสดงค่า C
Flowchart
Start
Input A,B
C=A+B
C
End
ตัวอย่ าง เขียนโปรแกรมสาหรับหาราคาของสินค้ า โดยผู้ใช้ ระบุราคาสินค้ า โปรแกรมจะแสดง
ราคาก่อนรวมภาษีและราคาหลังรวมภาษีแล้ ว
แนวคิ ด
•อัตราภาษีเท่าไหร่ ถ้ าโจทย์ไม่ระบุต้องเป็ นหน้ าที่ของผู้เขีน
โปรแกรมที่ต้องไปหาคาตอบมา หรื อออกแบบโปรแกรมให้ ผ้ ใู ช้
ระบุอตั ราภาษีด้วย ในที่นี ้สมมุติให้ อตั ราภาษีเป็ น 7% (ผู้ใช้ ไม่ต้อง
ระบุอตั ราภาษี )
•สังเกตจากโจทย์มีคาว่า “ผู้ใช้ ระบุราคา” ดังนันก็
้ ต้องมีตวั แปร
สาหรับรับคาสินค้ าจากผู้ใช้ ตังชื
้ ่อว่าตัวแปร A
•ให้ ตวั แปรที่ชื่อว่า VAT ใช้ เก็บผลลัพธ์จากการคานวณภาษี
•แสดงราคาก่อนรวมภาษี (ค่าของตัวแปร A) และราคาหลังรวม
ภาษี (A+VAT)
ขัน้ ตอนวิ ธี
1) รับค่าราคาสินค้ าเก็บไว้ ที่ตวั แปร A 2) VAT = 0.07 * A
3) แสดงค่าของ A
4) แสดงค่าของ A+VAT
ข้อสรุป
เราสามารถกาหนดเอาตัวแปรอีกตัวมารับผลบวกของ A+VAT ก็ได้ แต่
มันจะเยิ ้นเย้ อ จึงเลือกที่จะแสดงผลบวกไปเลย
Flowchart
Start
Input A
VAT = 0.07 x A
A
VAT+A
End
•ตัวอย่ าง เขียนโปรแกรมสาหรับหาเกรดเฉลี่ยรวมสองเทอม
แนวคิด
จะหาเกรดเฉลี่ยรวมสองเทอมได้ ต้องรู้อะไรบ้าง หน่วยกิตที่ลงเทอมหนึ่ง เกรดที่ได้เทอมหนึ่ง หน่วยกิตที่ลงเทอมสอง
เกรดที่ได้เทอมสอง ดังนั้นต้องรับค่ามาทั้งหมดสี่ ค่าโดยที่
Flowchart
รับค่าหน่วยกิตที่ลงเทอมหนึ่งเก็บไว้ที่ตวั แปร U1
รับค่าหน่วยกิตที่ลงเทอมสองเก็บไว้ที่ตวั แปร U2
Start
รับค่าเกรดเทอมหนึ่งเก็บไว้ที่ตวั แปร G1
รับค่าเกรดเทอมสองเก็บไว้ที่ตวั แปร G2
หลังจากคานวณเกรดเฉลี่ยแล้วเก็บผลลัพธ์ไว้ที่ตวั แปรชื่อ G แล้วแสดงค่าของ G ออกมา
Input U1,U2
ขัน้ ตอนวิธี
G1, G2
1) รับค่าหน่วยกิตที่ลงเทอมหนึ่งเก็บไว้ที่ตวั แปร U1
2) รับค่าหน่วยกิตที่ลงเทอมสองเก็บไว้ที่ตวั แปร U2
G = (G1xU1 + G2xU2)
3) รับค่าเกรดเทอมหนึ่งเก็บไว้ที่ตวั แปร G1
/ (U1+U2)
4) รับค่าเกรดเทอมสองเก็บไว้ที่ตวั แปร G2
5) G = (G1xU1 + G2xU2) / (U1+U2)
6) แสดงค่า G
ข้ อสรุ ป
G
บางปัญหาจะไม่บอกว่าต้องรับกี่ค่า ต้องทราบวิธีทาก่อนจึงจะทราบต้องรับค่ามากี่ค่า
End
ตัวอย่ าง เขียนโปรแกรมรับค่าตัวเลข ถ้ าเลขนันเป็
้ นเลขคูใ่ ห้ แสดงคาว่า
Good ถ้ าเป็ นเลขคี่ให้ แสดงคาว่า OK
Flowchart
แนวคิ ด
Start
•ต้ องรับค่าตัวเลขไว้ ที่ตวั แปรตัวหนึ่ง สมมุติ
ว่าเป็ นตัวแปร A
•จะทราบได้ อย่างไรว่าค่า A เป็ นคูห่ รื อคี่
Input A
•ถ้ า A หาร 2 แล้ วได้ เศษ 0 แสดงว่าเป็ นเลข
คู่ ถ้ า A หาร 2 แล้ วได้ เศษ 1 แสดงว่าเป็ นเลข
B = A mod 2
คี่ ดังนันจะต้
้ องมีตวั แปรเก็บเศษจากการหาร
สองสมมุติวา่ เป็ นตัวแปร B
B=0?
•ถ้ าเศษเป็ น 0 แสดงคาว่า Good ถ้ าเศษเป็ น
Yes
1 แสดงคาว่า OK
ขัน้ ตอนวิ ธี
Good
1) รับค่า A
2) B = A modulus 2
3) ถ้ า B=0 เป็ นจริ งแล้ ว แสดงคาว่า Good
End
4) ไม่อย่างงันก็
้ แสดงคาว่า OK
No
OK
ตัวอย่ าง เขียนโปรแกรมรับอายุ ถ้ าน้ อยกว่า 10 พิมพ์คาว่า Children ถ้ าน้ อยกว่า 20 ให้ พิมพ์คาว่า
Yong ถ้ ามากกว่านันให้
้ พิมพ์คาว่า Adult
แนวคิ ด
โปรแกรมนี ้ต้ องรับค่าอายุเข้ ามา สมมุติวา่ เก็บไว้ ที่ตวั แปร A แล้ วนาค่า A มาพิจารณาว่าน้ อยกว่า
10 หรื อเปล่า ถ้ าจริ งก็พิมพ์คาว่า Children เลยแต่ถ้าเป็ นอย่างอื่นก็ไปมาพิจารณาต่อว่า A น้ อยกว่า
20 หรื อเปล่า ถ้ าจริ งก็พิมพ์คาว่า Young ไม่อย่างงันแล้
้ วก็พิมพ์คาว่า Adult เลย
Flowchart
ขัน้ ตอนวิ ธี
Start
1) รับค่า A
2) ถ้ า A<10 เป็ นจริ งแล้ ว พิมพ์คาว่า Children
Input A
3) ไม่อย่างงันแล้
้ ว ถ้ า A < 20 พิมพ์คาว่า Young
4) ไม่อย่างงันแล้
้ ว พิมพ์คาว่า Adult
A < 10
ข้อสรุป
A < 20
เราสามารถนาเอา ถ้ า ซ้ อน ถ้ า ได้
No
Yes
Children
Yes
No
Young
Adult
End
Start
•ตัวอย่ าง โปรแกรมตัดเกรดตามเกณฑ์ดงั นี ้
คะแนนต่ากว่า 50 ได้ F
คะแนน 50 แต่ไม่ถึง 60 ได้ D
คะแนน 60 แต่ไม่ถึง 70 ได้ C
คะแนน 70 แต่ไม่ถึง 80 ได้ B
คะแนน 80 เป็ นต้ นไปได้ A
Input A
A < 50
No
A < 60
No
Yes
A < 70
Yes
No
Yes
A < 80
Yes
Grade = F
Grade = D
Grade = C
Grade
End
Grade = B
No
Grade = A
ตัวอย่ าง ต้ องการพิมพ์คาว่า NCC ร้ อยรอบ
แนวคิ ด
โจทย์ข้อนี ้ไม่ต้องป้อนค่าใด ๆ ให้ กบั โปรแกรมเลย ถ้ าเรี ยกโปรแกรมขึ ้น
มาแล้ ว โปรแกรมก็จะพิมพ์คาว่า NCC ร้ อยรอบแล้ วจบการทางานเลย
การแก้ ปัญหาในลักษณะนี ้ทาได้ สองวิธี
•วิธีแรกคือสัง่ ให้ พิมพ์คาว่า NCC ร้ อยรอบตรง ๆ ซึง่ เป็ นการ
แก้ ปัญหาที่ไม่คอ่ ยดีเท่าไหร่
•วิธีที่สองคือการวนทาซ ้า การทาซ ้ามีสององค์ประกอบคือ
1) ต้ องการทาอะไรซ ้า ในที่นี ้คือ พิมพ์คาว่า NCC
2) เงื่อนไขการทาซ ้า เมื่อไหร่ถึงจะหยุด ในที่นี ้คือ เมื่อครบร้ อยรอบ
Flowchart
Start
A=1
A > 100
No
NCC
Yes
A=A+1
End
ตัวอย่ าง ต้ องการพิมพ์เลข 1 ถึง 100 ออกทางหน้ าจอ
แนวคิ ด
ควรใช้ วิธีการทาซ ้าโดยที่
•เงื่อนไขในการทาซ ้าคือ จานวนรอบ สมมุติให้ ตวั แปร
นับรอบชื่อ A มีคา่ เริ่ มต้ นเป็ น 1 ถ้ า A > 100 ให้ หยุดทา
•สิ่งที่ต้องทาซ ้าคือ พิมพ์รอบที่ออกมาทางหน้ าจอ (หรื อ
พิมพ์ค่าของ A ออกมาทางหน้ าจอนัน่ เอง)
Flowchart
Start
A=1
A > 100
No
A
Yes
A=A+1
End
ตัวอย่ าง หาค่าผลมรวมหนึ่งถึงร้ อย
แนวคิ ด
ควรมีตัวแปรสะสมค่า ซึ่งจะเป็ นตัวแปรที่เ ก็บ
ผลรวมของ 1 ถึง 100 ตังชื
้ ่อว่า SUM มีค่าเริ่ มต้ นเป็ น 0
แล้ วใช้ การทาซ ้าดังนี ้
•เงื่อนไขในการทาซ ้าคือ จานวนรอบ สมมุติให้ ตวั
แปรนับรอบชื่อ A มีค่าเริ่ มต้ นเป็ น 1 ถ้ า A > 100
ให้ หยุดทา
•สิ่งที่ต้องทาซ ้าคือ การนาเอาค่าของ A ไปรวมไว้ ที่
ตัวสะสมค่า (ตัวแปร SUM) หลังเสร็จสิ ้นการทาซ ้า
ก็แสดงค่า SUM ออกมา
Flowchart
Start
SUM = 0
A=1
A > 100
No
SUM = SUM + A
A=A+1
SUM
End
Yes
Start
ตัวอย่ าง หาค่าผลรวมเลขคูห่ นึง่ ถึงร้ อย
แนวคิ ด
โจทย์นี ้คล้ ายตัวอย่างที่แล้ ว แต่ก่อนที่
จะสะสมค่าไว้ ที่ตวั แปร SUM ให้ พิจารณา
ก่อนด้ วยว่า A เป็ นเลขคูห่ รื อไม่
SUM = 0
A=1
A > 100
Yes
No
B = A mod 2
B=0?
NO
Yes
SUM = SUM + A
A=A+1
SUM
End
แบบฝึ กหัด
1) โปรแกรมแปลงคศ. เป็ น พศ.
2) โปรแกรมแปลงพศ. เป็ น คศ.
3) โปรแกรมแปลงค่าเงินบาทเป็ นดอลล่าร์ สหรัฐ
4) โปรแกรมแปลงค่าดอลล่าร์ สหรัฐเป็ นเงินบาท
5) โปแกรมแปลงนาทีเป็ นชัว่ โมงพร้ อมทั ้งระบุเศษนาที
6) โปรแกรมรับอักษรจากผู้ใช้ ถ้ าผู้ใช้ ป้อน F ให้ แสดงคาว่า Female ถ้ าผู้ใช้ ป้อน M ให้ แสะคาว่า Male ถ้ าเป็ นอย่างอื่น
ให้ แสดงคาว่า Unknown
7) โปรแกรมหาค่าเกรดเฉลี่ยรวมสามเทอม (ปี 1 เทอมหนึ่ง ปี 1 เทอมสอง ปี 1 summer) ถ้ าเกรดต่ากว่า 1.5 พิมพ์คาว่า
Oh My God! ถ้ ามากกว่านั ้นให้ พิมพ์คาว่า Oh Yes!
8) โปรแกรมหาว่าปี นี ้เดือนกุมภาพันธ์มีกี่วjk โดยมีหลักการวัน ถ้ าเลขคศ. หารสี่ลงตัวแสดงว่าปี นั ้นเดือนกุมภาพันธ์มี 29
วัน ถ้ าไม่ลงตัวแสดงว่ามี 28 วัน
9) โปรแกรมรับชื่อเดือนแล้ วบอกว่าเดือนนั ้นมีกี่วนั
10) โปรแกรมรับอายุแล้ วพิจาณา
·
ถ้ าน้ อยกว่า 5 พิมพ์คาว่า Baby
·
ถ้ าน้ อยกว่า 10 พิมพ์คาว่า Child
·
ถ้ าน้ อยกว่า 20 พิมพ์คาว่า Guy
·
ถ้ ามากกว่า 20 พิมพ์คาว่า Old man
11) โปรแกรมพิมพ์เลข 2003 ถึง 2546
12) โปรแกรมพิมพ์เลขในช่วงที่ผ้ ใู ช้ ระบุ
13) โปรแกรมหาผลรวมตั ้งแต่ 35 ถึง 83