หนว่ ยที่ 2 อลั กอรทิ มึ และการเขยี นโปรแกรม 2
หน่วยที่ 2 อลั กอริทึมและการเขยี นโปรแกรม
สมรรถนะ
วิเคราะห์อลั กอริทึมและการเขียนโปรแกรม
สาระสําคญั
ในการเขยี นโปรแกรมคอมพวิ เตอร์ใหม้ ีผลลพั ธ์ตามท่ีเราต้องการนัน้ ผเู้ ขียนจะต้องรู้วา่ จะใหป้ รแกรม
ทาํ อะไร มีข้อมลู อะไรทีจ่ ะตอ้ งนําเข้าใหก้ ับโปรแกรมเพือ่ ใช้ในการประมวลผลบ้าง มขี ้ันตอนการระมวลผล
อยา่ งไร และตอ้ งการผลลพั ธ์อะไรจากโปรแกรม รวมถงึ รปู แบบ การแสดงผลด้วย จึงมคี วามจําเปน็ ตอ้ งทํา
การวเิ คราะห์งานหรือวิเคราะหค์ วามต้องการก่อน จากนน้ั จึงทาํ การเขยี นผังงาน Flowchart ซงึ่ เปน็ คร่ือง
มือที่ใช้สัญลักษณ์อธิบายลําดับขั้นตอน การทํางาน หรืออาจใช้รหัสเทียม Pseudo code ซึ่งเป็นรหัส
จาํ ลองภาษาองั กฤษไมข่ ึน้ กับภาษาใด ภาษาหน่งึ เพื่ออธิบายลําดบั ขนั้ ตอนการทํางานให้เข้าใจได้ง่ายและ
เปน็ มาตรฐานเดียวกัน จากนัน้ จงึ นําไปเขยี นโปรแกรมด้วยภาษาคอมพิวเตอรภ์ าษาใดภาษาหน่ึงตามความ
ถนัดของ ผ้เู ขยี นตอ่ ไป
สาระการเรยี นรู้
1. หลกั การเขยี นโปรแกรมคอมพิวเตอร์ 3. หลกั การเขยี นอลั กอรทิ ึม 5. หลกั การเขยี นผังงาน
2. การวิเคราะหง์ าน 4. หลกั การเขยี นรหัสเทยี ม
จุดประสงคเ์ ชิงพฤติกรรม
1. อธบิ ายหลกั การเขียนโปรแกรมคอมพิวเตอร์ได้
2. วิเคราะหค์ วามต้องการของระบบงานได้
3. เขยี นอลั กอรทิ ึมเพ่ือนาํ ไปใช้ในการพฒั นาโปรแกรมได้
4. เซียยานะรหัสเทียมแฟพอ่ื นาํ ไปใชใ้ นการพฒั นาโปรแกรมได้
5. เซียยนะมสั สาณะรูปแบบต่าง ๆ เพือ่ นําไปใชใ้ นการพัฒนาโปรแกรมได้
วชิ าหลักการเขียนโปรแกรม รหสั วิชา 20204-2004
หน่วยท่ี 2 อลั กอริทึมและการเขียนโปรแกรม 3
2.1 หลกั การเขยี นโปรแกรมคอมพวิ เตอร์
ก่อนที่เราจะเขียนโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหน่ึงเพื่อแก้ปัญหาทาง คอมพิวเตอร์ เราควร
จะต้องคํานึงถึงหลักการในการเขียน โปรแกรมคอมพิวเตอร์ที่มีขั้นตอน วิธกี ารทางคอมพิวเตอร์ เพื่อให้
เกิดความรู้ ความเข้าใจที่ถูกต้องในการเขียนโปรแกรม ซึ่งการเขียนโปรแกรมคอมพิวเตอร์จะมีหลักการ
เปน็ ขนั้ ตอนดงั ตอ่ ไปน้ี
2.1.1 ข้ันวเิ คราะหง์ าน (Job Analysis)
เป็นงานขั้นแรกที่ต้องกระทําเมื่อเริ่มที่จะเขียนโปรแกรมและถือว่าเปน็ ขั้นตอนที่สําคัญทีส่ ุดใน
การวิเคราะหง์ าน เริ่มตน้ จากการกาํ หนดขอบขา่ ยหรือปัญหาของงาน รวบรวมรายละเอียดของงาน ศกึ ษา
วิเคราะห์โดยละเอียดว่าตอ้ งการให้คอมพิวเตอร์ทําอะไร มรี ูปแบบของผลลพั ธ์เปน็ อย่างไร ต้องการข้อมูล
อะไรเพ่อื ให้ไดผ้ ลลพั ธต์ ามต้องการ และ การประมวลผลจะมขี ัน้ ตอนและใชส้ ูตรอะไรบ้าง การวิเคราะห์จึง
เปน็ งานขน้ั วางแผนเพ่ือ เตรียมการให้พรอ้ มทีจ่ ะเขยี นโปรแกรม
2.1.2 การออกแบบลําดับขนั้ ตอนสาํ หรับโปรแกรม (Program Design)
วิธีการในการออกแบบขั้นตอนสาํ หรบั โปรแกรม มีผคู้ ิดไวห้ ลายวธิ ี เช่น
1) การเขียนเปน็ อัลกอริทมึ (Algorithm)
2) ผงั งาน (Flowchart)
3) รหัสเทยี ม (Pseudocode)
4) แผนภมู โิ ครงสร้าง (Structure Charts)
ซึ่งแต่ละวิธมี ีจุดประสงคเ์ พือ่ แสดงลาํ ดับขนั้ ตอนกระบวนการแกป้ ญั หางาน เพื่อใหไ้ ดผ้ ลลัพธต์ าม
ต้องการ ก่อนไปสขู่ ัน้ ตอนการเขียนคําสัง่ งาน
2.1.3 ขน้ั ดาํ เนนิ การเขียนโปรแกรม (Program Coding)
เปน็ การเปลีย่ นขน้ั ตอนของวิธีการในผังงานหรือรหสั เทยี มให้อยใู่ นรูปภาษา คอมพวิ เตอร์ภาษาใด
ภาษาหนง่ึ การเลอื กเขยี นโปรแกรมโดยใชภ้ าษาคอมพิวเตอร์ภาษาใดน้นั มสี ่งิ ทีต่ ้องพจิ ารณาคอื
1) เลอื กใชภ้ าษาคอมพวิ เตอรใ์ หเ้ หมาะสมกับลกั ษณะและประเภทของงาน
2) ขีดจํากดั ของเครอื่ งและโปรแกรมแปลภาษาท่ีมีอยู่
3) ความถนัดและความชาํ นาญของผ้เู ขียนโปรแกรม
วชิ าหลักการเขียนโปรแกรม รหสั วิชา 20204-2004
หน่วยท่ี 2 อลั กอรทิ มึ และการเขยี นโปรแกรม 4
2.1.4 ทดสอบและแกไ้ ขโปรแกรม (Program Tesligamel Detbugging)
หลังจากดําเนินการในข้ันตอนของการเขยี นโปรแกรมแล้วก็จะต้องฆาดาํ เนินการ ในการทดสอบ
และแก้ไขโปรแกรมกอ่ นนําไปใช้งานจริง เพื่อตรวจสอบโปรแกรมวา่ มีข้อผิดพลาด ในการทํางานหรือไม่
ซึ่งความผิดพลาดในโปรแกรมทีเ่ กิดขน้ึ จะมอี ยู่ด้วยกนั 3 ชนิด ได้แก่า
1) Syntax error
2) Run-time error
3) Logical error
Syntax error
1) เกดิ จากการเขยี นไวยากรณ์ของภาษาผดิ
2) ตรวจพบไดใ้ นขณะทาํ การแปล (compile) โปรแกรม
3) สามารถแก้ไขไดง้ า่ ยทส่ี ุด ตวั อย่างเช่น คาํ สั่ง printf( ) ในภาษา C ตอ้ ง เขยี นด้วยตัวอักษรตัว
เลก็ แตเ่ ขียนเปน็ PRINTF() เป็นตน้ โดยสว่ นมากความผดิ พลาดทาง ไวยากรณส์ ามารถแกไ้ ขโดยการเขยี น
คาํ ส่ังให้ถกู ต้องตามไวยากรณข์ องภาษานน้ั ๆ
Run-time error
1) เปน็ ความผิดพลาดของโปรแกรมในระหว่างการปฏิบตั ิงาน
2) ตรวจไม่พบในขณะทําการแปลโปรแกรม เชน่ คําส่งั 1xx โดยกก๊ หMBE ให้ x >= 0 และ x <=
10 ซึ่งการหารดว้ ย 0 จะทาํ ใหเ้ กิดข้อผดิ พลาดตอน Run-time (ซอ้ื ใน การแปลจะไม่พบข้อผิดพลาด)
Logical error
1) เกิดจากการตคี วามหมายของปญั หาผดิ ไป
2) เป็นข้อผิดพลาดที่แกไ้ ขได้ยากท่ีสุด เช่น X = b เขียน x = 5/2ras ตีความเป็น X = b*a จะ
ผิด ทีถ่ ูกต้องเป็น x = b/(2*a) วิธีการตรวจหาความผิดพลาดแบบนี้ คือ ตรวจสอบการคาํ นวณผลลัพธ์ของ
โปรแกรมว่าตรงกับผลลัพธ์ที่คํานวณด้วยมือหรือ เครื่องคิดเลขหรือไม่ ถ้าไม่ตรงกันแสดงว่าเกิดความ
ผิดพลาดทางตรรกะขน้ึ วธิ กี ารแก้ไข กค็ ือ การแก้ไขสตู รให้ถูกต้อง หรือแก้ไขลาํ ดับการทาํ งานให้ถกู ต้อง
การตรวจสอบโปรแกรมเพือ่ หาข้อผดิ พลาดดังกลา่ วอาจจะสระเปน็ ขน้ั ตอนดงั นี้ คือ
1) การตรวจสอบก่อนนําโปรแกรมเข้าเคร่ืองคอมพวิ เตอร์ โดยผูเ้ ขียน โปรแกรมเรียกวิธีการน้ีว่า
Desk Checking วิธีการนี้จะตรวจสอบว่าโปรแกรมสามารต่ให้ผลลัพธ์ ตามต้องการหรือไม่ เป็นการ
ตรวจสอบข้อผิดพลาดทางตรรกะโดยกําหนผมเอาขอ้ มูลชดุ หน่งึ
วิชาหลักการเขียนโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อัลกอรทิ มึ และการเขยี นโปรแกรม 5
ขนึ้ มาแล้วแทนค่าตามขน้ั ตอนตา่ ง ๆ ทเ่ี ขียนเป็นโปรแกรมไว้แตต่ ้นจนจบ โดยสมมุติวา่ เป็น การปฏบิ ัติงาน
ของเครื่องคอมพิวเตอร์ วิธีการเช่นนี้จะช่วยลดข้อผิดพลาดทางตรรกะได้มาก ก่อนจะส่งโปรแกรมเข้า
เครอื่ งคอมพิวเตอร์ต่อไป
2. การตรวจสอบโดยเคร่อื งคอมพิวเตอร์ เมอ่ื ผ่านการตรวจสอบขั้นแรกแลว้ จึงส่งโปรแกรมเขา้ สู่
เครอ่ื งคอมพิวเตอร์พรอ้ มข้อมูลสมมุติท่ีทราบคาํ ตอบ ขั้นแรก เครื่องคอมพิวเตอรจ์ ะทําการตรวจ Syntax
Error หรอื ขอ้ ผดิ พลาดทางไวยากรณ์ ถ้ามที ่ผี ิด เครอ่ื งคอมพวิ เตอร์จะพมิ พ์ข่าวสาร ข้อผิดพลาดนอี้ อกมา
ถ้าไมม่ ีขอ้ ผิดพลาดก็สามารถผา่ นไปสู่ รอบแปล (Compilation run) จนไดผ้ ลลพั ธอ์ อกมา ถ้าได้คําตอบ
ตรงตามทที่ ราบก็คอ่ นขา้ ง ม่นั ใจวา่ โปรแกรมน่าจะถูกตอ้ ง
2.1.5 ขั้นเขยี นเอกสารประกอบ (Documentation)
เอกสารประกอบโปรแกรมมีความสําคญั กบั งานเขียนโปรแกรมมาก และ อาจจะเร่ิมทําไปพร้อม
กบั การเขยี นโปรแกรม โดยท่ัวไปเอกสารทีจ่ ัดทํามอี ยู่สองประเภทคือ คมู่ ือผ้ใู ช้ (Users Manual) และคูม่ ือ
โปรแกรมเมอร์ (Programmers Manual) ในเอกสาร คู่มือผู้ใช้จะอธิบายวิธีการใช้โปรแกรม ส่วนคู่มือ
โปรแกรมเมอร์จะมีรายละเอียดต่าง ๆ เกี่ยวกับ ชื่อโปรแกรม ชื่อผู้เขียนโปรแกรม วันที่เขียนโปรแกรม
จุดประสงค์ของโปรแกรม สื่อที่ใช้ บันทึกข้อมูลเข้าผลลัพธ์ที่ได้ วิธีการหรือขั้นตอนต่าง ๆ ในโปรแกรม
รวมทั้งผังงาน ฯลฯ โดยที่ เอกสารชนิดแรกจะเปน็ ประโยชน์แกผ่ ู้ใชโ้ ปรแกรม ในขณะทค่ี ู่มือโปรแกรมเมอร์
จะมปี ระโยชน์ ตอ่ การปรบั ปรงุ แกไ้ ขโปรแกรมในอนาคต
2.1.6 ขน้ั บํารุงรักษาโปรแกรม (Program Maintenance)
การบํารุงรักษาโปรแกรม คือ การปรับปรุงแก้ไขโปรแกรมให้ทันสมัยสมกับ ภาวการณ์ท่ีเป็นอยู่
เช่น โปรแกรมคํานวณเงินรวมของเงินฝากธนาคาร เมื่อมีการเปลี่ยนแปลง ฮัตราดอกเบี้ยก็จะต้องแกไ้ ข
ปรับปรุงอัตราดอกเบี้ยเสียใหม่ เพื่อให้ผู้ใช้โปรแกรมเองหรือ ผู้เขียนโปรแกรมนําไปปรับปรุงแก้ไขให้เข้า
กับระบบคอมพิวเตอร์ที่มี นอกจากนี้ การบํารุงรักษา โปรแกรมยังรวมไปถึงการรักษาสื่อข้อมูลที่มี
โปรแกรมบนั ทึกให้อยใู่ นสภาพทพี่ รอ้ มใช้งานได้
สรุปได้ว่า เมื่อต้องเขียนโปรแกรมคอมพิวเตอร์ จะต้องนาํ งานนั้นมาวิเคราะห์ รายละเอียดของ
งาน เขยี นผังงานหรือรหสั เทียม แลว้ จึงนาํ ไปเขียนโปรแกรมดว้ ยภาษา คอมพิวเตอรท์ ่เี ลือก หลังจากมีการ
ทดสอบว่าโปรแกรมถูกต้องแล้ว จึงนําไปดําเนินการเพื่อ สิ่งเข้าเครื่องคอมพิวเตอร์ทําการประมวลผล
ตอ่ ไป โดยจดั ทําเอกสารประกอบโปรแกรมไว้ สําหรบั ผู้ใช้งานโปรแกรมและสําหรับการแกไ้ ขในอนาคต
วชิ าหลักการเขียนโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อลั กอริทึมและการเขียนโปรแกรม 6
2.2 การวิเคราะห์งาน (Job Analysis)
ในการวิเคราะหง์ านนี้เปน็ ข้ันแรกทส่ี าํ คัญมาก ซึ่งเราจะต้องกาํ หนดจดุ ประสงคข์ อง การวิเคราะห์งาน
และขั้นตอนวธิ ีการวิเคราะห์งานแต่ละอย่างให้ได้ ในการวิเคราะห์งาน แต่ละอย่างมีจุดประสงค์ของการ
วเิ คราะห์งานที่สาํ คญั ดังนี้
1) เพื่อหาวตั ถปุ ระสงค์ของการเขียนโปรแกรม
2) เพ่ือหารูปแบบผลลพั ธ์ที่ตอ้ งการ
3) เพ่อื หาข้อมลู นาํ เข้าท่ตี ้องใส่เขา้ ไปในโปรแกรม
4) เพอ่ื หาตัวแปรทจ่ี ําเป็นต้องใช้ในโปรแกรมเพือ่ หาขัน้ ตอนวิธกี ารทาํ งานของ โปรแกรม
5) เพอ่ื หาขัน้ ตอนวิธีการทาํ งานของโปรแกรม
การวิเคราะห์งานเป็นงานขั้นแรกที่ต้องกระทําเม่ือเริ่มที่จะเขียนโปรแกรมและถือว่า เป็นขั้นตอนที่
สาํ คญั ท่สี ุด การวเิ คราะห์งานเรมิ่ ตน้ จากการกาํ หนดขอบขา่ ยหรอื ปญั หาของงาน รวบรวมรายละเอียดของ
งาน ศึกษาวิเคราะห์โดยละเอียดว่าต้องการให้คอมพิวเตอร์ทําอะไร มีรูปแบบของผลลัพธ์เป็นอย่างไร
ต้องการข้อมูลอะไรเพ่ือให้ได้ผลลัพธต์ ามตอ้ งการ และ การประมวลผลจะมีขั้นตอนและใช้สูตรอะไรบ้าง
การวิเคราะห์จึงเปน็ งานขั้นวางแผนเพ่อื เตรยี มการ ใหพ้ ร้อมท่ีจะเขยี นโปรแกรม
สรุปได้ว่า การวิเคราะห์งานเป็นการศึกษาผลลัพธ์ (Output) ข้อมูลที่นําเข้า (Input) และวิธีการ
ประมวลผล (Process) ท่ีจะใชใ้ นการเขยี นโปรแกรมนัน่ เอง โดยท่ัวไปนยิ มแบง่ วิธกี ารวิเคราะห์งานเป็น 5
หัวขอ้ ไดแ้ ก่
1) สิ่งทีต่ ้องการ : เปน็ การพจิ ารณาว่าผู้ใช้ต้องการใหค้ อมพิวเตอร์ทาํ อะไรบา้ ง
2) รปู แบบผลลพั ธ์ : เป็นการพิจารณารปู แบบของผลลพั ธท์ ีต่ ้องการให้คอมพวิ แตอร์แสดง
3) ข้อมลู นาํ เข้า : เป็นการพิจารณาขอ้ มูลท่ีตอ้ งนาํ เข้าสคู่ อมพิวเตอร์เพือ่ ใช้ในการ ประมวลผล
4) เป็นการพิจารณาว่าใช้ตัวแปรอะไรแทนข้อมูลนําเข้า หรือแทนค่าที่อยู่ระหว่าง การประมวลผล
ตลอดจนตวั แปรท่ีใช้แสดงผลลพั ธ์
5) วิธีการประมวลผล : เป็นการพิจารณาลําดับขั้นตอนของการเขียนคําสั่งเพื่อให้ คอมพิวเตอร์
ประมวลผลใหไ้ ด้ข้อมลู หรือผลลพั ธ์ตามความต้องการของผ้ใู ช้อยา่ งถกู ต้อง
สง่ิ ท่ตี ้องการ
เป็นการหาวัตถุประสงค์ของการเขยี นโปรแกรม ผู้เขียนจะต้องทราบว่า ต้องการเขียนโปรแกรม
เพื่อแก้ปัญหาอะไรบ้างซ่งึ จะทําให้เขยี นโปรแกรมไดต้ รงกับความ ต้องการหรอื วัตถุประสงคข์ องงานน้ัน
รปู แบบผลลัพธ์
วชิ าหลักการเขยี นโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อัลกอรทิ มึ และการเขียนโปรแกรม 7
การหารูปแบบผลลัพธท์ ี่ตอ้ งการ รูปแบบผลลัพธ์อาจอยูใ่ นลักษณะของ ข้อความ ตัวเลข ตาราง
แผนภูมิ หรืออาจใช้ผสมกัน ตัวอย่างเช่น ต้องการเขียนโปรแกรม คํานวณหาพื้นที่สามเหลี่ยม โดยมี
รปู แบบผลลัพธท์ ี่ต้องการดังน้ี
ความยาวฐาน : …………………
ความสูง : ………………….
พ้นื ทส่ี ามเหลีย่ ม : ………………….
ข้อมูลนาํ เขา้
การหาข้อมูลนําเข้าที่ต้องใส่เข้าไปในโปรแกรม ผู้เขียนโปรแกรมจะต้องหา ข้อมูลนําเข้า โดย
คํานึงถึงขั้นตอน วธิ ีการคํานวณ และข้อมูลท่ีจาํ เปน็ ตอ้ งใส่เข้าไปเพ่อื ให้ได้ ผลลพั ธ์ทตี่ อ้ งการ ตัวอย่างเช่น
ต้องการเขียนโปรแกรมคํานวณหาพื้นที่สามเหล่ียม สูตรคํานวณ พื้นที่สามเหลี่ยมมุมฉาก คือ 2 x ความ
ยาวฐาน x ความสูง ดังนั้นสิง่ ที่ต้องปอ้ นเข้าไปเพื่อ ให้ได้ผลลัพธ์คือ ความยาวของฐาน และความสูงของ
รปู สามเหล่ยี ม
ตัวแปรทใี่ ช้
ตัวแปร หมายถึง ชื่อที่ผู้เขียนโปรแกรมตั้งขึ้นเองตามหลักการตั้งชื่อตัวแปร ของ
ภาษาคอมพิวเตอร์ เพื่อใช้ในการอ้างอิงการเก็บข้อมูล และเรียกใช้ข้อมูลภายในตัวแปร ดังนั้นผู้เขียน
โปรแกรมจะต้องตั้งชื่อตวั แปรทีใ่ ช้ในการเก็บข้อมลู ทั้งหมดภายในโปรแกรม ตัวอย่างเช่น ต้องการเขียน
โปรแกรมคํานวณหาพ้ืนที่สามเหลี่ยม รูปแบบของการคาํ นวณ คือ พนื้ ท่ีสามเหลีย่ ม = A x ความยาวฐาน
x ความสูง ดงั นั้นตัวแปรที่ใช้คือ
Base สาํ หรับเก็บคา่ ความยาวฐานของสามเหลยี่ ม
High สาํ หรบั เก็บค่าความสูงของสามเหล่ยี ม
Area สาํ หรบั เก็บผลลัพธ์ทไี่ ด้จากการคํานวณ
วิธปี ระมาณแผล
การหาขั้นตอนวิธีการทํางานของโปรแกรม จะขึ้นอยู่กับลักษณะของการ แก้ปัญหา ดังนั้น
นกั เขียนโปรแกรมทีม่ ีความชํานาญในระดบั หนง่ึ แล้วจะสามารถหาข้นั ตอนวธิ ี การทํางานของโปรแกรมได้
โดยไม่ยาก ตัวอยา่ งเช่น ต้องการเขยี นโปรแกรมคาํ นวณหาพนื้ ท่ี สามเหลยี่ ม มีวิธกี ารประมวลผลดงั นี้
1) เรมิ่ ตน้ ทํางาน
2) รบั ข้อมลู คา่ ความยาวฐานและความสงู ของสามเหล่ียมผ่านทางคยี ์บอร์ด
วชิ าหลกั การเขยี นโปรแกรม รหัสวิชา 20204-2004
หน่วยท่ี 2 อัลกอรทิ มึ และการเขยี นโปรแกรม 8
3) คํานวณพ้นื ท่สี ามเหล่ยี มตามสตู ร Area = A x Base x High
4) พิมพ์คา่ ความยาวฐานความสูงและพน้ื ทีส่ ามเหลีย่ มออกทางจอภาพ
5) จบการทํางาน
ในขั้นตอนการพัฒนาโปรแกรม เราจําเป็นต้องเขียนอธบิ ายขั้นตอนการทํางานของ การเขียนอธบิ าย
ขั้นตอนการทํางานของโปรแกรม หรือคําสั่ง สามารถทําได้สองแบบ คือ ผังงาน (Flowchart) และรหัส
เทียม (Pseudo code)
2.3 หลักการเขียนอัลกอริทึม
ความหมายของอัลกอรทิ มึ
อัลกอริทึม (Algorithm) หมายถึง ขั้นตอนหรือลําดับการประมวลผลในการแก้ปัญหาใด ปัญหา
หนึ่ง ซึ่งจะช่วยให้โปรแกรมเมอร์เห็นขั้นตอนของการเขียนโปรแกรมง่ายขึ้นอัลกอริทึม (Algorithm)
หมายถึง แนวคิดอยา่ งมเี หตุผลท่ีผู้เขียนโปรแกรม (หรอื โปรแกรมเมอร์ หรอื นักวิเคราะหร์ ะบบ) ใช้ในการ
อธิบายวิธีการอย่างเป็นขั้นตอนตามลําดับในการทีจ่ ะพัฒนา โปรแกรมนัน้ ๆ ให้กับผู้ที่สนใจหรือผู้ที่เป็น
เจา้ ของงานหรือผูท้ ร่ี ับผิดชอบได้ทราบถงึ ข้ันตอนต่าง ๆ ในการเขยี นหรือพฒั นาโปรแกรม ขณะเดียวกันก็
ช่วยให้ผู้ที่เป็นเจ้าของงานหรือผู้ที่รับผิดชอบนั้น ได้ตรวจสอบขั้นตอนต่าง ๆ ในการทํางานและความ
ถูกตอ้ งในแต่ละข้ันตอน โดยผทู้ ่เี ปน็ เจ้าของงาน หรือผู้ทร่ี บั ผดิ ชอบนั้น ๆ ไม่จาํ เป็นต้องเขียนโปรแกรมเป็น
หลักการเขยี นอัลกอริทึม
1. เรียงลาํ ดับความสาํ คัญของงานท่จี ะทาํ
2. เขยี นออกมาในลักษณะภาษาเขียนสามารถเขา้ ใจงา่ ย
3. มเี คาชามละเอียดของโครงสร้างพอสมควร
ประโยชนข์ องอัลกอรทิ มึ
ประโยชน์ของอลั กอริทึม (Algorithm) คือ ทาํ ใหไ้ มส่ ับสนกับวธิ ดี าํ เนนิ งาน เพราะทุกอย่าง
จะถกู จัดเรยี งเป็นข้นั ตอนมวี ิธกี ารและทางเลือกไว้ เมอื่ นํามาใช้จะทาํ ใหก้ ารทํางานสาํ เร็จอย่าง รวดเร็ว ทาํ
ใหป้ ัญหาลดลงหรอื สามารถค้นหาต้นเหตุของปัญหาไดอ้ ย่างรวดเร็ว เนอ่ื งจาก กระบวนการถูกแยกแยะ
กิจกรรม ขั้นตอน และความสมั พนั ธ์ ออกมาใหเ้ ห็นอยา่ งชดั เจน
รปู แบบการเขียนอลั กอรทิ มึ
1. ลักษณะการบรรยาย (Narrative Description)
วิชาหลักการเขยี นโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อลั กอรทิ ึมและการเขยี นโปรแกรม 9
ตัวอย่างโจทย์ ให้เขียนอัลกอริทึมเพื่อหาคะแนนเฉลยี่ ของการสอบทงั้ หมด 5 วิชา โดยวดั ผลจากคะแนน
ถา้ คะแนนตาํ่ กวา่ 50 สอบไมผ่ า่ น แต่ถ้าคะแนนมากกวา่ 50 ข้นึ ไป สอบผ่าน
อลั กอรทิ ึมแบบบรรยาย ใส่คะแนนสอบท้ัง 5 วชิ า คอมพวิ เตอรค์ าํ นวนคา่ เฉล่ีย โดยการบวกคะแนนทั้ง 5
วิชา แล้วหาร 5 ถา้ คา่ เฉลี่ยต่ํากวา่ 50 แสดงข้อความสอบไมผ่ า่ น แตถ่ ้าคา่ เฉลยี่ สูงกว่า 50 แสดงข้อความ
สอบผา่ น
ตวั อย่างการเขยี นอัลกอรทิ ึม
ในรูปคาํ ส่ังเทยี ม คือ มีลกั ษณะเป็นการเขียนคาํ สั่งตา่ ง ๆ ทท่ี ําให้ผู้เขียนโปรแกรม สามารถ
เข้าใจง่าย ซึ่งคาํ ส่งั ทใี่ ชจ้ ะเปน็ คาํ พูดธรรมดา ไม่ยดึ หลกั ไวยากรณ์ของภาษาคอมพวิ เตอร์
ตวั อยา่ ง 2.1 การหาผลรวมของตวั เลข N จํานวน
Program : Sum
รับคา่ จํานวนตวั เลขทงั้ หมดเก็บไว้ท่ีตวั แปร N
กาํ หนดใหต้ ัวแปรเกบ็ ตัวนบั เร่ิมต้น 1 = 1, เกบ็ ผลรวมเรมิ่ ตน้ Sum = 0
Repeat
รบั คา่ ข้อมลู เกบ็ ไวท้ ่ี X นาํ ค่าข้อมูลที่อ่านได้บวกสะสมไว้ที่ตวั แปรเก็บผลรวม Sum
เพมิ่ ค่าตวั นบั 1 ขน้ึ อกี 1
Until เปน็ เลขตวั สุดทา้ ยจรงิ (I> N)
แสดงตัวแปรท่ีเกบ็ ผลรวมสะสม Sum
End Program
ตวั อยา่ ง 2.2 หาคา่ สงู สและกระชากตวั มสมด้วยหอมสด (W/จกั รยาน
Program : Max_Min
รบั ค่าจาํ นวนตัวเลขท้งั หมดเก็บไวท้ ่ีตัวแปร N
กําหนดให้ตัวแปรเก็บตัวนับเร่มิ ต้น i = 1
อา่ นเลขตวั แรกเก็บไว้ที่ตัวแปร x
กาํ หนดให้ตวั แปร x เป็นท้งั ค่ามากท่ีสุดและน้อยที่สุด เก็บไว้ท่ตี วั แปร Max และ Min
วชิ าหลกั การเขยี นโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อลั กอริทึมและการเขยี นโปรแกรม 10
Repeat
อา่ นเลขตัวถดั ไป เก็บไวท้ ่ี X และเพ่ิมคา่ ตัวนบั 1 อีก 1
If X > Max Then
เปล่ยี นค่าใน Max ใหเ้ ก็บค่า X แทน
Else
If X < Min Then
เปลี่ยนค่าใน Min ให้เก็บคา่ X แทน
End if
End if
ให้ค่า Max = Max , ค่า Min = Min
Until I > N
แสดงตวั เลขในตัวแปร Max และ Min
End Program
2. การเขยี นรหัสเทยี ม
รหัสจําลองที่เรียกว่า การเขียนซูโดโค้ด (Pseudo Code) คือ การเขียนแด็กอธิบาย
ขั้นตอนการทํางานของโปรแกรม โดยใช้ถ้อยคําผสมระหว่างภาษาอังกฤษและภาษาการเขียน โปรแกรม
แบบโครงสร้าง ซึ่งจะช่วยให้ผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็น โปรแกรมได้ง่ายขึน้
ส่วนใหญม่ กั ใช้คําเฉพาะ (Reserve Word) ทีม่ ีในภาษาการเขียนโปรแกรม และมกั เขยี นด้วยตัวอักษรตัว
ใหญ่ ซูโดโต้ตทีด่ ีจะต้องมคี วามชัดเจน สั้น และได้ใจความ ข้อมูล ต่าง ๆ ที่ใช้จะถูกเขียนอยู่ในรูปของตวั
แปร
ประโยชนข์ องรหัสเทยี ม
เป็นเคร่ืองมอื ในการกําหนดโครงร่างกระบวนการทาํ งานของการเขียนโปรแกรม และใชเ้ ป็น
ตน้ แบบในการทบทวน ปรับปรงุ แก้ไขและพัฒนาโปรแกรมของโปรแกรมเมอร์ และนกั วเิ คราะหร์ ะบบ C
หลักการเขยี นรหัสเทยี ม
• ใชภ้ าษาองั กฤษทเี่ ขา้ ใจงา่ ยในการเขียน
• ในหนงึ่ บรรทดั มเี พียงหน่ึงประโยคคาํ ส่งั เทา่ น้นั
วชิ าหลักการเขยี นโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อลั กอรทิ ึมและการเขยี นโปรแกรม 11
• ใชย้ ่อหน้าแบ่งการแสดงการทาํ งานเพือ่ ใหอ้ า่ นงา่ ย
• แตล่ ะประโยคคําสัง่ ใหเ้ ขยี นจากบนลงลา่ ง และมีทางออกทางเดียว
• กลุ่มของประโยคคําสงั่ อาจรวมเปน็ หมวดหมแู่ ล้วเรยี กใชเ้ ปน็ โมดูล
รูปแบบการเขียนรหัสเทยี ม
ประโยคคําสั่งต่าง ๆ ที่ใช้ในการเขียนรหัสเทียมสามารถแบ่งออกมาเป็นกลุ่มย่อย ๆ โดย
ลกั ษณะการใช้งานไดด้ ังนี้
การอา่ น/รบั ขอ้ มลู (Input/Output)
การอา่ นข้อมลู สามารถใช้คาํ สง่ั READ, INPUT หรอื GET ได้ โดยเขยี นดงั นี้
READ variable_2, variable_2, variable_n
INPUT variable_1, variable_2, variable_n
GET variable_1, variable_2, variable_n
READ ใชส้ าํ หรบั การอ่านค่าทม่ี อี ยู่แล้ว มาเก็บไวใ้ นตวั แปร เชน่ การอ่านขอ้ มลู จากไฟล์ โดย
จะทํางานรว่ มกับ OPEN (การเปดิ ไฟล)์
INPUT และ GET ใชส้ าํ หรับการรบั ค่าขอ้ มลู ผา่ นทางแป้นพิมพ์
Variable คอื ตัวแปรทใี่ ชเ้ ก็บข้อมลู ทอี่ ่านหรอื รับเข้ามา ซง่ึ สามารถกําหนดกต่ี ัวก็ได้ โดยใช้
เครอื่ งหมาย “ ” คัน่ ระหว่างชอ่ื ตัวแปร
การแสดงผลข้อมูล สามารถใช้คําสั่ง DISPLAY, PRINT, PROMPT หรือ WRITE ได้ โดย
เขียนดังนี้
DISPLAY variable_1, variable_2, variable_n
WRITE variable_1, variable_2, variable_n
PRINT variable_1, variable_2, variable_n
PROMPT variable_1, variable_2, variable_n
DISPLAY ใช้สําหรบั การแสดงผลทางจอภาพ
PRINT และ PROMPT ใชส้ ําหรับการพมิ พ์คา่ ข้อมูล หรอื ขอ้ ความ
WRITE ใช้สาํ หรับการบนั ทกึ ขอ้ มูลลงในแฟ้มข้อมลู
วชิ าหลักการเขยี นโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อลั กอริทึมและการเขยี นโปรแกรม 12
การกําหนดเงอ่ื นไขหรอื การตดั สินใจ (Dicision) ใชค้ าํ สง่ั if...thern โดยเขยี นดังน้ี
IF <condition> THEN
activity1
ELSE
activity2
ENDIF
Condition คือ เงื่อนไขในการตัดสินใจ หากเงื่อนไขเป็นจริง จะทํากระบวนการหลัง THEN (activity 1)
แตถ่ ้าเงื่อนไขเป็นเทจ็ จะข้ามไปทาํ กระบวนการหลัง ELSE (activity 2)
ตัวอย่าง 2.3 รหัสเทียมของการตัดสินใจถ้ารหัสผ่านถกู ต้องก็ให้เข้าระบบได้แต่ถา้ รหัสผ่านไม่ถูกต้องจะ
แสดงขอ้ ความว่าไมส่ ามารถเข้าระบบได้
IF your password is match in system password THEN
accessSystem();
ELSE
ShowMessage(“Can not access!”);
ENDIF
ตัวอย่าง 2.4 รหัสเทยี มของการตัดสินใจ เรื่องการให้เกรด
IF score >= 80 วชิ าหลักการเขยี นโปรแกรม รหัสวิชา 20204-2004
grade = “A”
ELSEIF score >= 70
grade = “B”
ELSEIF score >= 60
grade = “C”
ELSEIF score >= 50
grade = “D”
ELSE
grade= “F”
ENDIF
หนว่ ยที่ 2 อลั กอริทมึ และการเขยี นโปรแกรม 13
การทำงานแบบวนซ้ำ
การทำงานแบบวนซ้ำด้วย REPEAT … UNTIL
REPEAT
activity1
UNTIL <condition>
การทํางานแบบวนซ้ำด้วย REPEAT...UNTIL จะทํา activity ภายในลูปก่อนแล้ว ค่อยทําการ
ตรวจสอบเงอื่ นไขถ้าเง่ือนไขเป็นจรงิ จะทาํ ซํา้ ไปเร่อื ยๆ จนกระทั่งเง่ือนไขเปน็ เทจ็ จงึ จะออกจากลูป ดังนั้น
จงึ มกี ารทํางานอยา่ งนอ้ ย 1 รอบเสมอ
ตวั อย่าง 2.5 รหสั เทยี ม REPEAT... UNTIL
N=0
REPEAT
N=N+1
UNTIL N=10
จากตัวอย่าง ในตอนแรกค่าของ N เป็น 0 พอเริ่มทํางานในลูป N จะถูกบวกเพิ่ม ทีละ 1
จนกระท่ัง N = 10 จึงจบการทาํ งาน คา่ ของ N จึงเทา่ กับ 10
การทาํ งานแบบวนซ้ำตวั ย WHILE … ENDWHILE
WHILE <condition>
activity1
ENDWHILE
การทํางานแบบวนซ้ำด้วย WHILE จะมีการตรวจสอบเงือ่ นไขก่อน โดยหากเงือ่ นไข เป็นจริง จะ
ทํา activity ภายในลูปซ้ําไปเรื่อย ๆ จนกระทั่งเงื่อนไขเป็นเท็จ จึงจะออกจากรูป แต่หากเงื่อนไขที่
ตรวจสอบครัง้ แรกเป็นเทจ็ กจ็ ะไมม่ กี ารทํางานเกดิ ข้ึนเลย
ตวั อย่าง 2.6 รหัสเทยี ม WHILE … ENDWHILE
N=0 วิชาหลกั การเขยี นโปรแกรม รหัสวิชา 20204-2004
WHILE N<10
N=N+1
UNTIL
หน่วยที่ 2 อลั กอรทิ ึมและการเขยี นโปรแกรม 14
จากตัวอย่าง ในตอนแรกค่าของ N เป็น 0 พอเริ่มทํางานในลูป จะทําการตรวจสอบ ก่อนว่า N
น้อยกวา่ 10 หรือไม่ ถ้าใช่ N จะถกู บวกเพิม่ ทลี ะ 1 และกลับมาตรวจสอบเงอ่ื นไข ใหม่จนกระท่งั เงอ่ื นไข
ผดิ จึงจบการทํางาน คา่ ของ N จงึ เท่ากบั 10
การทํางานแบบวนซ้ำด้วย FOR ENDFOR
FOR <var>=<start> to <stop>
activity1
ENDFOR
การทํางานแบบวนซํา้ ดว้ ย FOR จะมีจาํ นวนรอบการทํางานที่แนน่ อน โดยกาํ หนด จาก 4 var ว่า
มีคา่ เร่ิมตน้ เปน็ อะไรและค่าสุดทา้ ยเปน็ อะไร เช่น I = 1 to 10 ก็จะทาํ งาน 10 รอบ ดงั นนั้ การใช้ FOR จงึ
จาํ เป็นตอ้ งรจู้ าํ นวนรอบในการทาํ งานทีแ่ นน่ อนจึงจะใช้ได้
วชิ าหลักการเขียนโปรแกรม รหัสวิชา 20204-2004
หนว่ ยท่ี 2 อัลกอริทึมและการเขยี นโปรแกรม 15
ใบสงั่ งาน 2.1 อัลกอริทมึ และการเขียนโปรแกรม
คำสั่ง : ให้นกั เรียนแบ่งกลุ่ม กลมุ่ ละ 5 คน แลว้ ทำการศกึ ษาเนื้อหาจากเอกสารประกอบการ
สอน หน่วยที่ 2 อัลกอริทึมและการเขียนโปรแกรม และช่วยกันสรุปเนื้อหาโดยทำเป็นแผนผังความคิด
Mine Mapping โดยใชโ้ ปรแกรม PowerPoint หรอื กระดาษ A4
เกณฑ์การประเมนิ
รายการประเมิน ระดบั คะแนน หมายเหตุ
321
1. ความเหมาะสมบทบาทการนำเสนอ
2. ความถกู ต้อง ข้อมูล สาระ ความรู้
3. สว่ นประกอบอ่ืน ๆ และความคิดริเรม่ิ สรา้ งสรรค์
คะแนนรวม
หมายเหตุ ไดค้ ะแนน 6 คะแนนข้นึ ไป จงึ จะถือว่าผ่านเกณฑ์
ประเดน็ การประเมิน
ประเดน็ เกณฑ์การให้คะแนน /ระดบั คณุ ภาพ
3 21
1. ความเหมาะสม แสดงบทบาทเหมาะสม แสดงบทบาทเหมาะสม แสดงบทบาท
บทบาทการนำเสนอ เสียงดังฟงั ชดั มีลีลา เสียงดงั ปานกลาง มี เหมาะสม เสยี งเบา
ประกอบ ลีลาประกอบบา้ ง ลลี าประกอบ
คอ่ นขา้ งนอ้ ย
2. ความถูกต้อง ขอ้ มูล เนอ้ื หาสาระถูกตอ้ ง เนอื้ หาสาระถกู ต้องเป็น เนอื้ หาสาระถูกต้อง
สาระ ความรู้ ครบถ้วน สว่ นมาก เป็นสว่ น้อย
3. สว่ นประกอบอืน่ ๆ รปู แบบของสือ่ ทำมาได้ รปู แบบของส่อื ทำมาได้ รูปแบบของสือ่ ทำ
และความคิดรเิ รม่ิ สวยงาม เนือ้ หา สวยงาม เนอื้ หานอ้ ย มาได้สวยงาม
สร้างสรรค์ ครอบคลมุ สมบรู ณ์ เนื้อหานอ้ ยเกินไป
วชิ าหลักการเขยี นโปรแกรม รหสั วิชา 20204-2004
หนว่ ยที่ 2 อลั กอริทึมและการเขียนโปรแกรม 16
ใบส่งั งาน 2.2 อัลกอรทิ ึมและการเขยี นโปรแกรม
คำสั่ง : จงตอบคำถามตอ่ ไปนใ้ี หไ้ ดใ้ จความที่สมบรู ณ์
1. จงบอกหลักการเป็นเขยี นโปรแกรม ประกอบด้วยอะไรบ้าง
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
2. จุดประสงค์ของการวิเคราะหง์ านประกอบไปดว้ ยอะไรบา้ ง
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
3. จงอธบิ ายความหมายของอลั กอรทิ ึม
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
4. จงอธิบายความหมายของรหัสเทยี ม
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
5. จงบอกประโยชน์ของรหสั เทียม
...............................................................................................................................................................
...............................................................................................................................................................
...............................................................................................................................................................
..............................................................................................................................................................
วชิ าหลักการเขียนโปรแกรม รหสั วิชา 20204-2004
หน่วยท่ี 2 อัลกอรทิ ึมและการเขยี นโปรแกรม 17
แบบทดสอบหลงั เรยี น
หนว่ ยท่ี 2 อลั กอรทิ ึมและการเขยี นโปรแกรม
คำสัง่ ช้ีแจง : 1. แบบทดสอบฉบับบน้เี ป็นแบบปรนัยชนดิ เลอื กตอบ 4 ตัวเลอื ก จำนวน 10 ขอ้
ขอ้ ละ 1 คะแนน
2. ให้เลือกคำตอบทถี่ ูกต้องท่ีสุดเพยี งขอ้ เดียว แล้วทำเครื่องหมายกากบาท (X) ลงใน
กระดาษคำตอบ
3. เวลาท่ีใช้ในการทำแบบทดสอบ 10 นาที
1. ขอ้ ใดไม่ใช่หลักการของการเขยี นโปรแกรม
ก. ข้ันวเิ คราะห์งาน
ข. ขั้นดำเนินการเขยี นโปรแกรม
ค. ทดสอบและแก้ไขโปรแกรม
ง. แนะนำการใขง้ าน
2. ข้อใดไม่ใช่การออกแบบลำดบั ข้นั ตอนสำหรบั โปรแกรม
ก. การเขียนเป็นอัลกอรทิ มึ
ข. ผังงาน
ค. เขยี นโปรแกรม
ง. รหัสเทยี ม
3. การเขยี นโปรแกรมแล้วก็จะตอ้ งดำเนนิ การในการทดสอบและแกไ้ ขโปรแกรมอยใู่ นข้นั ตอนใด
ก. ทดสอบและแกไ้ ขโปรแกรม
ข. ดำเนนิ การเขียนโปรแกรม
ค. ขั้นวเิ คราะห์งาน
ง. การออกแบบลำดบั ข้ันตอน
วิชาหลกั การเขยี นโปรแกรม รหัสวิชา 20204-2004
หนว่ ยที่ 2 อลั กอรทิ มึ และการเขียนโปรแกรม 18
4. การวิเคราะหง์ านนยิ มแบง่ ออกเป็นกี่หวั ข้อ
ก. 3 ข้อ
ข. 4 ขอ้
ค. 5 ข้อ
ง. 6 ข้อ
5. การพิจารณารปู แบบให้คอมพิวเตอรแ์ สดง อยใู่ นขนั้ ตอนใด
ก. สิ่งทตี่ ้องการ
ข. รปู แบบผลลัพธ์
ค. ขอ้ มูลนำเข้า
ง. วิธีการประมวลผล
6. ข้อใดอธบิ ายความหมายของอัลกอริทมึ ได้ถกู ตอ้ งทสี่ ุด
ก. ลำดับการประมวลผล
ข. การประมวลผล
ค. การประมวลผลในการแกป้ ญั หาใดปญั หาหน่ึง
ง. การเรยี งลำดับของปัญหา
7. ข้อใดไมใ่ ชห่ ลักการเขยี นอัลกอรทิ ึม
ก. เรียงลำดบั ความสำคญั ของงานทจ่ี ะทำ
ข. เขยี นออกมาในลกั ษณะภาษาเขียนเขา้ ใจงา่ ย
ค. มีความสะเอยี ดของโครงสร้าง
ง. มีการแก้ปญั หาอยา่ งเป็นข้ันตอน
วชิ าหลักการเขยี นโปรแกรม รหสั วิชา 20204-2004
หน่วยท่ี 2 อัลกอรทิ มึ และการเขียนโปรแกรม 19
8. ขอ้ ใดความหมายของการเขียนรหัสเทียม
ก. การเขียนโปรแกรม
ข. การเขยี นคำอธยิ ายการทำงานโปรแกรมด้วยถอ้ ยคำ
ค. การเขยี นคำอธิบายการทำงานโปรแกรมดว้ ยสัญลักษณ์
ง. การอธิบายลำดบั การทำงานของโปรแกรม
9. ประโยคคำส่ังสำหรับการอา่ น รบั ขอ้ มลู คือข้อใด
ก. input/Output
ข. Print
ค. IF
ง. For
10. ประโยคคำสั่งสำหรับการพมิ พค์ า่ ขอ้ มูลหรือขอ้ ความคือขอ้ ใด
ก. input/Output
ข. Print
ค. IF
ง. For
วชิ าหลักการเขียนโปรแกรม รหัสวิชา 20204-2004
หนว่ ยที่ 2 อลั กอรทิ มึ และการเขียนโปรแกรม 20
ใบกระดาษคำตอบ
หลกั การเขยี นโปรแกรมภาษา C
ชื่อ.....................................นามสกลุ ................................ระดับชั้น.............กลุ่ม.........เลขที่..................
ข้อ ก ข ค ง ผล
1
2
3
4
5
6
7
8
9
10
คะแนนทท่ี ำได้
เกณฑ์การประเมนิ 70 เปอรเ์ ซ็นต์ ลงช่อื ..........................................ผู้ตรวจ
ทำได้ 7-10 คะแนน ผ่านเกณฑ์ (.........................................)
สรปุ ผล ผา่ นเกณฑ์ ........../................/..........
ไม่ผ่านเกณฑ์
วชิ าหลกั การเขียนโปรแกรม รหสั วิชา 20204-2004
หนว่ ยท่ี 2 อัลกอริทมึ และการเขยี นโปรแกรม 21
วิชาหลกั การเขยี นโปรแกรม รหัสวิชา 20204-2004