[หปนี ]่วยที่ 3 การเขียน Algorithm TOP Eจzุฬy าลกั ษณ์ ถาไชยลา [ภเลาือคกววนั ิชทา่ี] คอมพิวเตอรธ์ ุรกิจ วิทยาลยั อาชีวศึกษามหาสารคาม
40 หน่วยที่ 3 การเขียนอัลกอริทึม หน่วยที่ 3 การเขยี นอลั กอริทมึ (Algorithm) สาระการเรียนรู้ 1. ความหมายของอลั กอริทมึ 2. จดุ ประสงคก์ ารเขยี นอลั กอริทมึ 3. รูปแบบการเขียนอลั กอริทมึ 4. เทคนิคการเขียนอลั กอริทมึ 5. ลกั ษณะการเขียนอลั กอริทึม จุดประสงค์การเรียนรู้ 1. อธิบายความหมายของอลั กอริทมึ ได้ 2. อธิบายข้นั ตอนการพฒั นาอลั กอริทมึ ได้ 3. รูว้ ธิ ีการกาหนดข้นั ตอนการจาลองความคดิ เป็นคาพดู ได้ 4. วเิ คราะห์โจทยป์ ัญหาเพอ่ื พฒั นาเป็นอลั กอริทมึ ได้ 5. เขยี นอลั กอริทมึ ได้ 6. มีความสนใจใฝ่ เรียนรู้ ต้งั ใจเรียน 7. มีวนิ ยั เขา้ เรียนทนั เวลา ปฏบิ ตั ิตามกฎระเบียบของวทิ ยาลยั ฯ 8. มีความรับผดิ ชอบงานทไี่ ดร้ ับมอบหมาย 9. มีความคดิ ริเริ่มสรา้ งสรรค์ มีความเช่ือมน่ั กลา้ ลองผดิ ลองถูก 10. มีความซื่อสตั ยต์ ่อตนเองและผอู้ ่ืน จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยท่ี 3 การเขียนอัลกอริทึม 41 ความหมายของ Algorithm อัลกอริทึม (Algorithm) หมายถึง วธิ ีการหรือกระบวนการทางานใดงานหน่ึงท่ีสามารถ แบง่ ข้นั ตอนออกเป็ นยอ่ ย ๆ ทแ่ี น่นอน ซ่ึงเมื่อทราบข้นั ตอนการทางานท่ีแน่นนอนแลว้ ก็จะนา Algorithm ท่ไี ดน้ ้นั มาวาดเป็น Flowchart จากน้นั จงึ แปลง Flowchart เป็นภาษาระดบั สูงท่ี คอมพวิ เตอร์เขา้ ใจ ข้นั ตอนในการพฒั นาลาดบั ข้นั ตอนวธิ ีการแกป้ ัญหา นบั วา่ เป็ นข้นั ตอนท่ีสาคญั อีกข้นั ตอน หน่ึง เพราะเป็นข้นั ตอนท่นี าวธิ ีการแกป้ ัญหาทีไ่ ดท้ าการทดลองหาวธิ ีการแกป้ ัญหาในส่วนของการ ทดลองแกป้ ัญหาดว้ ยตนเอง (Hand Example) มาทาการเรียบเรียงลาดบั ข้นั ตอนการทางานของ วธิ ีการแกป้ ัญหา ต้งั แตข่ ้นั ตอนแรกจนถึงข้นั ตอนสุดทา้ ย วา่ มีลาดบั ข้นั ตอนการทางานอยา่ งไรบา้ ง เพอ่ื ที่จะนาไปสง่ั การใหเ้ ครื่องคอมพวิ เตอร์ทาการแกไ้ ขปัญหาดว้ ยวธิ ีการน้ี คาวา่ Algorithm ในทางคณิตศาสตร์จะหมายถึงข้นั ตอนหรือวธิ ีการคานวณ สาหรบั ในการ เขียนโปรแกรมคอมพวิ เตอร์ Algorithm จะหมายถึงวธิ ีการท่ีไดแ้ บง่ ออกเป็นข้นั ตอนยอ่ ยๆ ทีม่ ีการ ทางานแน่นอน หรือการอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะของขอ้ ความ ต้งั แต่ตน้ จนจบ วา่ มีลาดบั ข้นั ตอนการทางานอยา่ งไรบา้ ง Algorithm มาจากช่ือของนกั คณิตศาสตร์ชาวเปอร์เซีย Abu Ja’ far Muhammad ibm al-Khwarizmi ผเู้ ขยี นหนงั สือเก่ียวกบั เรื่องของจานวนของชาวฮินดู และอาหรบั “Aldorithmi de numero Indorum” (ภาษาลาตนิ ) ซ่ึงแปลวา่ “Al-Khwarizmi on the Hindu Art of Reckoning” (ภาษาองั กฤษ) เป็นผเู้ ร่ิมใชเ้ ลขศนู ยใ์ นระบบทศนิยม จุดประสงค์การเขียน Algorithm อลั กอริทึมหรือข้นั ตอนวธิ ีการแกป้ ัญหา เป็ นการจดั ลาดบั ความคิดเป็ นข้นั ตอนต่างๆ เพอื่ แกไ้ ขปัญหาในข้นั ตอนการเขยี นโปรแกรมทส่ี อดคลอ้ งกรรมวธิ ีแกป้ ัญหาทกี่ าหนดไว้ การเขียน อลั กอริทึมจึงเป็นการแสดงลาดบั การทางานตามคุณสมบตั ิดา้ นการประมวลผลของคอมพวิ เตอร์ ที่ พร้อมจะนาไปแปลงเป็นลาดบั คาสงั่ ใหค้ อมพวิ เตอร์ทางาน การเขียนโปรแกรมคอมพวิ เตอร์ดว้ ย ภาษาท่ีเหมาะสม เพอื่ สงั่ ใหค้ อมพวิ เตอร์ทางานตามอลั กอริทมึ ทกี่ าหนดไว้ และการเขียนอลั กอริทมึ ออกมาใหต้ รวจสอบความถูกตอ้ งไดค้ รบถว้ นข้นึ จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
42 หน่วยท่ี 3 การเขียนอลั กอริทึม รูปแบบการเขยี นข้นั ตอนวธิ ีแก้ปัญหา (Algorithm) ในส่วนของการพฒั นาลาดบั ข้นั ตอนวธิ ีการแกป้ ัญหา (Algorithm Development) อาจ เขยี นลาดบั ข้นั ตอนการทางานได้ 2 วธิ ี คอื การอธิบายข้นั ตอนการทางานอยา่ งคร่าว ๆ และการ อธิบายข้นั ตอนการทางานอยา่ งละเอียด การอธิบายข้นั ตอนการทางานอย่างคร่าว ๆหรืออย่างหยาบ (Decomposition) คือ การเขยี นข้นั ตอนการทางานท้งั หมดโดยไมต่ อ้ งละเอียดมากนกั และเขียนข้นั ตอนการทางาน เป็นขอ้ ๆ เร่ิมต้งั แต่ข้นั ตอนแรกจนถึงข้นั ตอนสุดทา้ ยที่จะส่งใหเ้ คร่ืองคอมพวิ เตอร์ทาการแกป้ ัญหา จะตอ้ งทาลาดบั ข้นั ตอนใดบา้ ง ตวั อยา่ งเช่น การคานวณหาอตั ราผอ่ นชาระรายเดือนของสินคา้ รายการหน่ึง สามารถเรียบเรียงเป็นการทางานอยา่ งหยาบได้ ดงั น้ี 1. เริ่มตน้ 2. รบั ค่าของราคาสินคา้ 3. รับค่าของอตั ราดอกเบ้ียรายปี 4. รับค่าของจานวนเดือนทีต่ อ้ งการผอ่ นชาระ 5. คานวณหาคา่ ของจานวนเงินทต่ี อ้ งชาระรายเดือน 6. แสดงคา่ ของจานวนเงนิ ทีผ่ อ่ นชาระรายเดือน 7. จบการทางาน ในการเขียนอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะของขอ้ ความน้นั จะเร่ิมตน้ ขอ้ แรกดว้ ยคาวา่ “เริ่มตน้ ” หรือ “เริ่มตน้ การทางาน” ถดั จากน้นั เป็ นลาดบั ข้นั ตอนการทางานทีใ่ ช้ ในการแกป้ ัญหา และจบดว้ ยข้นั ตอนสุดทา้ ย จะใชข้ อ้ ความวา่ “จบการทางาน” การอธิบายข้นั ตอนการทางานอย่างละเอยี ด (Refinement) คือ การนาข้นั ตอน การทางานอยา่ งคร่าว ๆ มาพจิ ารณาเพม่ิ เติมขอ้ มูลบางอยา่ งที่ยงั ไม่เรียบร้อย แต่ละข้นั ตอนทอ่ี ธิบาย ในส่วนของการอธิบายข้นั ตอนการทางานอยา่ งหยาบน้นั มีความละเอียดพอท่ีจะนาไปสง่ั งานให้ เคร่ืองคอมพวิ เตอร์ทางานแลว้ หรือยงั ถา้ ยงั ไม่ละเอียดตอ้ งเขียนขยายความใหล้ ะเอียดยง่ิ ข้ึนและ สมบูรณ์มากทส่ี ุด หรือแยกการทางานออกเป็นขอ้ ยอ่ ยเพมิ่ เตมิ อยา่ งเช่น ในการคานวณหาคา่ ขอ้ มูล ใดบางอยา่ ง จะคานวณดว้ ยวธิ ีการใด จากตวั อยา่ งในส่วนของการอธิบายข้นั ตอนการทางานอยา่ ง หยาบ (Decomposition) เรื่องการหาอตั ราการผอ่ นชาระรายเดือนของสินคา้ รายการหน่ึง เมื่อ พจิ ารณาการทางานในแตล่ ะขอ้ จะเห็นไดว้ า่ มีข้นั ตอนการทางานอยขู่ ้นั ตอนหน่ึงทไ่ี ม่ละเอียด ก็คอื จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยท่ี 3 การเขียนอัลกอริทึม 43 ข้นั ตอนที่ 5 การคานวณหาคา่ ของจานวนเงินทตี่ อ้ งการชาระรายเดือน ยงั ไม่ไดบ้ อกวา่ คานวณดว้ ย วธิ ีการใด ดงั น้นั จงึ ตอ้ งทาการอธิบายเพม่ิ เตมิ ในส่วนของข้นั ตอนในการคานวณหาค่าของจานวน เงินทตี่ อ้ งชาระรายเดือน โดยวธิ ีการคานวณน้นั ไดท้ าในส่วนของการทดลองแกป้ ัญหาดว้ ยตนเอง (Hand Example) สามารถเขยี นอธิบายข้นั ตอนการทางานอยา่ งละเอียดของการแกป้ ัญหาไดด้ งั น้ี 1. เร่ิมตน้ 2. รับค่าของราคาสินคา้ 3. รับค่าของอตั ราดอกเบ้ยี รายปี 4. รับค่าของจานวนเดือนทต่ี อ้ งการผอ่ นชาระ 5. คานวณหาดอกเบ้ีย จากสูตร ดอกเบ้ีย ราคาสินคา้ x อตั ราดอกเบ้ีย x (จานวนเดือน/12) 6. คานวณหาจานวนเงินท่ตี อ้ งชาระรายเดือน จากสูตร เงินผอ่ นรายเดือน (ราคาสินคา้ + ดอกเบ้ยี )/จานวนเดือน 7. แสดงค่าของจานวนเงินที่ผอ่ นชาระรายเดือน 8. จบการทางาน จากการอธิบายข้นั ตอนการทางานในข้นั ตอนที่ 5 และ 6 จะเห็นวา่ ในการคานวณ จะไม่ใช้ เคร่ืองหมายเทา่ กบั (=) จะใชเ้ คร่ืองหมายลูกศรช้ีทิศทาง ( ) แทน ส่วนเคร่ืองหมายเท่ากบั น้นั จะใชใ้ นกรณีทีท่ าการเปรียบเทียบค่าเทา่ น้นั เช่นเดียวกบั การคานวณคา่ กเ็ ช่นกนั อยา่ งชาน ตอ้ งการ กาหนดคา่ ให้ X มีค่าเท่ากบั 100 จะเขยี นคาอธิบายไดว้ า่ X 100 หลงั จากทาการพฒั นาใหเ้ ป็นการอธิบายข้นั ตอนการทางานอยา่ งละเอียด (Refinement) เสร็จเรียบร้อย จะเห็นวา่ ลาดบั ข้นั ตอนการทางานต้งั แตข่ ้นั ตอนแรกจนถึงข้นั ตอนสุดทา้ ย ตอ้ งทา ข้นั ตอนใดบา้ ง ละเอียดมากยง่ิ ข้ึน จานวนขอ้ ของลาดบั ข้นั ตอนการทางานไม่จาเป็ นตอ้ งเทา่ กบั ใน ส่วนของการอธิบายลาดบั ข้นั ตอนการทางานอยา่ งหยาบ ในการแกป้ ัญหาท่ไี ม่มีความซบั ซอ้ นมากนกั ส่วนของการอธิบายข้นั ตอนการทางานอยา่ ง หยาบ (Decomposition) อาจจะสามารถอธิบายลาดบั ข้นั ตอนการทางานไดล้ ะเอียดพออยแู่ ลว้ ก็ สามารถนาในส่วนของการอธิบายข้นั ตอนการทางานอยา่ งหยาบ มาใชเ้ ป็ นส่วนของการอธิบาย ข้นั ตอนการทางานอยา่ งละเอียด การพฒั นาลาดบั ข้นั ตอนการทางานจากผงั งาน ใหแ้ บง่ ข้นั ตอนการทางานท้งั หมดออกเป็ น ขอ้ ๆตามลาดบั และตามจานวนของข้นั ตอนการทางานท้งั หมด และการเขยี นตอ้ งไม่ซบั ซอ้ น เขา้ ใจ ง่าย และตอ้ งเขยี นใหถ้ ูกตอ้ งเสมอ เพราะถา้ เขยี นไม่ถกู ตอ้ งแลว้ กการพฒั นาไปเป็ นคาสงั่ เทียม (Pseudo Code) ก็จะผดิ พลาด และการเขียนโปรแกรมก็จะผดิ ตามดว้ ย จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
44 หน่วยท่ี 3 การเขียนอลั กอริทึม เทคนคิ การเขยี น Algorithm อัลกอริทึม เป็ นข้นั ตอนการบรรยายลาดบั ข้นั ตอนการแกป้ ัญหาระบบงานเป็ นรายขอ้ เพอ่ื แสดงใหเ้ ห็นถึงข้ึนตอน เพอ่ื แสดงใหเ้ ห็นถึงข้นั ตอนการทางานทีช่ ดั เจน และเพอื่ ใชใ้ นการทดสอบ การทางานของอลั กอริทึมดว้ ย ก่อนศึกษาวธิ ีการเขียนอลั กอริทมึ ควรมีความเขา้ ใจและคานึงถึง คุณสมบตั พิ ้นื ฐานของระบบคอมพวิ เตอร์ก่อน เพอ่ื นาไปประยกุ ตใ์ ชใ้ นข้นั ตอนการเขียนอลั กอริทึม ไดอ้ ยา่ งถูกตอ้ งตอ่ ไป คุณสมบตั ิการทางานระดบั พ้นื ฐานของคอมพวิ เตอร์ มีดงั น้ี 1. คุณสมบัตดิ ้านหน่วยความจา การเขยี นโปรแกรมคอมพวิ เตอร์ตอ้ งเกี่ยวขอ้ งกบั การใชง้ านพน้ื ทใ่ี นหน่วยความจาของ ระบบคอมพวิ เตอร์ ในภาษาคอมพวิ เตอร์ใหแ้ ทนสญั ลกั ษณ์กาหนดพน้ื ทหี่ น่วยความจา ดว้ ยการ กาหนดช่ือเป็ นตวั แปรใชง้ าน เพอ่ื ใชอ้ า้ งอิงถึงขอ้ มูลในหน่วยความจา เช่น N=1 หมายถึง กาหนดคา่ 1 เกบ็ ไวใ้ นตวั แปร N Ans = X2 + Y2 หมายถึง เอาคา่ X ยกกาลงั 2 บวกกบั ค่า Y ยกกาลงั สอง แลว้ เกบ็ ค่าผลลพั ธท์ ีไ่ ดไ้ วท้ ี่ตวั แปร Ans Total = Total + Salary หมายถึง การเอาค่าในตวั แปร Salary ไปบวกเขา้ กบั คา่ ในตวั แปร Total แลว้ เอาคา่ ผลลพั ธใ์ หม่ทไี่ ดไ้ ปเกบ็ ทต่ี วั แปร Total ซ่ึงค่าใหม่ที่ไดจ้ ะไปเกบ็ ทบั คา่ เดิมทม่ี ีอยู่ คาสงั่ ลกั ษณะน้ีใชใ้ น การสะสมค่า หรือเปลี่ยนแปลงค่าในตวั แปรเดิม 2. คุณสมบตั ดิ ้านการคานวณ คุณสมบตั ดิ า้ นการคานวณในระบบคอมพวิ เตอร์ ระดบั พ้นื ฐาน คือ สามารถดาเนินการบวก ลบ คูณ หาร แต่ลกั ษณะการพจิ ารณาเลือกประมวลผลงานคานวณของคอมพวิ เตอร์น้นั มีความ แตกตา่ งจากระบบการคานวณทว่ั ๆ ไป คอื คอมพวิ เตอร์คานวณโดยพจิ ารณาลาดบั ความสาคญั ของ สญั ลกั ษณ์เครื่องหมายการคานวณทป่ี รากฏในนิพจนก์ ารคานวณน้นั ๆ เป็ นสาคญั สญั ลกั ษณ์ทใี่ ช้ ในการคานวณและลาดบั การทางานของการคานวณ มีดงั น้ี จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยที่ 3 การเขียนอัลกอริทึม 45 สญั ลกั ษณ์ ความหมายในการทางาน ลาดบั การทางาน + บวก 4 - ลบ 4 * คูณ 3 / หาร 3 ยกกาลงั 2 ** หรือ ^ วงเลบ็ 1 () หากมีวงเลบ็ จะดาเนินการในวงเล็บก่อน และกรณีที่มีลาดบั ความสาคญั เท่ากนั จะคานวณ จากดา้ นซา้ ยไปขวา 3. คุณสมบัติด้านการเปรียบเทียบเชิงตรรกะ ความสามารถทส่ี าคญั ของคอมพวิ เตอร์คอื ความสามารถในการประมวลผลเชิงเปรียบเทียบ เป็นคุณสมบตั พิ ้นื ฐานอยา่ งหน่ึงของคอมพวิ เตอร์ โดยใชห้ ลกั การทางานของพชี คณิตพจิ ารณา เงอื่ นไขทใ่ี ชน้ ิพจนแ์ บบบูลลีนประกอบการเขยี นคาสงั่ เพอ่ื กาหนดทางเลือกการทางาน สาหรบั หา ขอ้ สรุปของเงื่อนไขทผ่ี เู้ ขยี นโปรแกรมกาหนดข้ึน เพอื่ ใหเ้ คร่ืองคอมพวิ เตอร์สามารถประมวลผล ตดั สินใจวา่ หากเง่ือนไขเป็นจริงใหด้ าเนินการคาสง่ั ใด และเงื่อนไขเป็นเทจ็ ใหด้ าเนินการคาสง่ั ใด การเขยี นคาสง่ั ท่มี ีลกั ษณะของเง่อื นไข เพอื่ ใหเ้ คร่ืองพจิ ารราเลือกทิศทางการทางานตาม เง่ือนไขทีก่ าหนดน้นั มีส่ิงทีเ่ กี่ยวขอ้ งกบั ผพู้ ฒั นาโปรแกรม คอื ตอ้ งศกึ ษาวธิ ีใชส้ ญั ลกั ษณ์ในการ เขยี นประโยคคาสงั่ แบบเงอ่ื นไขของแตล่ ะภาษาที่กาหนดใหเ้ ลือกใช้ โดยทว่ั ไปมีสญั ลกั ษณ์ของ พชี คณิตบลู ลีนใชง้ านดงั น้ี การใช้สัญลักษณ์เขียนประโยคคาสั่งเงอ่ื นไขแบบ 1 ประโยค มีสญั ลกั ษณ์ ดงั น้ี สญั ลกั ษณ์ ความหมายในการทางาน = เท่ากบั < นอ้ ยกวา่ > มากกวา่ <= >= นอ้ ยกวา่ หรือเทา่ กบั <> มากกวา่ หรือเทา่ กบั ไม่เทา่ กบั จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
46 หน่วยที่ 3 การเขียนอัลกอริทึม ตัวอย่างการเขยี นนพิ จน์ใช้เง่ือนไขแบบ 1 ประโยค ถา้ Salary > 10000 Tax = Salary * 0.05 มิฉะน้นั แลว้ Tax = Salary * 0.02 การใช้สัญลกั ษณ์เชื่อมประโยคคาส่ังเงอ่ื นไข การเขียนคาสง่ั งานกาหนดเงอื่ นไขการทางาน ในลกั ษณะเชื่อมประโยคเงอ่ื นไข 2 ประโยค ตอ้ งใชส้ ญั ลกั ษณ์คาสง่ั เพมิ่ เตมิ เพอื่ ใหไ้ ดข้ อ้ สรุปของการทางานวา่ เป็ นคา่ จริง (True) คือเป็ นคา่ เทจ็ (False) ดงั น้ี ใหผ้ ลลพั ธก์ ารเปรียบเทียบในประโยคเงือ่ นไขที่ 1 เป็นสญั ลกั ษณ์ X ใหผ้ ลลพั ธก์ ารเปรียบเทียบในประโยคเง่อื นไขท่ี 2 เป็นสญั ลกั ษณ์ Y เมื่อมีการทางานหาขอ้ สรุปต้งั แต่ 2 เงอ่ื นไขประกอบกนั โดยใชห้ ลกั การของพชี คณิต แบบบลู ลีน จะไดด้ งั น้ี X Y X AND Y X OR Y NOT X TTTTF TFFTF FTFTT FFFFT ตวั อย่างการเขยี นนิพจน์ใช้เงอื่ นไขแบบ 2 ประโยค ถา้ ( Salary > 10000) AND (Salary <= 50000) Tax = Salary * 0.05 มิฉะน้นั แลว้ Tax = Salary * 0.02 จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยที่ 3 การเขียนอัลกอริทึม 47 4. คุณสมบตั ดิ ้านการแสดงผลค่าข้อมลู เป็ นการอ่านคา่ ขอ้ มูลจากพ้นื ทห่ี น่วยความจาท่เี ขียนคาสง่ั นาไปเกบ็ ไว้ หรือจากการคานวณ ท่ีตอ้ งมีการนาคา่ ไปเก็บไว้ เพอื่ นามาแสดงผลลพั ธใ์ นรูปแบบและในตาแหน่งงานทตี่ อ้ งการ 5. คุณสมบัติการจดั ลาดบั การทางาน คอมพวิ เตอร์จะทางานทีละคาสงั่ ตามลาดบั จากบนลงล่าง หากเปรียบเทียบใน 1 บรรทดั คือ 1 คาสง่ั แลว้ คอมพวิ เตอร์จะทางานตามคาสง่ั ที่อยบู่ รรทดั บนสุดก่อน แลว้ จึงทางานตามคาสง่ั ที่ อยใู่ นลาดบั ตอ่ มา จนถึงคาสงั่ ในบรรทดั สุดทา้ ย ลกั ษณะการเขยี น Algorithm แนวทางการเขยี นอลั กอริทึมเป็นลกั ษณะการทางานข้นั พน้ื ฐาน มกั ปรากฏในระบบงาน โปรแกรมคอมพวิ เตอร์โดยทว่ั ไป มีแนวทางที่ใชบ้ อ่ ย ๆ ดงั น้ี การทางานลกั ษณะการนบั คา่ สะสมในหน่วยความจา การทางานลกั ษณะวนรอบการทางาน การทางานลกั ษณะหาค่ามากท่ีสุด และคา่ นอ้ ยทส่ี ุด ตัวอย่างการใช้ข้อความอธิบายแทนสัญลกั ษณ์ของผังงานแบบลาดับ สญั ลกั ษณ์ของผงั งาน (Flowchart) ใชข้ อ้ ความอธิบายแทน (Algorithm) เร่ิมตน้ START END จบการทางาน READ N รับค่า N N แสดงค่า N Area = H x L Area = H x L จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
48 หน่วยที่ 3 การเขียนอลั กอริทึม ตวั อยา่ งที่ 1 Algorithm ของการหาผลกาไรของสินคา้ ความตอ้ งการของผใู้ ช/้ ความคดิ ของโปรแกรมเมอร์คอื ตอ้ งการเขยี นโปรแกรมเพอ่ื คานวณหากาไรของสินคา้ ข้นั ตอนที่ 1 รับขอ้ มูลเลขท่ีสินคา้ ข้นั ตอนท่ี 2 คน้ หาขอ้ มลู ค่าตวั แปรต่าง ๆ ที่ตอ้ งใชจ้ ากระบบฐานขอ้ มูล เช่น ตน้ ทุนคงทข่ี องสินคา้ (Fix Cost) ,ตน้ ทนุ ผนั แปร (Variable Cost) ยอดขาย (Revenue) ,กาไร (Profit), จานวนสินคา้ ทข่ี ายได้ (Volume) ข้นั ตอนที่ 3 หาตน้ ทนุ ของสินคา้ จาก Cost = Fix Cost + Variable Cost ข้นั ตอนท่ี 4 หายอดขายสินคา้ จาก Revenue = Price * Volume ข้นั ตอนที่ 5 คานวณหากาไรจาก Profit = Revenue – Cost ข้นั ตอนที่ 6 แสดงผลกาไรใหผ้ ใู้ ชโ้ ปรแกรมทราบ ตวั อยา่ งที่ 2 จากผงั งานต่อไปน้ี ใหเ้ ขียนการการอธิบายข้นั ตอนการทางานแบบขอ้ ความ Start Read Base , Height AREAR = 0.5 x Base x Height Write AREA END จากผงั งานขา้ งตน้ สามารถพฒั นาใหเ้ ป็ นการอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะ ของขอ้ ความไดด้ งั น้ี 1. เร่ิมตน้ 2. รบั คา่ BASE , Height 3. AREA 0.5 x Base x Height 4. แสดงคา่ AREA 5. จบการทางาน จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยท่ี 3 การเขียนอัลกอริทึม 49 ตวั อย่างการใช้ข้อความอธิบายแทนสัญลกั ษณ์ของผังงานแบบเลือกทา Y Condition N Process 2 Process 1 การเขยี นผงั งานแบบเลือกทามีสญั ลกั ษณ์ทใ่ี ชใ้ นการตดั สินใจ ใชค้ าอธิบายวา่ “ถา้ ” และ ตามดว้ ยเงอ่ื นไข จากน้นั ตามดว้ ยคาอธิบายวา่ “แลว้ ” จากน้นั จะเป็ นลาดบั ข้นั ตอนการทางานที่ตอ้ ง ทาเป็นขอ้ ๆ ตามลาดบั เมื่อเขยี นคาอธิบายลาดบั ข้นั ตอนการทางานในกรณีท่ีเง่ือนไชเป็ นจริงจน หมดแลว้ ข้นั ตอนตอ่ ไปก็ตอ้ งเขียนอธิบายข้นั ตอนการทางานท้งั หมด ในกรณีทเ่ี งือ่ นไขเป็ นเทจ็ โดยจะใชค้ าวา่ “นอกจากน้นั ” หรือ “มิฉะน้นั แลว้ ” แลว้ ตามดว้ ยลาดบั ข้นั ตอนการทางานเป็ นขอ้ ๆ รูปแบบการเขยี นอธิบายลาดบั ข้นั ตอนการทางานเป็ นขอ้ ความแบบเลือกทา (Selection) 1. ถา้ (เงอื่ นไข) แลว้ 1.1 ทากรณีที่ 1 นอกจากน้นั 1.2 ทากรณีที่ 2 ตวั อยา่ งที่ 3 จงเขียนอธิบายลาดบั ข้นั ตอนการทางาน จากผงั งานใหเ้ ป็ นการอธิบายข้นั ตอนการ ทางานแบบเลือกทา Satrt Read Score Y Score > 50 N Write “สอบผ่าน” Write “สอบไม่ผา่ น” END จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
50 หน่วยท่ี 3 การเขียนอลั กอริทึม จากผงั งานขา้ งตน้ สามารถพฒั นาใหเ้ ป็นการอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะ ของขอ้ ความไดด้ งั น้ี 1. เร่ิมตน้ 2. รบั คา่ Score 3. ถา้ Score > 50 แลว้ 3.1 พมิ พข์ อ้ ความวา่ “สอบผา่ น” มิฉะน้นั แลว้ 3.2 พมิ พข์ อ้ ความวา่ “สอบไม่ผา่ น” 4. จบการทางาน ตัวอย่างการใช้ข้อความอธิบายแทนสัญลกั ษณ์ของผังงานแบบทาซ้า การเขยี นผงั งานแบบวนซ้า จะมีอยู่ 2 ลกั ษณะคอื การทาซ้าแบบทาในขณะที่ (Do-While) และการทาซ้าแบบทาจนกระทง่ั (Do Until) รูปแบบการเขยี นอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะของขอ้ ความแบบวนซ้า แบบ ทาในขณะท่ี จะใชค้ าวา่ “ในขณะท”่ี และตามดว้ ยเงื่อนไขทใ่ี ชต้ ดั สินใจวา่ จะทาซ้าหรือไม่ แลว้ ตาม ดว้ ยคาอธิบายวา่ “แลว้ ทา” และตามลาดบั ข้นั ตอนการทางานท้งั หมด Satrt N Read NUM NUM >= 0 Y END Write NUM NUM NUM - 1 จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยที่ 3 การเขียนอัลกอริทึม 51 จากผงั งานขา้ งตน้ สามารถพฒั นาใหเ้ ป็นการอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะ ของขอ้ ความแบบทาซ้า แบบในขณะที่ ไดด้ งั น้ี 1. เร่ิมตน้ 2. รับค่า NUM 3. ในขณะที่ NUM มากกวา่ หรือเทา่ กบั 0 แลว้ ทา 3.1 แสดงค่า NUM 3.2 NUM NUM – 1 (ลดคา่ NUM ลง 1) 4. จบการทางาน รูปแบบการเขียนอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะของขอ้ ความแบบทาซ้า แบบ ทาจนกระทงั่ จะใชค้ าวา่ “ทาจนกระทงั่ ” และตามดว้ ยเง่ือนไขทีใ่ ชต้ ดั สินใจวา่ จะทาซ้าหรือไม่ และ ตามดว้ ยลาดบั ข้นั ตอนการทางานท้งั หมด Start SUM 1 Read NUM SUM SUM x NUM NUM NUM - 1 N Y NUM < 1 Write SUM END จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
52 หน่วยที่ 3 การเขียนอลั กอริทึม จากผงั งานขา้ งตน้ สามารถพฒั นาให้เป็ นการอธิบายลาดบั ข้นั ตอนการทางานในลกั ษณะ ของขอ้ ความแบบทาซ้า แบบทาจนกระทงั่ ไดด้ งั น้ี 1. เริ่มตน้ 2. กาหนดให้ SUM 1 3. รบั คา่ NUM 4. ทาจนกระทงั่ NUM มีคา่ นอ้ ยกวา่ 1 4.1 SUM SUM x NUM 4.2 NUM NUM – 1 5. แสดงคา่ SUM 6. จบการทางาน จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยท่ี 3 การเขียนอัลกอริทึม 53 แบบประเมินผลการเรียนรู้หน่วยท่ี 3 อัลกอริทมึ ขอ้ 1. จากสญั ลกั ษณ์ตอ่ ไปน้ี จงเขียนอธิบายเป็นข้นั ตอนการทางานในลกั ษณะของขอ้ ความ สญั ลกั ษณ์ ข้นั ตอนการทางานในลกั ษณะของขอ้ ความ (Algorithm) 1. Read B , C 2. B+C A 3. START 4. TEST 5. TOTAL 6. Sale * 0.07 VAT 7. Write Year 8. SUM 9. END 10. COUNT < 10 จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
54 หน่วยที่ 3 การเขียนอลั กอริทึม ขอ้ 2. จงเขียนอลั กอริทมึ คานวณหาปริมาตรทรงกระบอก จากสูตร ¶ x รศั มี2 x สูง ขอ้ 3. จงเขยี นอลั กอริทมึ คานวณหารายไดข้ องพนกั งานโดยรายไดข้ องพนกั งานไดจ้ ากเงนิ เดือน และรายไดพ้ เิ ศษ ซ่ึงรายไดพ้ เิ ศษหาไดจ้ าก 25 % ของยอดขายสินคา้ ขอ้ 4. จงเขียนอลั กอริทมึ คานวณหารายไดข้ องโปรแกรมเมอร์ โดยบริษทั จะใหเ้ งินเดือนและค่า เขยี นโปรแกรม ๆ ละ 700 บาท ทกุ เดือนตอ้ งเสียภาษี 3% ขอ้ 5. จงเขียนอลั กอริทึม คานวณหารายไดข้ องโปรแกรมเมอร์ โดยบริษทั จะใหเ้ งินเดือนและค่า เขียนโปรแกรม ตามอตั ราดงั น้ี จานวน 1 – 10 โปรแกรมๆ ละ 500 บาท จานวน 11 – 20 โปรแกรมๆ ละ 1000 บาท จานวนมากกวา่ 20 โปรแกรมๆ ละ 1500 บาท ขอ้ 6. จงเขียนอลั กอริทึม เพอ่ื จานวนนกั เรียนทสี่ อบผา่ นและสอบไม่ผา่ น เกณฑก์ ารสอบผา่ น จะตอ้ งไดค้ ะแนนรวมต้งั แต่ 60 คะแนนข้ึนไป จากคะแนนสอบ 3 คร้งั ประกอบดว้ ย คะแนนสอบ ยอ่ ย(20) , คะแนนสอบกลางภาค (30),คะแนนสอบปลายภาค(50) จานวนนกั เรียนท้งั หมด 30 คน *************************** จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
หน่วยที่ 3 การเขียนอัลกอริทึม 55 เอกสารอ้างอิง ณัชตพิ งศ์ อูทอง. หนงั สือเรียน หลกั การเขียนโปรแกรม. กรุงเทพฯ:เอมพนั ธ,์ 2546. ดารุณีย์ พฒั ศรีเรือง และคณะ. หนงั สือเรียน การเขียนโปรแกรมคอมพวิ เตอร์. กรุงเทพฯ:บริษทั ศนู ยห์ นงั สือเมืองไทย จากดั , 2548. รุ่งทิวา เสาร์สิงห.์ การเขียนโปรแกรมคอมพวิ เตอร์เบ้ืองตน้ . กรุงเทพฯ : บริษทั ซีเอด็ ยเู คชนั่ จากดั (มหาชน) ,2548. วฒุ ิชยั เกษพานิช. หนงั สือเรียน หลกั การเขียนโปรแกรม. พมิ พค์ ร้ังท่ี 2. กรุงเทพฯ:เอด็ ดูเทก็ ซ์ ,2546. เอกชยั เจริญนิตย.์ หลกั การออกแบบและพฒั นาโปรแกรม. กรุงเทพฯ:พฒั นาวชิ าการ (2535),2547. เอกพนั ธุ์ คาปัญญโญ. หลกั การออกแบบและพฒั นาโปรแกรม. กรุงเทพฯ : บริษทั ซคั เซส มีเดีย จากดั , 2549. แหล่งค้นคว้าเพม่ิ เตมิ เวบ็ ไซต์ http://cs.udru.ac.th/maliwan/algorithm/ เวบ็ ไซต์ http://elec.chandra.ac.th/learn/course/ เวบ็ ไซต์ http://www.nsru.ac.th/e-learning/algorithm/ เวบ็ ไซต์ http://PixiArt.com/links/computer/ เวบ็ ไซต์ http://rmutl.ac.th/jk/program เวบ็ ไซต์ http://202.28.94.51/users/sumonta/ จุฬาลกั ษณ์ ถาไชยลา วอศ.มค. หลกั การเขียนโปรแกรม
Search
Read the Text Version
- 1 - 17
Pages: