บทท หล กพ นฐานในการเข ยนโปรแกรม กระบวนการเข ยนโปรแกรม (Programming process) ส าหร บผ ไม เคยเข ยนโปรแกรมมาก อน แนวค ดแบบด งเด มแบบหน งท เร ยกว า กระบวน การเข ยนโปรแกรม จ ดเป นแนวค ดท เข าใจได ง าย แนวค ดน เป นกระบวนการแก ป ญหาโดยใช การ เข ยนโปรแกรม ซ งประกอบด วยก จกรรมต าง ๆ ด งน. การน ยามป ญหา (problem definition). การเตร ยมอ ลกอร ท ม (algorithm). การเตร ยมผ งงานโปรแกรม (program flowchart). การเข ยนโปรแกรม (coding). การตรวจแก ข อผ ดพลาด (debugging) และการทดสอบ (testing) 6. การจ ดท าเอกสาร (documenting) ก จกรรมเหล าน แสดงในร ปท. การด าเน นก จกรรม ถ ง ต องม การตรวจสอบแต ละข นตอนจน ม นใจจ งจะด าเน นก จกรรมถ ดไป แต บางกรณ อาจม การท าย อนข นตอน หากพบป ญหาท ไม คาดค ด มาก อน ส วนก จกรรม 6 เป นการบ นท กว าได ท าอะไรไปบ างในก จกรรม ถ ง โดยท าขนานไปก บ ก จกรรมท ง น การน ยามป ญหา การเตร ยมอ ลกอร ท ม การเตร ยมผ งงานโปรแกรม การจ ดท าเอกสาร การเข ยนโปรแกรม การตรวจแก ข อผ ดพลาดและการทดสอบ ร ปท. กระบวนการเข ยนโปรแกรม
บทท หล กพ นฐานในการเข ยนโปรแกรม ต วอย างท. : การน บ ก าหนดให ม ต วเลขหน งช ด ต องการทราบว าม ต วเลขอย ก ต ว เช น ถ าช ดต วเลขเป น 6 และ พบว าม ต วเลข ต ว การหาค าตอบของป ญหาน ท าโดยใช กระบวนการเข ยน โปรแกรมด งน. การน ยามป ญหา การน ยามป ญหาเร มจากการก าหนดว าผลล พธ ท ต องการค ออะไร ซ งต องเข ยนไว อย างช ดเจน ด งน ก าหนดต วเลขให หน งช ด ให หาว าม ต วเลขท งหมดก ต ว หล งจากทราบว าผลล พธ ท ต องการค ออะไรแล ว จ งไปก าหนดร ปแบบของผลล พธ เราต องพ จารณาว าข อม ลม การจ ดเก บอย างไรจ งจะเหมาะต อการประมวลผล ซ งข อม ลเข าส าหร บ ป ญหาน อาจก าหนดให เก บอย ในแฟ มท ระเบ ยนแต ละระเบ ยนประกอบด วยฟ ลด หน งฟ ลด ค อ ฟ ลด ช อ NUMBER. การเตร ยมอ ลกอร ท ม การเข ยนอ ลกอร ท ม เป นการเข ยนล าด บของข นตอนเพ อส งคอมพ วเตอร ท างานให ตามต องการ ภายใต ข อจ าก ดความสามารถของคอมพ วเตอร ด งน คอมพ วเตอร ม ความสามารถในการค านวณทางคณ ตศาสตร ปกต ม กจ าก ดอย แค การบวก ลบ ค ณ และหาร คอมพ วเตอร ม ความสามารถในการเปร ยบเท ยบค าสองค า ผลจากการเปร ยบเท ยบจะเป น ทางเล อกในการท าค าส งอ นต อไป คอมพ วเตอร ม ความสามารถในการเคล อนย ายข อม ลในหน วยความจ า (memory) ของม น ซ งหน วยความจ าเป นส วนประกอบส วนหน งของคอมพ วเตอร ท ใช เก บข อม ลและค าส ง คอมพ วเตอร ม ความสามารถในการร บข อม ลเข า (อ านข อม ลเข าไปเก บไว ในหน วยความ จ า) และแสดงผล (น าผลล พธ ออกจากหน วยความจ าไปแสดงผลออกทางอ ปกรณ แสดง ผล) อ ลกอร ท มเร มต น ถ าต องการให คอมพ วเตอร ท าการน บต องม การใช เน อท ในหน วยความจ าของคอมพว เตอร ส าหร บเก บผลการน บ เร ยกว า ต วน บ ไว และท าการน บ โดย บวก เข าก บต วน บ ท กคร งท ม ต ว เลข
เร ยบเร ยงโดย อ.พ เชษฐ ศ ร ร ตนไพศาลก ล ภายใต ข อสมม ต ว าคอมพ วเตอร จะร บข อม ลต วเลขคร งละต ว แล วจ งไปท าการน บ โดยการ เพ มค าต วน บ หล งจากน นต องกล บไปร บข อม ลต วเลขใหม ท าการประมวลผลต วเลขเช นน ไปเร อย ๆ จนกว าจะหมดข อม ล ตามอ ลกอร ท ม ด งน. อ านต วเลข ถ าอ านไม ได (ต วเลขหมด) ให ไปท ข นตอนท. บวก เข าก บต วน บ และไปข นตอนท. พ มพ ค าต วน บ ล าด บการท างานของอ ลกอร ท มปกต ท าจากบนลงล าง ตามอ ลกอร ท มน ล าด บการท างาน เป น หากไม ม การส งให กระโดด (branch) หร อ การส งการควบค มไปย งข นตอนอ น ต วอย าง เช น หากเง อนไขในข นตอนท เป นจร ง กล าวค อ อ านต วเลขไม ได (ต วเลขหมด) ล าด บการท างาน จะกระโดดไปข นตอนท โดยข ามข นตอนท การปร บอ ลกอร ท ม การท างานตามอ ลกอร ท มเร มต นท กล าวมาอาจพบป ญหา เน องจากเราไม ร ว า เม อเร มต น ท างาน ต วน บม ค าเร มต นเป นเท าใด อ ลกอร ท มน อย ภายใต ข อสมมต ว า เม อเร มต นท างานต วน บม ค าเป น แต ในการท างานจร งของเคร อง เม อเร มต นท างาน ค าต วน บอาจไม เป น ก ได ซ งจะท าให ผลล พธ ท ได ไม ถ กต องตามท ต องการ ด วยเหต น ในการเข ยนอ ลกอร ท มพ งระล กเสมอว า อะไรท จะ เก ดข นได ต องพยายามป ดก นให หมด โดยปกต การเข ยนโปรแกรม เราจะพยายามเดาป ญหาท จะ เก ดล วงหน า และพยายามหาว ธ ท จะหล กเล ยงป ญหาเหล าน ด งน นในป ญหาน จ งต องม การก าหนด ค าเร มต นของต วน บให เป น ซ งท าให ต องปร บอ ลกอร ท มใหม ด งน. ก าหนดค าต วน บเป น. อ านต วเลข ถ าอ านไม ได (ต วเลขท งหมด) ให ไปท ข นตอนท. บวก เข าก บต วน บ และไปข นตอนท. พ มพ ค าต วน บ นอกจากน การท างานในข นตอนท ม การท างานสองงาน ค อ การอ านและการต ดส นใจ ซ งควรเข ยนแยกข นตอน เพราะการเข ยนโปรแกรม โดยใช ภาษาคอมพ วเตอร บางภาษาไม สามารถ ท าในค าส งเด ยวก นได จ งต องม การปร บอ ลกอร ท มใหม อ กคร ง ด งน. ก าหนดค าต วน บเป น. อ านต วเลข. ถ าอ านไม ได (ต วเลขหมด) ให ไปท ข นตอนท. บวก เข าก บต วน บ และไปข นตอนท. พ มพ ค าต วน บ 6. หย ด
บทท หล กพ นฐานในการเข ยนโปรแกรม การตรวจสอบอ ลกอร ท ม ก อนท จะท าก จกรรมอ นต อไป เราต องท าการตรวจสอบอ ลกอร ท ม เพ อให แน ใจว าอ ลกอร ท มท างานได ถ กต อง ว ธ การตรวจสอบท าโดยสมมต ข อม ลข นหน งช ด แล วน าข อม ลไป ประมวลผลผ านอ ลกอร ท มท สร างข น ในการตรวจสอบน สมมต ต วเลขท ใช ในการตรวจ สอบ ค อ 6 การตรวจสอบได ผลด งตาราง ผลจากการตรวจสอบ พบว า เราได ค าต วน บเป น ซ งเป นค าท ถ กต อง น นค อ อ ลกอร ท มท างานได ถ กต องตามท ต องการ ด วยเหต น เอกสาร อ ลกอร ท มและเอกสารการทดสอบอ ลกอร ท มจ งเป นเอกสารส าค ญช นหน ง
เร ยบเร ยงโดยอ. พ เชษฐ ศ ร ร ตนไพศาลก ล ตารางท. การตรวจสอบอ ลกอร ท มการน บ ล าด บค าส ง 6 ต วเลข 6 6 6 ต วน บ 6 6 6 7 7 7
บทท หล กพ นฐานในการเข ยนโปรแกรม 6. การเตร ยมผ งงานโปรแกรม หล งจากม นใจแล วว าอ ลกอร ท มท างานให ได ถ กต อง ต อไปจะเป นการจ ดเตร ยมผ งงาน โปรแกรม ซ งเป นการแทนอ ลกอร ท มด วยส ญล กษณ ส ญล กษณ ท ใช ในผ งงานโปรแกรมม ด งน ประมวลผล (process) ใช แทนการจ ดการอย างใดอย างหน งก บข อม ล เช นการค านวณทางคณ ตศาสตร การเคล อนย ายข อม ลจากท หน งไปอ กท หน งเป นต น น าเข า/แสดงผล (Input/output) ใช แทนปฏ บ ต การการน าข อม ลเข า หร อแสดงผล การเตร ยม (preparation) ใช แทนการจ ดการการท างานท ไม ใช การจ ด การข อม ล ต วอย างเช น การก าหนดค าเร มต นให ต วน บ การต ดส นใจ (decision) ใช แทนการเปร ยบเท ยบค า ค า ผลจากการ เปร ยบเท ยบ จะได ทางเล อกท จะท าต อไป ปลายทาง (terminal) ใช แทนจ ดเร มต นท างานหร อหย ดท างานของ โปรแกรม จ ดต อ (connector) ใช แทนการออกจากจ ดหน งของโปรแกรม หร อการ เข าส จ ดหน งของโปรแกรม เส นไหล (flowline) ใช ช ล าด บการปฏ บ ต การ ปกต จะเข ยนจากบนลง ล าง และจากซ ายไปขวา ค าอธ บาย (annotation) ใช บรรยายข อส งเกตข นตอนการประมวลผล เพ อให อ านเข าใจง ายข น
เร ยบเร ยงโดย อ.พ เชษฐ ศ ร ร ตนไพศาลก ล 7 START COUNTER ก าหนดค าเร มต นต วน บ READ A RECORD T EOF PRINT COUNTER STOP F COUNTER COUNTER+ ร ปท. ผ งงานโปรแกรมการน บ. การเข ยนโปรแกรม เม อม นใจว าผ งงานโปรแกรมท างานได ตามต องการแล ว งานต อไปค อการเข ยนค าส งเพ อ ส งคอมพ วเตอร โดยควรเข ยนในร ปแบบท ง าย เพ อให ผ อ นสามารถเข าใจได การเข ยนค าส งจะใช ภาษาคอมพ วเตอร ภาษาใดภาษาหน ง โปรแกรมท เข ยนข นจะเร ยกว า ซอสโปรแกรม (source program) จากน นจะใช โปรแกรมการแปล (translation program) แปลซอสโปรแกรมให เป น ออปเจกโปรแกรม (object program) ซ งอย ในร ปเลขฐาน ( ก บ ) ท คอมพ วเตอร สามารถ เข าใจได
บทท หล กพ นฐานในการเข ยนโปรแกรม ตารางท. การตรวจสอบผ งงานโปรแกรมการน บ ล าด บค าส ง NUMBER COUNTER COUNTER READ A RECORD EOF? COUNTER COUNTER+ READ A RECORD EOF? COUNTER COUNTER+ READ A RECORD EOF? COUNTER COUNTER+ READ A RECORD EOF? COUNTER COUNTER+ READ A RECORD EOF? PRINT COUNTER. การตรวจแก ข อผ ดพลาดและการทดสอบโปรแกรม หล งจากตรวจสอบโปรแกรมแล วก ต องป อนเข าเคร อง หากท างานไม ได ตามต องการจะ กล บไปแก ไข ซอสโปรแกรม แปล และทดสอบใหม ท าเช นน จนกว าจะได ผลล พธ ตาม ต องการ 6. การจ ดท าเอกสาร ในการแก ป ญหาต อไป จ งจ าก ดข นตอนอย เพ ยง ข นตอน ค อ. การน ยามป ญหา. การเตร ยมอ ลกอร ท ม. ข อม ลเข าและผลล พธ ทดสอบ. การเตร ยมผ งงานโปรแกรม