กระบวนการเขียนโปรแกรม (Programming process) สําหรับผูไมเคยเขียนโปรแกรมมากอน แนวคิดแบบดั้งเดิมแบบหนึ่งที่เรียกวา กระบวน การเขียนโปรแกรม จัดเปนแนวคิดที่เขาใจไดงาย แนวคิดนี้เปนกระบวนการแกปญหาโดยใชการ เขียนโปรแกรมซึ่งประกอบดวยกิจกรรมตางๆดังนี้ 1. การนิยามปญหา (problem definition) 2. การเตรียมอัลกอริทึม (algorithm) 3. การเตรียมผังงานโปรแกรม (program flowchart) 4. การเขียนโปรแกรม (coding) 5. การตรวจแกขอผิดพลาด (debugging) และการทดสอบ (testing) 6. การจัดทําเอกสาร (documenting) กิจกรรมเหลานี้แสดงในรูปที่ 1.1 การดําเนินกิจกรรม 1 ถึง 5 ตองมีการตรวจสอบแตละขั้นตอนจน มั่นใจจึงจะดําเนินกิจกรรมถัดไป แตบางกรณีอาจมีการทํายอนขั้นตอน หากพบปญหาที่ไมคาดคิด มากอนสวนกิจกรรม 6 เปนการบันทึกวาไดทําอะไรไปบางในกิจกรรม 1 ถึง 5 โดยทําขนานไปกับ กิจกรรมทั้ง 5 นี้ รูปที่ 1.1 กระบวนการเขียนโปรแกรม การนิยามปญหา การเตรียมอัลกอริทึม การตรวจแกขอผิดพลาดและการทดสอบ การเขียนโปรแกรม การเตรียมผังงานโปรแกรม การจัดทําเอกสาร
ตัวอยางที่ 1.1 : การนับ กําหนดใหมีตัวเลขหนึ่งชุดตองการทราบวามีตัวเลขอยูกี่ตัวเชนถาชุดตัวเลขเปน 22 5 –2 0 –6 3 8 –5 และ 18 พบวามีตัวเลข 9 ตัวการหาคําตอบของปญหานี้ทําโดยใชกระบวนการเขียน โปรแกรมดังนี้ 1. การนิยามปญหา การนิยามปญหาเริ่มจากการกําหนดวาผลลัพธ ที่ตองการคืออะไร ซึ่งตองเขียนไวอยางชัดเจน ดังนี้ กําหนดตัวเลขใหหนึ่งชุด ใหหาวามีตัวเลขทั้งหมดกี่ตัว หลังจากทราบวาผลลัพธที่ตองการคืออะไรแลวจึงไปกําหนดรูปแบบของผลลัพธ เราตองพิจารณาวาขอมูลมีการจัดเก็บอยางไรจึงจะเหมาะตอการประมวลผล ซึ่งขอมูลเขาสําหรับ ปญหานี้อาจกําหนดใหเก็บอยูในแฟมที่ระเบียนแตละระเบียนประกอบดวยฟลดหนึ่งฟลดคือฟลด ชื่อ NUMBER 2. การเตรียมอัลกอริทึม การเขียนอัลกอริทึม เปนการเขียนลําดับของขั้นตอนเพื่อสั่งคอมพิวเตอรทํางานใหตามตองการ ภายใตขอจํากัดความสามารถของคอมพิวเตอรดังนี้ 9 คอมพิวเตอรมีความสามารถในการคํานวณทางคณิตศาสตร ปกติมักจํากัดอยูแคการบวก ลบคูณและหาร 9 คอมพิวเตอรมีความสามารถในการเปรียบเทียบคาสองคา ผลจากการเปรียบเทียบจะเปน ทางเลือกในการทําคําสั่งอื่นตอไป 9 คอมพิวเตอรมีความสามารถในการเคลื่อนยายขอมูลในหนวยความจํา (memory) ของมัน ซึ่งหนวยความจําเปนสวนประกอบสวนหนึ่งของคอมพิวเตอรที่ใชเก็บขอมูลและคําสั่ง 9 คอมพิวเตอรมีความสามารถในการรับขอมูลเขา (อานขอมูลเขาไปเก็บไวในหนวยความ จํา) และแสดงผล (นําผลลัพธออกจากหนวยความจําไปแสดงผลออกทางอุปกรณแสดง ผล) อัลกอริทึมเริ่มตน ถาตองการใหคอมพิวเตอรทําการนับตองมีการใชเนื้อที่ในหนวยความจําของคอมพวิเตอร สําหรับเก็บผลการนับเรียกวา ตัวนับ ไวและทําการนับโดย “บวก 1 เขากับตัวนับ” ทุกครั้งที่มีตัว เลข
ภายใตขอสมมุติวาคอมพิวเตอรจะรับขอมูลตัวเลขครั้งละตัว แลวจึงไปทําการนับ โดยการ เพิ่มคาตัวนับ หลังจากนั้นตองกลับไปรับขอมูลตัวเลขใหม ทําการประมวลผลตัวเลขเชนนี้ไปเรื่อย ๆจนกวาจะหมดขอมูลตามอัลกอริทึมดังนี้ 1. อานตัวเลขถาอานไมได (ตัวเลขหมด) ใหไปที่ขั้นตอนที่ 3 2. บวก 1 เขากับตัวนับและไปขั้นตอนที่ 1 3. พิมพคาตัวนับ ลําดับการทํางานของอัลกอริทึมปกติทําจากบนลงลาง ตามอัลกอริทึมนี้ ลําดับการทํางาน เปน 1-2-3 หากไมมีการสั่งใหกระโดด (branch) หรือ การสงการควบคุมไปยังขั้นตอนอื่น ตัวอยาง เชนหากเงื่อนไขในขั้นตอนที่ 1 เปนจริง กลาวคืออานตัวเลขไมได (ตัวเลขหมด) ลําดับการทํางาน จะกระโดดไปขั้นตอนที่ 3 โดยขามขั้นตอนที่ 2 การปรับอัลกอริทึม การทํางานตามอัลกอริทึมเริ่มตนที่กลาวมาอาจพบปญหา เนื่องจากเราไมรูวา เมื่อเริ่มตน ทํางาน ตัวนับมีคาเริ่มตนเปนเทาใด อัลกอริทึมนี้อยูภายใตขอสมมติวา เมื่อเริ่มตนทํางานตัวนับมี คาเปน 0 แตในการทํางานจริงของเครื่องเมื่อเริ่มตนทํางานคาตัวนับอาจไมเปน 0 ก็ไดซึ่งจะทําให ผลลัพธที่ไดไมถูกตองตามที่ตองการ ดวยเหตุนี้ ในการเขียนอัลกอริทึมพึงระลึกเสมอวา อะไรที่จะ เกิดขึ้นได ตองพยายามปดกันใหหมด โดยปกติการเขียนโปรแกรม เราจะพยายามเดาปญหาที่จะ เกิดลวงหนาและพยายามหาวิธีที่จะหลีกเลี่ยงปญหาเหลานี้ ดังนั้นในปญหานี้จึงตองมีการกําหนด คาเริ่มตนของตัวนับใหเปน 0 ซึ่งทําใหตองปรับอัลกอริทึมใหมดังนี้ 1. กําหนดคาตัวนับเปน 0 2. อานตัวเลขถาอานไมได (ตัวเลขทั้งหมด) ใหไปที่ขั้นตอนที่ 4 3. บวก 1 เขากับตัวนับและไปขั้นตอนที่ 2 4. พิมพคาตัวนับ นอกจากนี้ การทํางานในขั้นตอนที่ 2 มีการทํางานสองงาน คือ การอานและการตัดสินใจ ซึ่งควรเขียนแยกขั้นตอน เพราะการเขียนโปรแกรม โดยใชภาษาคอมพิวเตอรบางภาษาไมสามารถ ทําในคําสั่งเดียวกันไดจึงตองมีการปรับอัลกอริทึมใหมอีกครั้งดังนี้ 1. กําหนดคาตัวนับเปน 0 2. อานตัวเลข 3. ถาอานไมได (ตัวเลขหมด) ใหไปที่ขั้นตอนที่ 5 4. บวก 1 เขากับตัวนับและไปขั้นตอนที่ 2 5. พิมพคาตัวนับ 6. หยุด
การตรวจสอบอัลกอริทึม กอนที่จะทํากิจกรรมอื่นตอไป เราตองทําการตรวจสอบอัลกอริทึม เพื่อใหแนใจวาอัลกอริ ทึมทํางานไดถูกตอง วิธีการตรวจสอบทําโดยสมมติขอมูลขึ้นหนึ่งชุด แลวนําขอมูลไป ประมวลผลผานอัลกอริทึมที่สรางขึ้น ในการตรวจสอบนี้ สมมติตัวเลขที่ใชในการตรวจ สอบคือ 22 5 –2 0 –6 3 8 –5 18 การตรวจสอบไดผลดังตาราง ผลจากการตรวจสอบ พบวา เราไดคาตัวนับเปน 9 ซึ่งเปนคาที่ถูกตองนั่นคืออัลกอริทึมทํางานไดถูกตองตามที่ตองการดวยเหตุนี้เอกสาร อัลกอริทึมและเอกสารการทดสอบอัลกอริทึมจึงเปนเอกสารสําคัญชิ้นหนึ่ง
ตารางที่ 1.1 การตรวจสอบอัลกอริทึมการนับ ลําดับคําสั่ง 1 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 5 6 ตัวเลข -22 22 22 5 5 5 -2 -2 -2 0 0 0 -6 -6 -6 3 3 3 8 8 8 -5 -5 -5 18 18 18 -ตัวนับ 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 9 9
3. การเตรียมผังงานโปรแกรม หลังจากมั่นใจแลววาอัลกอริทึมทํางานใหไดถูกตอง ตอไปจะเปนการจัดเตรียมผังงาน โปรแกรมซึ่งเปนการแทนอัลกอริทึมดวยสัญลักษณสัญลักษณที่ใชในผังงานโปรแกรมมีดังนี้ ประมวลผล (process) ใชแทนการจัดการอยางใดอยางหนึ่งกับขอมูล เชนการคํานวณทางคณิตศาสตร การเคลื่อนยายขอมูลจากที่หนึ่งไปอีกที่ หนึ่งเปนตน นําเขา/แสดงผล (Input/output) ใชแทนปฏิบัติการการนําขอมูลเขา หรือแสดงผล การเตรียม (preparation) ใชแทนการจัดการการทํางานที่ไมใชการจัด การขอมูลตัวอยางเชนการกําหนดคาเริ่มตนใหตัวนับ การตัดสินใจ (decision) ใชแทนการเปรียบเทียบคา 2 คา ผลจากการ เปรียบเทียบจะไดทางเลือกที่จะทําตอไป ปลายทาง (terminal) ใชแทนจุดเริ่มตนทํางานหรือหยุดทํางานของ โปรแกรม จุดตอ (connector) ใชแทนการออกจากจุดหนึ่งของโปรแกรม หรือการ เขาสูจุดหนึ่งของโปรแกรม เสนไหล (flowline) ใชชี้ลําดับการปฏิบัติการ ปกติจะเขียนจากบนลง ลางและจากซายไปขวา คําอธิบาย (annotation) ใชบรรยายขอสังเกตขั้นตอนการประมวลผล เพื่อใหอานเขาใจงายขึ้น
START
COUNTER 0 กําหนดคาเริ่มตนตัวนับ
1
READ A RECORD
EOF PRINT COUNTER STOP F COUNTER COUNTER+1 1 รูปที่ 1.2 ผังงานโปรแกรมการนับ 4. การเขียนโปรแกรม เมื่อมั่นใจวาผังงานโปรแกรมทํางานไดตามตองการแลว งานตอไปคือการเขียนคําสั่งเพื่อ สั่งคอมพิวเตอรโดยควรเขียนในรูปแบบที่งาย เพื่อใหผูอื่นสามารถเขาใจได การเขียนคําสั่งจะใช ภาษาคอมพิวเตอรภาษาใดภาษาหนึ่ง โปรแกรมที่เขียนขึ้นจะเรียกวา ซอสโปรแกรม (source program) จากนั้นจะใช โปรแกรมการแปล (translation program) แปลซอสโปรแกรมใหเปน
ออปเจกโปรแกรม (object program) ซึ่งอยูในรูปเลขฐาน 2 (0 กับ 1) ที่คอมพิวเตอรสามารถ เขาใจได
ตารางที่ 1.2 การตรวจสอบผังงานโปรแกรมการนับ ลําดับคําสั่ง NUMBER COUNTER COUNTER 0 - 0 READ A RECORD 22 0 EOF? 22 0 COUNTER COUNTER+1 22 1 READ A RECORD 5 1 EOF? 5 1 COUNTER COUNTER+1 5 2 READ A RECORD -2 2 EOF? -2 2 COUNTER COUNTER+1 -2 3 | | | | | | READ A RECORD 18 8 EOF? 18 8 COUNTER COUNTER+1 18 9 READ A RECORD - 9 EOF? - 9 PRINT COUNTER - 9 5. การตรวจแกขอผิดพลาดและการทดสอบโปรแกรม หลังจากตรวจสอบโปรแกรมแลวก็ตองปอนเขาเครื่อง หากทํางานไมไดตามตองการจะ กลับไปแกไขซอสโปรแกรม แปล และทดสอบใหม ทําเชนนี้จนกวาจะไดผลลัพธตาม ตองการ 6. การจัดทําเอกสาร ในการแกปญหาตอไปจึงจํากัดขั้นตอนอยูเพียง 4 ขั้นตอนคือ 1. การนิยามปญหา 2. การเตรียมอัลกอริทึม 3. ขอมูลเขาและผลลัพธทดสอบ 4. การเตรียมผังงานโปรแกรม