บทที่ 1 ระบบการเขียนโปรแกรม ในโลกของคอมพิวเตอร ส่ิงที่ใกลตัวระหวางการทํางาน การเรียนรู มักมีระบบระเบียบ จัดการเปนข้ันเปนตอนเกิดเปนกระบวนการทํางานข้ึนมาในหมูนักเขียนโปรแกรมเราจะพบวา ภาษาคอมพิวเตอรในโลกนี้มีมากมายใหเลือกใชเลือกที่นํามาเขียนตามความถนัดและความชอบ ซ่งึ การเขยี นโปรแกรมแนน อนวาตอ งคาํ นึงถึงความเปนกฎ ความเปน เง่ือนไขในเชิงใหเกิดรูปธรรม ขน้ึ มาทง้ั นีก้ เ็ พื่อใหเครือ่ งคอมพิวเตอรท เ่ี ปน อุปกรณอ เิ ลก็ ทรอนิกสประเภทหนงึ่ ซ่งึ การท่ีจะทําให เครื่องคอมพวิ เตอรทํางานนัน้ เราตองปอนชดุ คําสัง่ ท่ีเครือ่ งคอมพวิ เตอรเขาใจและแปลผลได โปรแกรมภาษาคอมพวิ เตอร ตามความหมายของโปรแกรม คอื สว นของคําสง่ั ที่นํามาเรียงตอกัน เกิดกระบวนงานและมี ความหมายของระบบปฏิบัตงิ านข้ึนอยางใดอยางหน่ึงอยา งชดั เจน แลว เมอื่ นําเอาเคร่ืองคอมพิวเตอร มาทํางานตามคําสงั่ ท่เี ราวางตอ ๆ กนั ไวทีละคําสั่ง และการที่จะสั่งใหเคร่ืองคอมพิวเตอรทํางานให น้ันจะตองใชภาษาที่คอมพิวเตอรเขาใจโดยภาษาท่ีเครื่องคอมพิวเตอรเขาใจคือ “ภาษาเคร่ือง (Machine Language)” ซง่ึ ทาํ งานเปนระบบไฟฟาสญั ญาณไฟฟา คือ 0 และ 1 บางครั้งเราเรียกวา รหัสเลขฐานสอง เมื่อมีการปอนรหัสเลขฐานสองเขาไปในตัวเครื่องคอมพิวเตอรเคร่ืองก็สามารถรู และเขา ใจไดท ันทวี า เปนคําสั่งอะไร 01010100 10001100 10101001 11101111 10001100 10001011 00101100 11101011 10110001 11001011 10101110 00101011 รูปที่ 1.1 แสดงรหสั ของภาษาเครอ่ื ง
2 การเขยี นโปรแกรมเชิงโครงสรางดว ยภาษาซี แตดวยเปนภาษารหัสเลขฐานสองท่ีออกแบบยากมากและใชเวลา และดวยเปนภาษาท่ี เขาใจยากในมนุษยปถุ ุชนจงึ ไดมีการคิดคนภาษาใหม ๆ ท่ีเปนคําส้ัน ๆ ในรูปของภาษาอังกฤษแทน รหัสเลขฐานสองเราเรียกวา “ภาษาแอสเซมบลี (Assembly Language)” ดวยคุณสมบัติขอนี้จึง ทําใหทํางานไดเร็วเพราะมีการประมวลผลไดเร็วที่สุด บางครั้งเราอาจเรียกภาษาเครื่องนี้วา “ภาษาระดบั ตาํ่ ” cseg segment assume cs:cseg,ds:cseg push ds pop cs jmp start mssge db 'x',0dh,0ah,'B' start: mov bh,09h lea bx,mssge int 11h mov ah,01h int 11h jmp start cseg ends end รูปท่ี 1.2 แสดงรหัสของภาษาแอสเซมบลี แตเน่ืองดว ยจากคาํ สั้น ๆ มนษุ ยก็ยังส่ือสารกันไดไ มเ ต็มที่และไมครอบคลุม ดังน้ัน จงึ ไดสรางชดุ คําส่ังท่ีสื่อสารกันอยางคลองตัวและเขาใจความหมายใกลเคียงกับภาษามนุษย เปนภาษาคอมพิวเตอรหลายภาษาขึ้นมา เรามักเรียกวา “ภาษาระดับสูง (High level Language)” ดังน้ัน ภาษาระดับสูง เปนภาษาที่ใชงายกวาภาษาสัญลักษณ โดยผูคิดคน ภาษาคอมพวิ เตอรระดบั สูงไดออกแบบ คาํ สัง่ รูปแบบ ไวยากรณ และกฎเกณฑขอ กําหนดตาง ๆ ออกมาใหกระชับรัดกุม สามารถจาํ ไดง าย ภาษาระดับสูงน้ียังอาจจะแบงออกไดเปนหลาย
ระบบการเขยี นโปรแกรม 3 ประเภท เชน ประเภทที่เหมาะกับงานวิทยาศาสตรและออกแบบเชิงวิศวกรรมศาสตรไดแก ภาษาเบสิก, ภาษาฟอรแทรน, ภาษาปาสคาล, ภาษาซี, ภาษาจาวา สําหรับภาษาประเภทที่ เหมาะกับงานธุรกิจไดแกภาษา อารพีจี, ภาษาโคบอล ทั้งน้ีโปรแกรมที่สรางขึ้นจากนักเขียน โปรแกรมท่เี ลือกภาษาระดบั สงู น้จี ะตอ งใชตัวแปลภาษาแปลเพื่อใหเปนโปรแกรมภาษาเครื่อง กอ น คอมพวิ เตอรจ งึ จะเขาใจและทํางานใหได ตัวอยางโปรแกรมที่เขียนดวยภาษาซี แสดงได ดังรูปที่ 1.3 #include \"stdio.h\" main() { float r , area, circum ; printf(“Input Radias =>”);scanf(\" %f\", &r) ; area = 3.1415926 * r * r ; circum = 2 *3.1415926 * r ; printf (\" Area = %0.2f , area); printf(“Circumference = %0.2f \",circum); } รูปที่ 1.3 แสดงรหสั ของภาษาระดับสูง ตวั แปลภาษา ในการเขียนโปรแกรมคอมพิวเตอรไมวาจะเปนภาษาคอมพิวเตอรระดับสูงหรือ ภาษาคอมพิวเตอรระดับต่ํา เราจะตองทําการแปลงภาษาคอมพิวเตอรเหลาน้ันใหเปนรหัส ภาษาเครื่องคอมพิวเตอรใหเขาใจเปนอันดับแรก คอมพิวเตอรจึงจะทํางานได เพราะ ภาษาคอมพิวเตอรเปนการนําชุดคําสั่งแตละคําส่ังมาเรียงตอกันอยางมีความห มายเพ่ือให เคร่ืองคอมพิวเตอรไดรับรูและทํางาน การเขียนโปรแกรมในชุดคําสั่งน้ีไมวาจะเขียนดวย ภาษาคอมพวิ เตอรภาษาอะไรเราจะเรียกวา “โปรแกรมตน ฉบบั (Source Program)” หรือ “รหสั ตนฉบบั (Source Code)” จากนนั้ จะตองแปลงใหเปน ภาษาเคร่ืองทีค่ อมพิวเตอรที่ทํางานไดเรา เรยี กขั้นตอนน้ีวา “การเอก ซิค๊วิ โปรแกรม (Executable Program)”
4 การเขยี นโปรแกรมเชงิ โครงสรา งดว ยภาษาซี ตัวอยาง เชน หากเราเขียนโปรแกรมดวยโปรแกรมภาษาแอสเซมบลี (Assembly Language) จะตองใชตัวแปลภาษาใหแปลงเปนภาษาเครื่อง ลักษณะการแปลภาษาแบบนี้เรียกวา “แอสเซมเบอร (Assembler)” ขนั้ ตอนการแปลภาษาคอมพิวเตอรท ําได ดงั รูปที่ 1.4 Source Program Assembler Code Machine (Assembly Language) รูปท่ี 1.4 แสดงขนั้ ตอนการแปลภาษาภาษาแอสเซมบลีใหเปน ภาษาเครื่อง สําหรับการเขียนโปรแกรมดวยภาษาระดับสูงโดยแปลจากตนฉบับโปรแกรม (Source Program) หรือ รหัสตนฉบับ (Source Code) ใหเปนภาษาเคร่ือง (Machine Language) ท่ี สามารถทาํ งานไดทันที สามารถแบงตามลักษณะการแปลออกเปน 2 ประเภท คือ อินเทอร พรีเตอร (Interpreter) และคอมไพเลอร (Compiler) 1. การแปลแบบอินเทอรพรีเตอร (Interpreter) ทําหนาท่ีแปลคําส่ังภาษาที่เขียนดวย ภาษาระดบั สงู ใหเ ปน ภาษาเครอื่ งทลี ะคําสงั่ และทาํ งานตามคําสั่งน้นั ทนั ที กอ นทจี่ ะแปลคาํ สง่ั ตอ ไป จนจบโปรแกรมโดยไมมีการสรางออบเจ็คตโปรแกรม การทํางานของอินเทอรพรีเตอรเร่ิมจาก การอา นโปรแกรมตนฉบับทีละบรรทดั แลว นํามาแปลความหมาย (Compile) ถา ไมพบขอผิดพลาด ก็จะทํางานตามคําส่ังที่แปลได แตถาพบขอผิดพลาดก็จะหยุดและแสดงขอผิดพลาดน้ันออกมา ทันที เพื่อใหผูเขียนโปรแกรมทําการแกไขแลวแปลใหมจนจบโปรแกรม ตัวอยางของภาษาท่ีใช ตัวแปลภาษาประเภท อนิ เทอรพ รเี ตอร (Interpreter) คือ ภาษาเบสิก, ภาษาพเี ฮชพ,ี ภาษาเอเอสพ,ี ภาษาจาวาสครปิ เปนตน ข้ันตอนการแปลภาษาประเภทนีแ้ สดงไดด งั รปู ท่ี 1.5 Source Program Interpreter Machine Language แปลทีละบรรทดั รปู ท่ี 1.5 แสดงขน้ั ตอนการแปลในรูปแบบประเภทของอนิ เทอรพ รเี ตอร
ระบบการเขยี นโปรแกรม 5 2. การแปลแบบคอมไพเลอร (Compiler) ทําหนา ที่ แปลตนฉบับของโปรแกรม (Source Program) ภาษาระดับสูงทั้งโปรแกรมใหเปนรหัสอ็อบเจกต (Object Code) ซ่ึงประกอบดวยภาษา เคร่ืองทม่ี รี หสั สั่งงาน ออ็ บเจกตโ ปรแกรมนีย้ ังไมส ามารถทาํ งานได จะตองผานการลิงค (Link) หรือ รวมเขากับไลบราร่ี (Library) ของระบบกอนจึงจะเปนโปรแกรมท่ีสามารถทํางานไดหรือเปนภาษา เครอ่ื งทีเรียกวา “เอก ซคิ ิว๊ โปรแกรม (Executable Program)” และจะมีขอความแสดงความผิดพลาด ถาประโยคในโปรแกรมน้ันไมถูกตองตามกฎเกณฑของภาษา โดยการแปลนั้นจะทําการแปลหน่ึง ประโยคคําสั่ง (Statement) ของโปรแกรมที่เขยี นดว ยภาษาชนั้ สงู เปนภาษาเครื่องมากกวาหน่ึงคําส่ัง ข้นั ตอนการแปลภาษาประเภทนแ้ี สดงไดดังรปู ท่ี 1.6 Source Program Compiler Machine Language แปลทงั โปรแกรม รปู ท่ี 1.6 แสดงขั้นตอนการแปลในรปู แบบประเภทของคอมไพเลอร เน่ืองจากภาษาเครื่องจะแตกตา งกันไปขนึ้ อยกู ับตวั ประมวลผล ดังนั้นในคอมพิวเตอรท่ีตาง ประเภทกัน เชน เคร่ืองคอมพิวเตอรแบบเมนเฟรม เคร่ืองคอมพิวเตอรแบบมินิคอมพิวเตอร และเครอื่ งคอมพวิ เตอรสวนบุคคล จะตองใชโปรแกรมแปลภาษาคนละตัวกัน แมจะตองการ แปลภาษาเดียวกันก็ตาม การทํางานของคอมไพเลอรเร่ิมจาก การแปลตนฉบับโปรแกรม ท้งั หมดใหเ ปน รหสั ออ็ บเจกตซงึ่ ในระหวางการแปลโปรแกรม ถา พบขอ ผดิ พลาดข้ึน ก็จะแสดง ลกั ษณะความผิดพลาดออกทางหนาจอใหผูเขียนโปรแกรมไดพบเห็น ดังนั้น ผูเขียนโปรแกรม จะตองปรับปรุงแกไ ขสวนทีผ่ ิดพลาดใหถ กู ตอ งกอนที่จะทาํ การแปลโปรแกรมใหมอีกคร้ังจนไมมี และไมพบขอผดิ พลาดแลว จึงจะไดโปรแกรมอ็อบเจกต (Object Program) หลังจากนั้นจะตอง นําเอาโปรแกรมอ็อบเจกตที่ได มาทําการเชื่อมโยงเขากับระบบหรือกับไลบรารี (Library) ซึ่ง เรยี กวาข้ันตอนการลิงค (Link) จึงจะไดผลลัพธออกมาเปนโปรแกรมภาษาเครื่อง (Executable Program) แลวจึงนาํ ภาษาเคร่อื งทไ่ี ดนไี้ ปสั่งใหคอมพิวเตอรทํางาน ตัวอยางของภาษาท่ีใชตัวแปล ภาษาแบบคอมไพเลอร ไดแก คอมไพเลอรภ าษาจาวา คอมไพเลอรภาษาโคบอล, คอมไพเลอร ภาษาซี และคอมไพเลอรภ าษาปาสคาล เปนตน ดังนนั้ ขอ แตกตา งระหวางคอมไพเลอรกบั อนิ เทอรพรเี ตอรจึงอยทู กี่ ารแปลท้งั โปรแกรม หรือแปลทีละคาํ สงั่ นนั่ เอง
6 การเขียนโปรแกรมเชิงโครงสรา งดว ยภาษาซี ข้ันตอนการพฒั นาโปรแกรมคอมพิวเตอร ในการพฒั นาโปรแกรมและการเขยี นโปรแกรมเปนงานสรา งสรรครูปแบบประเภทหนึ่ง และ เปน งานทจ่ี าํ เปน ตองวิเคราะหว างแผนเปน อยางดี จงึ จะทาํ ใหผลงานท่อี อกมามีประสิทธิภาพตรง กับความตอ งการ โดยผเู ขยี นโปรแกรมนัน้ ตองรขู อจํากดั วา จะใหโปรแกรมท่ีเขียนไปทําอะไร อีก ทัง้ คาํ นึงถึงขอมลู อะไรท่ตี อ งปอนใหก ับเคร่ืองคอมพวิ เตอรใหทํางานประมวลผลของโปรแกรม ไดอยางไรบาง และตองการผลลัพธอ ะไรจากการทํางานโปรแกรม รวมทั้งรูปแบบการแสดงผล ตามชนิดปญ หาของโจทยง านวา ไดแกไ ขไดม ากนอ ยเพยี งใด โดยท่วั ๆ ไป ข้นั ตอนการพัฒนาโปรแกรมคอมพิวเตอรม ขี น้ั ตอนทส่ี าํ คัญดังตอไปนี้ 1. กําหนดและวเิ คราะหปญ หาของงาน 2. ออกแบบโปรแกรมโดยเขยี นผงั งานและรหัสจาํ ลองหรอื ซูโดโคด 3. เขยี นโปรแกรมตามการออกแบบ 4. การทดสอบและแกไ ขโปรแกรม 5. จดั ทําเอกสารและบํารงุ รกั ษาโปรแกรม 1. กาํ หนดและวิเคราะหป ญหาของงาน 1.1 ระบจุ ดุ มุง หมายของโจทยวาตองการอะไรใหเดนชดั ถอดแนวคาํ ถามทโ่ี จทย ตองการ 1.2 รวบรวมรายละเอียดของงานโปรแกรมมีอะไรบาง บางครง้ั ตองอาศัยภมู ริ ขู อง ผเู ขียนโปรแกรม เชน สตู รการคาํ นวณคณติ ศาสตร เชน สตู รการหาพน้ื ท่ีของรูปเชิงเรขาคณิต รูปแบบตาง ๆ 1.3 ระบุผลลัพธเ ม่ือโปรแกรมทาํ งานแลว โดยดจู ากคําถามโจทย 1.4 ระบขุ อมลู เขา ของโปรแกรมเพ่อื ประมวลผล โดยดูจากคําถามโจทย 1.5 กาํ หนดวิธีการประมวลผลมีข้ันตอนอยา งไร โดยผเู ขียนโปรแกรมวาจะลําดับ การแกป ญหาไดอ ยา งไรเพือ่ ใหไ ดผ ลลัพธ 2. การออกแบบโปรแกรม 2.1 ออกแบบทําไดโ ดยการเขียนผังงาน (จะกลาวถึงในบทท่ี 2) ซงึ่ เปนสัญลักษณ รปู ภาพแทนขั้นตอนการประมวลผลและการทาํ งานของโปรแกรม 2.1.1 ภาพแสดงการทาํ งานตามลําดับ
ระบบการเขยี นโปรแกรม 7 2.1.2 ชว ยใหม องเห็นวาสว นตา ง ๆ ของโปรแกรมมคี วามสัมพันธเชอ่ื มโยงกัน อยางไร 2.1.3 สญั ลกั ษณต อ งถกู ตองตามหลักสากล ในการออกแบบโปรแกรมนนั้ ไมต องพะวงกับรูปแบบคําสั่งภาษาคอมพิวเตอร แตใหม งุ ความสนใจไปที่ลําดับข้นั ตอนในการประมวลผลของโปรแกรมเทานน้ั 3. การเขียนโปรแกรม การเขียนโปรแกรมเปนการนําเอาผลลพั ธจากการท่เี ราออกแบบโปรแกรมมาเปลย่ี นเปน โปรแกรมภาษาคอมพิวเตอรภาษาใดภาษาหนง่ึ ผูเขียนโปรแกรมจะตองใหความสนใจตอรูปแบบ คําสั่งและกฎเกณฑของภาษาท่ีใชเพื่อใหการประมวลผลเปนไปตามผลลัพธที่ไดออกแบบไว นอกจากนัน้ ผเู ขยี นโปรแกรมควรแทรกคาํ อธิบายการทํางานตาง ๆ ลงในโปรแกรมเพ่ือใหโปรแกรม น้นั มคี วามกระจางชัดและงา ยตอการตรวจสอบและโปรแกรมนย้ี ังเปน สว นหน่ึงของเอกสารประกอบ 4. การทดสอบและการแกไ ขโปรแกรม ข้ันตอนนี้จะทําการตรวจสอบวาโปรแกรมทํางานไดตามที่วางแผนและออกแบบไวหรือไม และตรวจสอบวาไดผลลัพธตรงตามความตองการไวหรือไม และใหทําการแกไขขอผิดพลาด ตา ง ๆ ทมี่ อี ยูภ ายในโปรแกรมที่เขยี นข้ึน ใหถ กู ตองตรงกับความตองการของผูเขียนโปรแกรม และผใู ชโ ปรแกรมใหถกู ตองสอดคลองกบั ความเปน จรงิ การทดสอบโปรแกรมเพอ่ื ตรวจสอบผลการทาํ งานของโปรแกรมน้ัน ๆ วาทํางานถูกตอง หรอื ไม ถาพบวา โปรแกรมทาํ งานยังไมถูกตองก็แกไขใหถกู ตองตอไป ขั้นตอนการทดสอบและ แกไ ขโปรแกรมอาจแบงไดเปน 3 ข้นั ตอนดังน้ี 4.1 สรางแฟม เกบ็ โปรแกรมซ่ึงสวนใหญนิยมนําโปรแกรมเขาผานทางแปนพิมพ โดยใชโ ปรแกรมประมวลคาํ 4.2 ใชตัวแปลภาษาคอมพิวเตอรแปลโปรแกรมท่ีสรางข้ึนเปนภาษาเครื่อง โดย ระหวา งการแปลจะมกี ารตรวจสอบความถกู ตองของรูปแบบและกฎเกณฑในการใชภาษา ถา คําสั่งหรือรูปประโยคคําสั่งไมถูกตองก็จะแสดงขอผิดพลาดออกมาเพื่อใหผูเขียนโปรแกรม นาํ ไปแกไ ขตอไป ถาไมม ีขอ ผิดพลาด เราจะไดโ ปรแกรมภาษาเคร่อื งทีส่ ามารถใหค อมพิวเตอร ประมวลได 4.3 ตรวจสอบความถูกตองของการประมวลผลของโปรแกรมที่จัดทําอยางละเอียด การทาํ โปรแกรมทีถ่ กู ตองตามรูปแบบและกฎเกณฑข องภาษาแตอ าจใหผลลัพธของการประมวลผล
8 การเขยี นโปรแกรมเชงิ โครงสรา งดว ยภาษาซี ไมถูกตองก็ได ดังนั้นผูเขียนโปรแกรมจําเปนตองตรวจสอบวาโปรแกรมประมวลผลถูกตอง ตามตองการหรือไม วิธีการหนึ่งก็คือ สมมติขอมูลตัวแทนจากขอมูลจริงนําไปใหโปรแกรม ประมวลผลแลวตรวจสอบผลลัพธวาถูกตองหรือไม ถาพบวาไมถูกตองก็ตองดําเนินการแกไข โปรแกรมตอไป การสมมติขอมูลตัวแทนเพื่อการทดสอบเปนส่ิงที่มีความสําคัญเปนอยางมาก ลกั ษณะของขอ มลู ตัวแทนท่ีดีควรจะสมมติทั้งขอมูลท่ีถูกตองและขอมูลที่ผิดพลาด เพื่อทดสอบวา โปรแกรมทพี่ ฒั นาขนึ้ สามารถครอบคลมุ การปฏบิ ตั ิงานในเง่ือนไขตาง ๆ ไดครบถวน นอกจากนี้อาจ ตรวจสอบการทํางานของโปรแกรมดวย การสมมตติ วั เองเปนคอมพิวเตอรที่จะประมวลผล แลว ทาํ ตามคาํ ส่งั ทีละคําสง่ั ของโปรแกรมนนั้ ๆ วธิ ีการนี้อาจทําไดยากถา โปรแกรมมีขนาดใหญ หรอื มกี ารประมวลผลท่ซี ับซอน 5. การจัดทําเอกสารและบาํ รงุ รักษาโปรแกรม การจัดทาํ เอกสารประกอบโปรแกรมเปนงานที่สาํ คญั ของการพฒั นาโปรแกรม เอกสาร ประกอบโปรแกรมชวยใหผ ูใชโปรแกรมเขาใจวัตถุประสงค ขอมูลที่จะตองใชกับโปรแกรมตลอดจน ผลลัพธทจ่ี ะไดจ ากโปรแกรม การทําโปรแกรมทุกโปรแกรมจึงควรตองทําเอกสารกํากับ โดย รวบรวมรายละเอียดตั้งแตการพัฒนาโปรแกรมจนถึงการทดสอบโปรแกรมเพื่อใชสําหรับการอางอิง เม่ือจะใชงานโปรแกรมและเม่ือตองการแกไขปรับปรุงโปรแกรม โดยเอกสารที่จัดทําขึ้นควร ประกอบดว ย 5.1 วัตถปุ ระสงค 5.2 ประเภทและชนิดคอมพวิ เตอรและอปุ กรณทใี่ ชในโปรแกรม 5.3 วธิ ีการใชโ ปรแกรม 5.4 แนวคิดเก่ยี วกบั การออกแบบโปรแกรม 5.5 รายละเอยี ดโปรแกรม 5.6 ขอ มูลตัวแทนทใี่ ชทดสอบ 5.7 ผลลพั ธข องการทดสอบ จะเห็นไดวาแมผ เู ขยี นโปรแกรมคอมพวิ เตอรจ ะดาํ เนนิ การนับจากข้นั ตอนการวิเคราะห และกาํ หนดรายละเอยี ดของปญ หา การออกแบบโปรแกรม การเขียนโปรแกรม ตลอดจนการตรวจสอบ การทํางานในเวลาเพียงนอยนิด แตในข้ันตอนการบํารุงรักษาโปรแกรมจะมีชวงเวลานานไป ตลอดอายุการใชง านของโปรแกรม ซึ่งนบั เปนสดั สวนทม่ี ากกวา 4 ข้ันตอนแรกอยางมาก นอกจากนี้ การจัดทาํ เอกสาร/การบํารุงรักษา การเขยี นคาํ อธบิ าย/เขยี นเอกสาร เปนการแสดงขั้นตอนการ ใชง าน คมู อื การใชงานโปรแกรมทาํ ใหท ราบความเปน มาของโปรแกรม การวางแผนและทฤษฎี
ระบบการเขยี นโปรแกรม 9 การทํางานท่ีรวบรวมความผิดพลาดหรอื จุดแกปญหาไมได และเปนการเก็บขอเสนอแนะจุดดี จุดเสีย ลาํ ดับการแกป ญ หาการประเมินความพึงพอใจของผูใชโปรแกรมอีกดวย ความหมายของอัลกอริทึม อัลกอริทึม (Algorithm) หมายถึง วิธีการหรือกระบวนการทํางานใดงานหนึ่งท่ีสามารถ แบงข้ันตอนออกเปนยอย ๆ ที่แนนอน ซ่ึงเมื่อทราบข้ันตอนการทํางานท่ีแนนอนแลว ก็จะนํา อัลกอริทึมทีไ่ ดน ้ันมาวาดเปนผงั งานจากน้นั จึงแปลงเร่อื งราวในผังงานเปนภาษาระดับสูงเขียน เปน โปรแกรมส่ังงานใหเครื่องคอมพิวเตอรเ ขาใจ และปฏบิ ตั ิการทาํ งานตามท่อี อกคาํ ส่งั ขนั้ ตอนในการพฒั นาลาํ ดบั ขน้ั ตอนวิธีการแกปญหา นับวาเปนข้ันตอนที่สําคัญอีกข้ันตอน หนึ่ง เพราะเปน ขั้นตอนทนี่ าํ วิธีการแกปญ หาท่ไี ดทาํ การทดลองหาวิธีการแกปญหาในสวนของ การทดลองแกปญ หาดวยตนเอง (Hand Example) มาทาํ การเรียบเรยี งลําดับขั้นตอนการทํางาน ของวิธีการแกปญหา ตั้งแตขั้นตอนแรกจนถึงข้ันตอนสุดทาย วามีลําดับขั้นตอนการทํางาน อยา งไรบาง เพ่ือท่จี ะนําไปสงั่ การใหเ ครอ่ื งคอมพิวเตอรทาํ การแกไขปญ หาดว ยวิธีการน้ี คําวา อัลกอริทึม ในทางคณิตศาสตรจะหมายถึง ข้ันตอนหรือวิธีการคํานวณ แตในทาง การเขยี นโปรแกรมคอมพิวเตอร อลั กอรทิ ึม หมายถงึ วธิ ีการท่ไี ดแ บงออกเปน ขนั้ ตอนยอ ย ๆ ที่ มกี ารทาํ งานแนน อน หรือการอธิบายลาํ ดบั ขนั้ ตอนการทาํ งานในลกั ษณะของขอ ความ ตั้งแตตนจน จบ วา มลี าํ ดับข้ันตอนการทํางานอยา งไรบาง จดุ ประสงคข องการเขียนอลั กอริทมึ เปน การจดั ลาํ ดับความคดิ เปนขั้นตอนตาง ๆ เพ่ือ แกไ ขปญหาในขั้นตอนการเขียนโปรแกรมทส่ี อดคลองกรรมวิธีแกปญหาท่ีกําหนดไว การเขียน อัลกอริทึมจึงเปนการแสดงลําดบั การทํางานตามคุณสมบตั ดิ านการประมวลผลของคอมพิวเตอร ท่ี พรอมจะนําไปแปลงเปนลําดับคาํ ส่ังใหคอมพิวเตอรทาํ งาน การเขียนโปรแกรมคอมพิวเตอร ดวยภาษาทเี่ หมาะสม เพอื่ สั่งใหคอมพวิ เตอรทํางานตามอัลกอริทึมท่ีกําหนดไว และการเขียน อลั กอรทิ ึมออกมาควรท่ีจะใหม ีการตรวจสอบความถกู ตองดวย รูปแบบการเขียนอลั กอรทิ มึ การพฒั นาลําดับของอลั กอริทมึ เขยี นลาํ ดบั ข้ันตอนการทํางานได 2 วิธี คือ การอธิบาย ขน้ั ตอนการทํางานอยา งเหมาะสมตามความหมาย และการอธบิ ายข้ันตอนการทาํ งานอยา งละเอยี ด 1. การอธิบายขัน้ ตอนการทาํ งานอยา งงาย ๆ คือ การเขียนขนั้ ตอนการทํางานท้ังหมด โดยไมตอ งละเอยี ดมากนักแตเ ขาใจความหมายวาบง ถงึ อะไร และเขียนขั้นตอนการทํางานเปน ขอ ๆ เร่ิมตัง้ แตข้ันตอนแรกจนถึงข้ันตอนสดุ ทา ยทจ่ี ะสงใหเครือ่ งคอมพวิ เตอรทําการแกป ญหา
10 การเขยี นโปรแกรมเชงิ โครงสรางดว ยภาษาซี จะตองทาํ ตามลาํ ดบั ขั้นตอนใดบาง ตวั อยา งเชน การคํานวณหาอัตราผอนชําระรายเดือนของ เชาซ้ือบา น สามารถเรียบเรียงเปน การทาํ งานอยางงา ย ๆ ไดดังนี้ 1.1 เริ่มตนการทาํ งาน 1.2 รบั คา ของราคาของบา นท้งั หมด 1.3 รบั คาของอตั ราดอกเบีย้ ของบานทซ่ี ้ือเปนรายป 1.4 รับคา ของจาํ นวนเดือนทต่ี อ งการผอนชําระ 1.5 คาํ นวณหาคา ของจํานวนเงนิ ทตี่ องชําระรายเดอื น 1.6 แสดงคา ของจํานวนเงนิ ท่ีผอนชาํ ระรายเดือน 1.7 จบการทํางาน ในการเขียนอธบิ ายลําดับขัน้ ตอนการทํางานในลักษณะของขอความน้ัน จะเร่ิมตนขอแรก ดว ยคาํ วา “เริ่มตน” หรือ “เริม่ ตนการทาํ งาน” ถดั จากนั้นเปนลําดับขั้นตอนการทํางานท่ีใชใน การแกป ญ หา และจบดวยขนั้ ตอนสุดทาย จะใชขอความวา “จบการทาํ งาน” 2. การอธิบายขั้นตอนการทาํ งานอยางละเอียด คือ การที่นําข้ันตอนการทาํ งาน อยางงาย ๆ ทีไ่ มซ ับซอ นมาพิจารณาเพมิ่ เตมิ ขอ มลู บางอยา งที่ยังไมเรียบรอย แตละขั้นตอนที่ อธบิ ายในสว นของการอธบิ ายขั้นตอนการทํางานอยางหยาบน้ัน มีความละเอียดพอที่จะนําไป สัง่ งานใหเ ครอ่ื งคอมพวิ เตอรท ํางานแลว หรือยัง ถา ยงั ไมละเอียดตองเขียนขยายความใหละเอียด มากย่ิงข้นึ และสมบูรณม ากทส่ี ดุ เทา ที่จะทาํ ได หรือแยกการทาํ งานออกเปนขอยอยเพิ่มเติม อยางเชน ในการคํานวณหาคา ขอ มูลใดบางอยา ง จะคาํ นวณดว ยวธิ ีการใด จากตัวอยางในสวน ของการอธบิ ายขัน้ ตอนการทาํ งานอยา งงา ย เร่ืองการหาอัตราการผอนชําระรายเดือนของ การเชาซ้ือบา น เมือ่ พจิ ารณาการทาํ งานในแตละขอ จะเหน็ ไดวามขี ั้นตอนการทาํ งานอยูข้ันตอนหนึ่ง ที่ไมล ะเอียด กค็ อื ขน้ั ตอนท่ี 5 การคาํ นวณหาคา ของจาํ นวนเงินที่ตองการชําระรายเดือน ยังไมได บอกวาคํานวณดวยวิธีการใด ดังนั้นจึงตองทําการอธิบายเพิ่มเติมในสวนของขั้นตอนใน การคํานวณหาคาของจํานวนเงนิ ที่ตอ งชาํ ระรายเดือน โดยวิธีการคํานวณน้ันไดทําในสวนของ การทดลองแกป ญหาดวยตนเอง สามารถเขียนอธิบายขั้นตอนการทํางานอยางละเอียดของ การแกปญหาไดดังน้ี 2.1 เร่มิ ตนการทาํ งาน 2.2 รบั คาของราคาของบานทงั้ หมด 2.3 รับคาของอัตราดอกเบีย้ ของบา นท่ซี อ้ื เปนรายป 2.4 รับคาของจํานวนเดอื นทตี่ อ งการผอ นชําระ
ระบบการเขียนโปรแกรม 11 2.5 คํานวณหาดอกเบ้ยี จากสตู ร ดอกเบย้ี ราคาของบา นท่ีจะซื้อ x อตั ราดอกเบย้ี x (จํานวนเดือน / 12) 2.6 คาํ นวณหาจํานวนเงนิ ทตี่ อ งชําระรายเดือน จากสตู ร เงนิ ผอนรายเดือน (ราคาบา นทีจ่ ะซอื้ + ดอกเบยี้ ) / จํานวนเดอื น 2.7 แสดงคา ของจํานวนเงนิ ทีผ่ อนชาํ ระรายเดอื น 2.8 จบการทํางาน การพัฒนาลําดับข้ันตอนการทํางานจากผังงาน ใหแบงขั้นตอนการทํางานทั้งหมด ออกเปนขอ ๆ ตามลําดับและตามจาํ นวนของขัน้ ตอนการทํางานทั้งหมด และการเขียนตองไม ซับซอน เขาใจงา ย และตอ งเขียนใหถ กู ตองเสมอ เพราะถาเขียนไมถูกตองแลวการพัฒนาไปเปน รหสั จาํ ลอง (Pseudo Code) ก็จะผดิ พลาด และการเขยี นโปรแกรมก็จะผดิ ตามดวย การเขยี นโปรแกรมคอมพวิ เตอรตองเก่ียวของกบั การใชง านพ้ืนที่ในหนวยความจําของ ระบบคอมพิวเตอร ในภาษาคอมพิวเตอรใหแทนสัญลักษณกาํ หนดพ้ืนที่หนวยความจํา ดวย การกาํ หนดชอ่ื เปน ตวั แปรใชง าน เพือ่ ใชอ า งอิงถึงขอมูลในหนว ยความจํา เชน A = 8 หมายถงึ กาํ หนดคา 8 เกบ็ ไวใ นตัวแปร A POWER = X2 + Y2 หมายถงึ เอาคา X ยกกําลัง 2 บวกกับคา Y ยกกาํ ลังสอง แลว เก็บคา ผลลัพธท ไี่ ดไวที่ตัวแปร POWER Sum = Sum + Mark หมายถึง การเอาคา ในตัวแปร Mark ไปบวกเขากับคา ในตวั แปร Sum แลว เอาคา ผลลัพธใหมท ่ไี ดไ ปเก็บท่ีตัวแปร Sum ซึ่งคาใหมทไ่ี ดจ ะไปเก็บทับคาเดิมที่มีอยู คาํ สง่ั ลกั ษณะนใ้ี ชในการสะสมคา หรือเปลี่ยนแปลงคาในตัวแปรเดมิ การวเิ คราะหป ญ หาเชงิ อัลกอริทมึ ในชีวติ ประจําวนั เมอ่ื ประสบปญหาใด ๆ ส่ิงแรกท่ีกระทาํ คอื การวิเคราะหปญหาแลวถาม ตัวเองวา อะไรคอื ปญหาทเ่ี กดิ ขนึ้ หรือปญหาที่เกิดขึ้นน้ันตองการคําตอบอะไร และวิธีการ แกปญ หาควรตอ งเปนอยา งไร ในการวิเคราะหปญหาเพื่อเขียนโปรแกรมไมไดแตกตางกับ การแกปญหาในชีวิตประจาํ วันเพียงแตปญหาที่จะนํามาวิเคราะหจะเปนปญหาประเภทที่มี ลําดบั ขน้ั ในการแกปญหา เม่อื แกป ญ หาตามขนั้ ตอนกไ็ ดคําตอบตามตองการ ขนั้ ตอนการวิเคราะห ปญหาเชิงอัลกอริทึม มี 3 ข้ันตอน คือ ขั้นวิเคราะหผลลัพธ ขั้นวิเคราะหขอมูล ข้ันวิเคราะห กระบวนการแกป ญ หาหรอื ขนั้ การประมวลผล
12 การเขยี นโปรแกรมเชงิ โครงสรางดว ยภาษาซี ปญหา การแกป ญ หา ขนั้ ตอนที่ยาก ผลลพั ธใ นรูปอัลกอริทมึ ผลลพั ธใ นรูปภาษา ดาํ เนินการแกป ญหา โปรแกรมคอมพวิ เตอร รปู ที่ 1.7 แสดงขนั้ ตอนการแกป ญหาในเชงิ อลั กอริทมึ 1. ขั้นวิเคราะหผลลพั ธ คือ ทําเมอื่ ตองการเขยี นโปรแกรม โดยจะตอ งกําหนดขอบเขต ของงานหรือปญ หา รวบรวมรายละเอียดของปญหาวิเคราะหปญหาอยางละเอียดวาตองการ ใหคอมพิวเตอรทําอยางไร ผลลัพธท่ีตองการเปนอยางไรรูปแบบของขอมูลท่ีจะปอนเขาเครื่อง คอมพิวเตอรเ ปนอยา งไร 2. ขน้ั วิเคราะหขอ มูล คอื ศกึ ษาขอ มูลทต่ี องการเปน อยา งไร ขอมูลทจี่ ะปอนเขาเครื่อง คอมพิวเตอรเ ปนอยา งไร ถาตองการผลลัพธเ ชนน้ี การวิเคราะหขอมูลเปนการศึกษาผลลัพธ ขอ มูลนําเขา วิธีการประมวลผล และการกาํ หนดช่ือของตวั แปรทีจ่ ะใชใ นการเขียนโปรแกรม 3. ขั้นวิเคราะหก ระบวนการแกปญ หาหรือข้ันการประมวลผล คือ ข้ันตอนของวิธีการ แกป ญหาหรอื การคํานวณเพ่อื ใหไ ดผ ลลัพธตามท่ีตองการ ตั้งแตการส่ังใหเคร่ืองคอมพิวเตอร รบั ขอ มลู เขาไปทาํ การประมวลผลและแสดงผลลัพธอ อกมา ซึง่ เปน ขั้นตอนการทาํ งานทุกอยาง ตามลาํ ดับ จึงจาํ เปนจะตองจัดลําดับการทํางานตามลําดับกอนหลังใหละเอียดและถูกตอง ทุกขนั้ ตอน ใ น ก าร เ ขีย น วิเ ค ร าะหอัล ก อ ริทึม นั้น ตอ ง ม อ ง ปญ ห าข อ ง โ จ ท ยเ ปน ลําดับ ขั้น ต อ น อัลกอริทึมตองงา ย เปน สากล และไมสับสน มีความหมายเดียวไมกํากวม อีกทั้งขั้นตอนแต ละขนั้ ตอนตอ งเปนไปตามลําดับ มีจาํ นวนข้นั ตอนทน่ี ับเปน ขอ ๆ ได สว นการนําเสนออัลกอริทมึ กท็ ําได 2 แบบ คือ การเขียนในรปู ของผังงานและรหสั จาํ ลอง ซ่ึงจะไดก ลา วลาํ ดับตอ ไป
ระบบการเขียนโปรแกรม 13 ผังงานกบั รปู แบบการเขยี นโปรแกรมแบบโครงสราง ผงั งาน (Flowchart) คอื แผนภาพซงึ่ แสดงลาํ ดบั ขัน้ ตอนของการทํางาน โดยแตละขั้นตอน จะถูกแสดงโดยใชส ัญลกั ษณซึง่ มคี วามหมายที่บงบอกวา ข้ันตอนน้ัน ๆ มีลักษณะการทํางาน อยางไรทที่ ําใหง า ยตอ ความเขา ใจ วาในการทํางานนนั้ มีขน้ั ตอนอะไรบา ง และมลี าํ ดับอยา งไร เร่มิ ตน รับเงนิ ตน , อัตราดอกเบ้ีย และจํานวนปที่ฝากเงิน กําหนด n = 0 ยอดบญั ชี = เงนิ ตน n < จํานวนปท ฝ่ี ากเงนิ ไมใช ใช ยอดบญั ชี = ยอดบัญชี + (ยอดบญั ชี x อัตราดอกเบ้ยี ) แสดงยอดบญั ชี จบการทาํ งาน n=n+1 รูปที่ 1.8 แสดงขัน้ ตอนการทํางานโดยรูปแบบผังงาน
14 การเขยี นโปรแกรมเชิงโครงสรา งดว ยภาษาซี ประโยชนข องผงั งาน 1. ทาํ ใหเ ขา ใจและสามารถแยกแยะปญหาตาง ๆ ใหเ ขาใจงา ยขนึ้ 2. ทําใหเขียนโปรแกรมมองเห็นลําดับขั้นตอนในการทํางานโดยรูวาควรทําอะไรกอน ทําอะไรหลัง ชว ยใหส ามารถทําความเขา ใจลําดบั ขน้ั ตอนการทาํ งานของโปรแกรมหรือระบบใด ๆ ไดอ ยา งรวดเร็ว 3. เปน เคร่อื งมอื ชวยหาขอผดิ พลาดของโปรแกรมไดง า ยกวาการไปตรวจคนหาขอผิดพลาด ทีโ่ ปรแกรม ทําใหสามารถเขียนโปรแกรมไดอยา งเปนระบบไมส บั สน 4. เปนเอกสารรวบรวมและประกอบในการเขียนโปรแกรมอยางหนึ่งท่ีตองรวบรวมไว เพอื่ อางองิ ตอ ไป ประเภทของผังงาน 1. ผังงานระบบ (System flowchart) เปน ผังซึ่งแสดงขอบเขต และลําดับข้ันตอนการทํางานของระบบหนึ่ง ๆ รวมท้ังแสดงรูปแบบ ของขอมูลเขา (Input) และขอ มูลออก (Output) วาถูกรับเขาหรือแสดงผลโดยผา นส่ือประเภทใด เนื่องจากผังงานระบบเปนแผนภาพท่ีแสดงถึงระบบโดยรวม ดังนั้นกระบวนการหรอื โปรแกรม หนึง่ ๆ อาจถูกแสดงเปนเพียงขนั้ ตอนหน่งึ ในผงั งานระบบเทาน้ัน รปู ท่ี 1.9 ผังงานระบบท่แี สดงลาํ ดบั ข้นั ตอนการทํางานของระบบหนงึ่ ๆ
ระบบการเขยี นโปรแกรม 15 2. ผังงานโปรแกรม (Program flowchart) เปน ผังงานท่ีแสดงใหเ หน็ ถึงลาํ ดับข้ันตอนในการทํางานของโปรแกรม ต้ังแตการรับขอมูล การประมวลผล ตลอดจนผลลัพธท่ีไดจะทําใหเขียนโปรแกรมคอมพิวเตอรไดสะดวกขึ้น ซึ่ง ผังงานชนิดนี้อาจสรางมาจากผังงานระบบโดยดึงเอาจุดที่เกี่ยวของกับการเขียนโปรแกรม คอมพวิ เตอรมาวเิ คราะหว า จะใชทาํ งานสวนใดเพ่ือทจ่ี ะใหไดผ ลลัพธตามท่ีตองการ รปู ที่ 1.10 แสดงผังงานโปรแกรมทเ่ี หน็ ถึงลําดบั ขนั้ ตอนในการทํางานของโปรแกรม สญั ลักษณข องผงั งาน สัญลักษณที่นิยมใชในการเขียนผังงาน หนวยงานที่ชื่อวา American National Standards Institute (ANSI) และ International Standard Organization (ISO) ไดกําหนด สัญลกั ษณมาตรฐานเพ่อื ใชใ นการเขียนผังงาน ซึ่งผังงานเขียนขึ้นมาเพื่อแสดงลําดับขั้นตอน การทาํ งาน โดยนาํ เอาภาพท่เี ปน สญั ลกั ษณตาง ๆ มาเรียงตอกันอยางมีความหมายตามข้ันตอน ซึง่ สญั ลักษณของผงั งานที่ใชบ อย ๆ ในการเขยี นโปรแกรมมีดงั นี้
16 การเขยี นโปรแกรมเชิงโครงสรา งดว ยภาษาซี Term inator การเรมิ่ ตน/การสนิ้ สุดการทํางาน DATA การรบั ขอ มูลโดยไมระบอุ ปุ กรณ Manual Input การรับขอมลู ทางแปน พมิ พ (Keyboard) การประมวลผลขอมูล/การตัง้ คา สมการ Process Display การแสดงผลขอมูล/ตัวแปรออกทางจอภาพ Document การแสดงผลขอ มลู /ตัวแปรออกทางเครือ่ งพิมพ Decision N การตง้ั เงื่อนไข/การตัดสนิ ใจ (เขา 1 ออก 2) Y การเตรียมการวนลปู โดยการกาํ หนดคา จดุ เช่ือมตอหนากระดาษเดียวกนั Preparation Connect
ระบบการเขยี นโปรแกรม 17 จดุ เชือมตอ่ คนละหน้า ลูกศรแสดงทิศทางการไหล ลาํ ดับขั้นตอนโปรแกรม แสดงจานแมเ่ หลก็ หรือฮาร์ดดิสก์แหลง่ เกบ็ ข้อมลู วธิ กี ารเขยี นผังงานทด่ี ี 1. ควรเลือกสญั ลักษณท ่ีมกี ารกาํ หนดรปู แบบไวเปนมาตรฐาน สวนขนาดของสญั ลกั ษณ ใหขน้ึ อยกู ับความเหมาะสม 2. ควรเขยี นใหท ศิ ทางของผงั งานเร่มิ จากซายไปขวา บนลงลา ง และควรมีลูกศรกํากับ ทศิ ทางของผงั งานดว ยเขียนคําอธิบายทตี่ องการอธิบายการปฏิบตั งิ านข้นั ตอนนัน้ ๆ ภายในกรอบ รปู สัญลักษณ โดยใชข อความทเ่ี ขา ใจงาย ส้ัน กะทดั รัด และชดั เจนของเนื้อหาท่จี ะใช 3. ควรใชสัญลักษณท่ีเรียกวา “ตัวเชื่อมแทน” ในกรณีที่ตองการขีดเสนเชื่อมโยง การปฏิบัติงานตามขั้นตอนท่ีอยหู า งไกลกันมาก ไมว าจะอยหู นาเดียวกันหรือคนละหนา หรอื คน ละแผน กระดาษกต็ าม 4. ตอ งแนใ จวา สามารถเช่ือมโยงการปฏิบตั ิงานทุกจุดในผงั งานไมม ีการปลอ ยวางไวเฉย ๆ 5. ผงั งานจะตองครอบคลุมทุกข้นั ตอนเนอื้ หาหรือตามเง่ือนไขของการปฏิบัติงานในการ วเิ คราะหของงานโจทยน้นั ๆ 6. ความสะอาดชัดเจนเปน ระเบยี บเรยี บรอย ผอู น่ื สามารถตดิ ตามขนั้ ตอนการทาํ งานได 7. ควรทดสอบความถูกตองกอ นการนําไปเขียนโปรแกรมทกุ ครั้ง ลกั ษณะโครงสรา งของผังงาน ผังงานทัว่ ไปจะประกอบดว ยโครงสรา งพน้ื ฐาน 3 รปู แบบตอ ไปนี้ คอื 1. โครงสรา งแบบเปนลําดบั (Sequence structure) 2. โครงสรางแบบมกี ารเลอื ก (Selection structure) 3. โครงสรา งแบบทาํ ซาํ้ (Iteration structure)
18 การเขียนโปรแกรมเชงิ โครงสรางดว ยภาษาซี 1. โครงสรา งแบบเปนลําดับ (Sequence Structure) ข้นั ตอนการทาํ งานแบบลําดบั เปน ข้ันตอนวิธกี ารทํางานพื้นฐาน ข้นั ตอนวิธีการทํางาน แบบลาํ ดับไดรับการพัฒนาจากผังงานการทํางานของโปรแกรมที่เปนแบบลําดับ การเขียนอธิบาย การทํางานของวิธกี ารแกป ญหาโดยใชผ งั งาน ทําใหส ามารถเห็นลาํ ดับขัน้ ตอนวิธีการทํางานของการ แกป ญหาไดชัดเจนกวา การอธิบายข้นั ตอนวิธีการทาํ งานในลักษณะของขอความโดยตรง สําหรบั ผู ทเ่ี ริ่มตนฝกหดั การเขยี นโปรแกรม อาจจะไมสะดวก จึงตองมกี ารเปล่ียนจากผังงานใหเปนการ อธิบายข้ันตอนวิธีการทาํ งานในลักษณะของขอความกอน จากน้ันจึงทําการเปลี่ยนจากการ อธิบายขัน้ ตอนวธิ กี ารทาํ งานในลักษณะของขอความใหเปนรหัสเทียม และแปลงเปนโปรแกรม ภาษา คอมพวิ เตอรต ามลําดับตอ ไป การเขยี นอธิบายข้ันตอนวธิ ีการทํางานในลกั ษณะของขอความจากผังงาน ส่ิงท่ีตองทํา เปน ลาํ ดบั แรก คือ การแยกจํานวนของกระบวนการทํางานท้งั หมดของผงั งาน โดยพิจารณาวา ผังงานนั้นมีกระบวนการทํางานท้ังหมดจํานวนก่ีกระบวนการ ก่ีขั้นตอน สามารถทําการ พิจารณาไดจากการทํางานของกระบวนการหนึ่งกระบวนการน้ัน จะมีทิศทางเขาและทิศ ทางออกจากกระบวนการ มีเพยี งอยางละหนง่ึ ทิศทางเทา นน้ั โดยทําการเขียนอธิบายขั้นตอน วิธีการทํางานในลักษณะของขอความจํานวนหนึ่งขอความ ตอกระบวนการหนึ่ง กระบวนการ โครงสรางลักษณะน้ีเปน โครงสรางพ้ืนฐานของผังงาน และเปนลักษณะข้ันตอน การทาํ งานทพ่ี บมากท่ีสุด คอื ทาํ งานทลี ะขั้นตอนตามลาํ ดับ ดงั แสดงดังรปู ท่ี 1.11 รูปท่ี 1.11 แสดงผงั งานโครงสรา งผังงานแบบเปน ลําดบั
ระบบการเขียนโปรแกรม 19 ตวั อยา งผังงานท่มี ีโครงสรางแบบเปน ลําดบั รูปที่ 1.12 แสดงตัวอยางการใชงานของผังงานแบบเปน ลําดบั จากตัวอยางผังงานการคํานวณหาเสนรอบรูปและพ้นื ทสี่ ี่เหลย่ี ม สามารถอธิบายเปน ขนั้ ตอนได ดงั น้ี 1. เร่ิมตนการทํางาน 2. รบั คา ดา นกวางและรบั คาดา นยาวเพื่อใชในการคํานวณหาเสนรอบรูปและคาพื้นที่ ส่ีเหล่ียม 3. คาํ นวณหาสิ่งที่ตอ งการโดยใชสมการตอไปน้ี 3.1 เสนรอบรูป = (คา ดานกวาง + คาดานยาว) x 2 3.2 คาของพืน้ ท่ี = คา ดา นกวา ง x คาดานยาว 4. แสดงคาของเสน รอบรปู และคา ของพนื้ ท่ีสเ่ี หลีย่ ม 5. จบการทํางาน
20 การเขยี นโปรแกรมเชิงโครงสรา งดว ยภาษาซี 2. โครงสรา งแบบมตี ัวเลือก (Selection Structure) รูปที่ 1.13 แสดงผังงานโครงสรางผังงานแบบมีตัวเลอื ก โครงสรา งการทาํ งานแบบมีตัวเลอื ก มีรูปแบบท่ีซับซอนกวาโครงสรางแบบเปนลําดับ การเขียนข้ันตอนวิธีการทํางานแบบมีตัวเลือก ใชสําหรับกรณีที่ตองการเลือกวิธีการทํางาน สําหรับการแกไขปญหา ที่เหมาะสมกบั ลักษณะขอ มูลในขณะนัน้ น่ันคอื การเลือกแบบมที างออก สองทาง ในการเลอื กแบบมีทางออก สองทาง น้ีจะมที างออกจากสัญลักษณก ารตัดสินใจเพียง สองทาง คือ “ใช” หรือ “ไมใช” เทาน้ัน การเขียนข้ันตอนวิธีการทํางานแบบมีตัวเลือกไดรับการ พัฒนามาจากโครงสรางผังงานแบบมีตัวเลือก เม่ือไดทําการอธิบายข้ันตอนวิธีการทํางานใน ลักษณะของขอความแลว จากน้ันจึงทําการเปล่ียนใหเปนรหัสเทียม และโปรแกรม ภาษาคอมพวิ เตอรต อ ไป
ระบบการเขียนโปรแกรม 21 รปู ที่ 1.14 แสดงตวั อยา งผงั งานโครงสรา งผังงานแบบมตี ัวเลอื ก ตวั อยา งผังงานท่มี ีโครงสรา งแบบมตี ัวเลอื ก ผงั งานการคาํ นวณหาโบนัสซง่ึ มอี ตั ราการคดิ 2 รูปแบบ คือ ถายอดขายมากกวา 5,000 บาท จะใหคา โบนัส = รอยละ 5% ของยอดขาย และแสดงผลคา โบนสั ออกทางจอภาพ แตถ ายอดขายนอยกวา 5,000 บาท ก็จะ “ไมมีคาโบนัส” ใหส ามารถอธบิ ายเปนขั้นตอนไดด ังน้ี 1. เริม่ ตน การทาํ งาน 2. รบั คายอดขาย ทางแปนพิมพ 3. พิจารณายอดขายทร่ี บั คา เขามา ตรวจสอบวา ยอดขายมคี า มากกวา 5,000 บาท หรอื ไม 3.1 ถาใช ใหค ํานวณคา โบนสั = ยอดขาย * 5/100 และแสดงผลคาโบนสั ออก ทางจอภาพ และจบการทาํ งาน 3.2 ถา ไมใ ช ใหแสดงขอความ “ไมม คี าโบนสั ” ออกทางจอภาพ และจบการทาํ งาน
22 การเขยี นโปรแกรมเชิงโครงสรางดว ยภาษาซี 4. จบการทาํ งาน 3. โครงสรางแบบทาํ ซ้ํา (Iteration Structure) รูปที่ 1.15 แสดงตวั อยา งผงั งานโครงสรา งผงั งานแบบทาํ ซา้ํ ขั้นตอนวิธกี ารทํางานแบบทําซํา้ ใชส ําหรับกรณีทตี่ องการทาํ กระบวนการตา ง ๆ ซํา้ กนั หลายครั้ง โดยมีการตรวจสอบเง่อื นไขสําหรับการตัดสินใจ เพื่อเขาสูขนั้ ตอนของการทําซ้าํ หรือ ออกจากขัน้ ตอนของการทําซา้ํ การเขียนขั้นตอนวธิ สี าํ หรบั การทํางานแบบทาํ ซํา้ ไดร บั การพฒั นา มาจากโครงสรางผงั งานการทาํ ซํา้ วธิ ีการเขียนอธิบายขัน้ ตอนวิธีการทาํ งานและรหัสเทียมสําหรับ โครงสรางผังงานแบบทําซ้ํา มีวิธีการเขียนตางไปจากการทํางานแบบลําดับและแบบมี ตัวเลือก แตบางคร้ังการทํางานของขั้นตอนวิธีการแกปญหาที่มีขั้นตอนวิธีการทํางานแบบ ทําซํ้า อาจประกอบดวยข้ันตอนวิธีการทํางานแบบลําดับหรือข้ันตอนวิธีการทํางานแบบมี ตวั เลือกรว มอยูใ นขั้นตอนวิธีการทํางาน ดังนั้นการเขียนอธิบายขั้นตอนวิธีการทํางานแบบ ทําซํา้ จะใชการเขียนอธิบายขัน้ ตอน สําหรบั ข้ันตอนวิธกี ารทาํ งานในลกั ษณะน้ัน
ระบบการเขยี นโปรแกรม 23 ตวั อยางผังงานทม่ี โี ครงสรา งแบบทาํ ซา้ํ ผังงานการคํานวณยอดบัญชี (เงนิ ตนทบดอกเบย้ี ) เร่มิ ตน รับเงินตน , อัตราดอกเบ้ยี และจาํ นวนปท ี่ฝากเงนิ กาํ หนด n = 0 ยอดบญั ชี = เงินตน n < จํานวนปท ี่ฝากเงนิ ไมใช ใช ยอดบญั ชี = ยอดบญั ชี + (ยอดบัญชี x อตั ราดอกเบีย้ ) แสดงยอดบัญชี n=n+1 จบการทาํ งาน รปู ที่ 1.16 แสดงตัวอยางผงั งานโครงสรางผงั งานแบบทาํ ซํ้า
24 การเขียนโปรแกรมเชิงโครงสรา งดว ยภาษาซี จากตัวอยา งผงั งานสามารถอธิบายเปน ขนั้ ตอนไดด งั น้ี 1. เร่มิ ตนการทาํ งาน 2. รบั คา เงินตน อตั ราดอกเบีย้ และจํานวนปที่ฝากเงิน ซง่ึ เปน ขอ มูลทจ่ี ําเปนในการคํานวณ ยอดบญั ชี (เงนิ ตนทบดอกเบย้ี ตามจาํ นวนป ทฝี่ ากเงนิ ) 3. กาํ หนดให n มคี า เทากบั 0 ในผังงานน้ี n คือจํานวนรอบของการคิดดอกเบีย้ 4. กําหนดยอดบัญชีเร่มิ ตน ใหเทากับเงินตน ทรี่ บั คาเขา มา 5. เปรียบเทียบวา n นอยกวาจํานวนปท ีฝ่ ากเงนิ หรือไม 5.1 ถา “ใช” ใหทําตามขัน้ ตอนตอไปนี้ 5.1.1 คํานวณยอดบญั ชีใหมโ ดยทบดอกเบ้ียเพ่ิมเขาไปจากยอดบัญชีเดิมโดยใช สมการยอดบัญชี = ยอดบัญชี + (ยอดบญั ชี * อตั ราดอกเบี้ย) 5.1.2 เพมิ่ คา n ไปอีก 1 5.1.3 กลับไปเปรียบเทยี บเงอ่ื นไขในขอ 5 5.2 ถา “ไมใช” แสดงวา คดิ ดอกเบี้ยทบตน ครบตามจํานวนปท่ีฝากเงินซึ่งรับคาเขา มาแลว ใหทาํ ตามขนั้ ตอนตอไปน้ี 5.2.1 แสดงคายอดบญั ชีสดุ ทายท่ีคํานวณได 5.2.2 จบการทํางาน การเขียนรหสั จาํ ลอง การเขียนรหัสจาํ ลอง ถือเปนรูปแบบหนึ่งของการนาํ เสนอแบบแนวคิดอัลกอริทึม ท่ี สามารถนําไปเปนคาํ ส่ังรหัสจาํ ลองได ซึ่งบางคร้ังเรียกวา “คําสั่งเทียม (Pseudo Code)” ซึ่งหมายถึง คาํ สั่งที่ใชเขียนลําดับขั้นตอนแนวคิดเชิงการทาํ งาน โดยจะถูกพัฒนามาจาก การอธบิ ายลาํ ดบั ขนั้ ตอนการทํางานในลักษณะของขอ ความ และจะเขยี นเลยี นแบบเปนคาํ สัง่ จริง วิธีการเขียนจะเขียนดวยภาษาที่เขาใจงาย อาจใชภาษาอังกฤษในการเขียน เพราะเหมือนกับ การเขียนโปรแกรมจริง หรือเขียนดว ยภาษาไทยกอนก็ได เพราะการเขียนคําส่ังเทียมน้ีขอเนน อยางชัดเจนคือจะไมข ึน้ กบั ภาษาคอมพวิ เตอรภาษาใดภาษาหนึ่ง แตเ ปนคาํ สัง่ ทเี่ ขยี นเลียนแบบ คาํ ส่งั จรงิ อยางยอ ๆ และใชเปนแนวทางของคาํ สั่งควบคมุ ในภาษานัน้ ๆ เพ่อื ใหเ หน็ แนวทางของ การทาํ งานในโปรแกรม และยังไมส ามารถนาํ ไปใชงานได จะตอ งนําไปพัฒนาโดยการเขียนเปน โปรแกรม โดยเลอื กใชภ าษาใดภาษาหน่ึงในการเขียนซึง่ แลวแตความเหมาะสมของงาน เชน ใน โปรแกรมเราอาจตงั้ คาตวั แปรตา ง ๆ ของโปรแกรมใหมีคาเปนศูนยเพ่ือใหโปรแกรมทํางานได
ระบบการเขยี นโปรแกรม 25 อยา งถกู ตอ ง ซึ่งกระบวนการนี้หากเขียนเปนผังงานโปรแกรม (Program Flowchart) จะตอง กําหนดคาตัวแปรที่ใชในโปรแกรมทั้งหมดใหเปนศูนย ถามีตัวแปร 20 ตัวก็จะตองเขียนชื่อ ตัวแปรทั้ง 20 ตัว พรอมกับการกาํ หนดคา เร่ิมตนใหมคี าเปน 0 แตหากเขียนดว ยคาํ สงั่ เทยี มเรา สามารถเขยี นยอ ๆ วา “การกาํ หนดคา เริม่ ตน ” ได รหสั จาํ ลอง (Pseudo Code) เปน คาํ สง่ั ทเ่ี ขยี นข้ึนใกลเคียงกับภาษาคอมพิวเตอร แตไมใชคําส่ังในภาษาคอมพิวเตอรใด ๆ อยางแทจริง เปนคําสั่งที่เขียนเลียนแบบคําสั่งจริง อยา งยอ ๆ จึงไมส ามารถนําไปเขียนลงในเครื่องคอมพิวเตอรใหทํางานได และใชเปนแนวทาง ของคาํ สั่งควบคุมในภาษาน้ัน ๆ เพ่ือใหเห็นแนวทางของการทํางานในโปรแกรม ใหนักเขียน โปรแกรมนําไปแปลงเปนภาษาโปรแกรมคอมพิวเตอร ชวยใหเขียนโปรแกรมไดงายขึ้นกวา การอานสัญลักษณจากผังงาน การเขียนคําสั่งเทียมมีทั้งการทํางานแบบลําดับ การทํางาน แบบมีตัวเลอื ก และการทํางานแบบทําซ้าํ ลกั ษณะรหสั จําลอง 1. ใชข อ ความทส่ี น้ั ไดใ จความ 2. ใชขอความที่สอ่ื ใหผ ูอานเขาใจไดง าย 3. ตอ งเขียนเรียงลาํ ดับทีละบรรทดั 4. มลี กั ษณะใกลเ คียงกบั ภาษามนษุ ย 5. ไมข ้ึนอยกู ับภาษาคอมพิวเตอรภ าษาใดภาษาหนงึ่ หลักเกณฑท ่ัวไปในการเขียนรหัสจําลอง รูปแบบและคณุ สมบตั ิของการเขียนคาํ ส่ังเทียมโดยท่ัวไปจะมีลกั ษณะดงั ตอ ไปน้ี 1. กําหนดช่ือของรหสั เทยี มใหส ือ่ ความหมายและเขาใจงาย โดยกําหนดตอทายคําวา “BEGIN” ซง่ึ ถอื วาเปนจุดเร่ิมตนของอัลกอริทึม และมีคําวา “END” เพ่ือเปนตัวบอกจุดสิ้นสุด ของอัลกอริทึมตามดวยช่ือของคาํ ส่งั เทียมนั้น ๆ 2. เมื่อเขียนเปนคําส่ังเทียมแลวจะตองไมขึ้นกับภาษาใดภาษาหนึ่งในการพัฒนาเปน โปรแกรม 3. ใชค ําและวลที ่เี ขา ใจงาย 4. รูปแบบการเขียนคลายกับการเขยี นเปน ภาษาองั กฤษ 5. การเขียนแตล ะคาํ สั่งของคาํ สัง่ เทยี มควรแยกเปน บรรทัด ๆ ไมค วรเขียนหลายคําสั่ง อยูในบรรทดั เดียวกนั
26 การเขียนโปรแกรมเชงิ โครงสรางดว ยภาษาซี 6. ในการเขียนคําสง่ั เทยี มควรมีการยอหนา หรือเวนวรรคตอนในแตละประโยคคําส่ัง หรือกลมุ ของคําสง่ั เพือ่ ใหเกดิ ความสวยงามและเขาใจงาย สะดวกตอการอา นและการตรวจสอบ คําสง่ั เทยี มไดอีกทางหนง่ึ 7. การเขียนคําสง่ั เทียมจะเร่มิ เขยี นจากบนลงลาง (Top to Down) โดยมีทางเขา หนึ่งทาง และทางออกหนงึ่ ทาง 8. กลุมของคําสั่งท่ีเปนโปรแกรมที่ทําหนาท่ีอยางเดียวกัน ควรจะรวมเขาดวยกันเปน ลักษณะของโมดูล (Module) โดยตั้งช่อื กาํ กับไวใ นแตล ะโมดูล ขอ ตกลงในการเขยี นรหสั จาํ ลอง 1. ในการอธิบายการทาํ งานใชคําสั่งซึ่งเปนคํา กริยาในภาษาอังกฤษ เชน MOVE, INITIALIZE, READ, WRITE, SUBTRACT, ADD, DISPLAY, COMPUTE เปน ตน 2. คาํ สั่งหลาย ๆ คาํ สัง่ รวมเรยี กวา “โมดลู ” หรือ “กระบวนการ” กําหนดช่ือใหโมดูล น้ัน แลวใช do นําหนา 3. การทาํ งานใด ๆ จะเขยี นคําสงั่ เปน บรรทดั ๆ ไป เรยี งเปน ลําดบั Statement-1 Statement-2 ... ... Statement – n 4. การทาํ งานตามเงื่อนไข เปน การทํางานท่ี เมอ่ื ทดสอบเง่ือนไขแลวจะเลือกทําทางใด ทางหนึ่งเทาน้ัน เชน IF Condition THEN Statement-1 ELSE Statement-2 ENDIF อธบิ ายคาํ สง่ั การทาํ งานได ดงั น้ี คาํ สั่ง IF เปนการตรวจสอบเง่ือนไข หากเงื่อนไขเปนจริง จะทาํ คําสั่งที่ 1 แตหาก เง่ือนไขเปนเท็จจะทาํ คําส่ังที่ 2
ระบบการเขียนโปรแกรม 27 5. การวนรอบ เปนการวนรอบซาํ้ ตามจาํ นวนทตี่ อ งการ ซึ่งการวนรอบมีหลายลักษณะ ดงั น้ี - FOR วนรอบซํ้า เทา จํานวนรอบท่ีระบุ คือ รูจาํ นวนรอบทีแ่ นนอน FOR n TIMES Statement-1 Statement-2 ENDFOR อธิบายคําส่ังได ดงั น้ี คําสงั่ FOR เปนการวนรอบซาํ้ เปนจาํ นวน n ครั้ง เพอ่ื ทาํ คาํ ส่ังที่ 1 และคาํ สัง่ ที่ 2 - REPEAT UNTIL วนรอบซํ้าจนกระทงั่ เง่อื นไขทีก่ าํ หนดเปน จรงิ จงึ เสร็จสน้ิ REPEAT Statement-1 Statement-2 UNTIL condition อธิบายคาํ สงั่ ได ดงั น้ี คําสงั่ REPEAT UNTIL เปน การวนรอบซ้ําในขณะทเี่ งือ่ นไขเปน เทจ็ เพอ่ื ทําคําสง่ั ท่ี 1 และคาํ สงั่ ท่ี 2 แตหากเงือ่ นไขเปน จรงิ กจ็ บการวนซ้ําทนั ที - WHILE วนรอบซา้ํ ในขณะทเ่ี ง่ือนไขเปน จริง WHILE condition Statement-1 Statement-2 END WHILE อธิบายคําส่งั ได ดงั นี้ คาํ สง่ั WHILE เปน การวนรอบซา้ํ ในขณะท่เี ง่ือนไขเปน จริงเพ่อื ทําคําส่ังท่ี 1 และคาํ สง่ั ท่ี 2 แตห ากเง่อื นไขเปน เท็จก็จบการวนซ้าํ
28 การเขยี นโปรแกรมเชงิ โครงสรา งดว ยภาษาซี ตวั อยา งการใชงานรหัสจาํ ลอง 1. ใหนบั จํานวนนักศึกษาทีอ่ ายุ มากกวา หรือเทากบั 20 ป และจาํ นวนนกั ศึกษาท่อี ายุ นอยกวา 20 ป IF student’s age >= 20 THEN AdultCounter = AdultCounter + 1 ELSE JuniorCounter = JuniorCounter + 1 ENDIF 2. ใหนบั จาํ นวนพนักงานหญิง และพนกั งานชาย โดยนบั จากขอ มูลรหัสเพศ และตรวจสอบ ดว ยวา ขอมลู รหัสเพศทีไ่ มถูกตองมีกค่ี น IF employee’s sex is female THEN FemaleCounter = FemaleCounter + 1 ELSE IF employee’s sex is male THEN MaleCounter = MaleCounter + 1 ELSE ErrorCounter = ErrorCounter + 1 ENDIF ENDIF 3. ใหนับจํานวนช่วั โมงการทาํ งานทเ่ี กนิ 30 ชัว่ โมง IF hour worked > 30 THEN TotalIncome = HourlyWage x NumberOfHoursWorkedOT PRINT TotalIncome ENDIF 4. จงเขยี นรหสั จําลองหาพ้ืนทขี่ องวงกลมกาํ หนดให สตู รพนื้ ท่ีวงกลม = 3.1415 x รศั มี x รศั มี Area of cycle Read radius Compute Area = 3.1415 * radius * radius Display Area End
ระบบการเขียนโปรแกรม 29 5. ทาํ การวนรอบเพอ่ื พมิ พร ายชื่อลกู คา จํานวน 5 คน Print Heading Initialize Counter to 1 Repeat Read CustName Print CustName Increment Counter by 1 Until Counter > 5 End 6. ทําการวนรอบเพอ่ื พิมพช อ่ื และทอี่ ยูของลกู คา จนหมดแฟมขอ มลู Print Heading Read CustRecord Repeat While not EndOfFile Print CustName , CustAddress Read CustRecord EndRepeat ตัวอยา งการเขียนแนวคดิ การทาํ งานเชงิ อลั กอรทิ มึ และรหสั จําลอง ตามท่ีกลาวมาแลววา ขนั้ ตอนการแกป ญ หาโจทยท างคอมพิวเตอรตองใชแนวคิดอยาง เปน ขั้นตอนในเชงิ ของอัลกอริทึม จึงขอยกตัวอยางเพ่ือการแกโจทยใหลุลวงและสูผลสําเร็จ ซงึ่ อธบิ ายโดยสรุปดังน้ี 1. ระบสุ ่งิ ทโ่ี จทยต องการ 2. ระบขุ อ มลู นาํ เขา อาจสรุปไดวา มี 2 ลักษณะ 2.1 กาํ หนดขอมลู นําเขาลงในโปรแกรมโดยตรงเชน คา PI เปน ตน 2.2 รับขอมูลนําเขา จากสอื่ ตา ง ๆ ทเ่ี กย่ี วของ 3. ตง้ั ชือ่ ตวั แปรทเ่ี ก่ียวของโดยระบคุ วามหมายของตวั แปรทีใ่ ชแ ทนใหชดั เจน 4. กาํ หนดวิธีการประมวลผล เชน 4.1 กาํ หนดคาเริ่มตน 4.2 พิมพข อ ความทเ่ี กย่ี วขอ งเพื่อสอดคลองกับขอมลู 4.3 รับขอมูลนําเขาตามการวิเคราะหห รอื ตามที่โจทยบอก (ถา มี)
30 การเขยี นโปรแกรมเชงิ โครงสรางดว ยภาษาซี 4.4 ระบกุ ารดาํ เนินการเชน สมการ หรือการเปรยี บเทียบเงอ่ื นไข 4.5 แสดงผลลพั ธใ นสงิ่ ทตี่ องการ 5. นาํ เสนอแมแ บบดวยผงั งาน หรอื รหสั จําลอง ตัวอยาง จงเขียนโปรแกรมรับคารัศมีของวงกลมแลวคํานวณและแสดงผลคาพื้นท่ี และเสนรอบวงของวงกลมโดยใหนกั ศกึ ษาคิดสตู รเอง 1. วเิ คราะหโจทย 1.1 โจทยต อ งการหาคาของพนื้ ทีว่ งกลม และเสน รอบวง 1.2 ขอมลู นําเขา คารศั มี ทีเ่ ปน ตวั เลข โดยรับทางแปน พมิ พ 1.3 ขอ มูลนําออก คา ของพ้นื ท่ีวงกลม และเสน รอบวง แสดงออกทางจอภาพ 1.4 ตัวแปรทใ่ี ช Area = คาของพื้นทีว่ งกลม แสดงผลออกทางจอภาพ r = คาของรัศมี รบั ขอ มูลทางแปน พิมพ Circum = เสน รอบวง แสดงผลออกทางจอภาพ 2. การประมวลผล 2.1 เร่มิ ตนการทาํ งาน 2.2 รับคา r ทางแปน พมิ พ 2.3 คาํ นวณ Area = 3.1415926* r * r 2.4 คํานวณ Circum = 2 * 3.1415926 * r 2.5 แสดงผลคา Area ออกทางจอภาพ 2.6 แสดงผลคา Circum ออกทางจอภาพ 2.7 จบการทํางาน
ระบบการเขยี นโปรแกรม 31 3. ผังงานโปรแกรม รปู ท่ี 1.17 แสดงผังงานการทํางานของโปรแกรมหาคา พน้ื ท่แี ละเสนรอบวงของวงกลม 4. การเขียนรหสั จาํ ลอง Start Read variable r on keyboard Compute Area = 3.1415926 * r * r Compute Circum = 2 * 3.1415926 * r Display Area , Circum End
32 การเขียนโปรแกรมเชิงโครงสรา งดว ยภาษาซี ตัวอยา งท่ี 2 จงเขียนโปรแกรมปอนคะแนนทดสอบจํานวน 5 คา ทางแปนพิมพ แลว นาํ มาหาคาผลรวมและหาคาเฉล่ียของคา ที่ปอนเขา มา โดยแสดงผลคาํ ตอบออกทางจอภาพ 1. วเิ คราะหโ จทย 1.1 โจทยต องการ หาคาผลรวมและคาเฉล่ียของตัวเลขท่ีปอนเขามาทางแปนพิมพ จํานวน 5 คา 1.2 ขอ มูลนาํ เขา คะแนนทเ่ี ปน ตวั เลข จํานวน 5 คา โดยรับทางแปนพมิ พ 1.3 ขอมูลนาํ ออก คาผลรวมและคาเฉลี่ยของคะแนนตัวเลข 5 คา แสดงออกทาง จอภาพ 1.4 ตัวแปรทใี่ ช T1 = คะแนนทดสอบคา ท่ี 1 รับทางแปนพมิ พ T2 = คะแนนทดสอบคาท่ี 2 รับทางแปน พิมพ T3 = คะแนนทดสอบคา ที่ 3 รบั ทางแปน พมิ พ T4 = คะแนนทดสอบคา ท่ี 4 รับทางแปนพมิ พ T5 = คะแนนทดสอบคาที่ 5 รับทางแปนพมิ พ Sum = ผลรวมของคะแนน 5 คา Average = คา เฉลี่ยของคะแนน 5 คา 2. การประมวลผล 2.1 เริม่ ตน การทํางาน 2.2 รบั คา T1 ทางแปน พมิ พ 2.3 รับคา T2 ทางแปน พมิ พ 2.4 รบั คา T3 ทางแปน พมิ พ 2.5 รบั คา T4 ทางแปน พิมพ 2.6 รับคา T5 ทางแปนพมิ พ 2.7 คํานวณ Sum = T1 + T2 + T3 + T4 + T5 2.8 คํานวณ Average = Sum / 5 2.9 แสดงผลคา Sum ออกทางจอภาพ 2.10แสดงผลคา Average ออกทางจอภาพ 2.11 จบการทาํ งาน
ระบบการเขียนโปรแกรม 33 3. ผังงานโปรแกรม รปู ที่ 1.18 แสดงผังงานการทํางานของโปรแกรมหาคาผลรวมและคาเฉลีย่ ของคะแนน 5 คา 4. การเขียนรหัสจําลอง Start Read variable T1,T2,T3,T4,T5 on keyboard Compute Sum = T1 + T2 + T3 + T4 + T5 Compute Average = Sum / 5 Display Sum , Average End
34 การเขยี นโปรแกรมเชิงโครงสรา งดว ยภาษาซี ตวั อยา งท่ี 3 จงเขียนโปรแกรมคดิ คาโบนัสใหกับพนักงานของบริษัทเงินทุนแหงหน่ึง โดยกําหนดใหม ีเงื่อนไข ดังนี้ เงินเดือนระหวา ง 1 – 5,000 บาท ใหโบนสั 2.5 เทา ของเงินเดอื น เงนิ เดือนระหวา ง 5,001 - 9,000 บาท ใหโ บนสั 4.5 เทาของเงินเดอื น เงินเดอื นมากกวา 9,001 บาท ใหโ บนสั 8.5 เทาของเงินเดอื น ถา ทํางานตง้ั แต 1 - 7 ป เพ่ิมเงินพิเศษ 5,000 บาท ถา ทํางานต้งั แต 8 - 15 ป เพ่ิมเงินพิเศษ 7,000 บาท ถาทํางานมากกวา หรอื เทากบั 16 ป เพม่ิ เงินพิเศษ 10,000 บาท 1. วิเคราะหโจทย 1.1 โจทยต อ งการ หาคา โบนสั จากยอดเงนิ เดือนและระยะเวลาปของการทาํ งาน 1.2 ขอ มลู นําเขา คายอดเงนิ เดอื น และระยะเวลาปข องการทํางาน รบั ทางแปน พิมพ 1.3 ขอมูลนําออก คาโบนัสท่ไี ดหลงั จากการคาํ นวณ แสดงผลทางจอภาพ 1.4 ตัวแปรทใ่ี ช S = ยอดเงนิ รายไดเ งนิ เดอื น Y = ระยะเวลาการทํางานเปน ป B = ผลการคํานวณโบนสั จากเงินเดือน BONUS = เงินโบนัสทตี่ องจายตามเงื่อนไข 2. การประมวลผล 2.1 เริ่มตน การทํางาน 2.2 รบั คา S , Y ทางแปน พมิ พ 2.3 ถา S >= 1 และ S <= 5000 ใหค าํ นวณ B = 2.5 * S หากไมใชเงื่อนไขนี้ ใหไ ปทําขอ 2.4 2.4 ถา S>= 5001 และ S <= 9000 ใหค ํานวณ B = 4.5 * S หากไมใชเงื่อนไข นใี้ หไ ปทําขอ 2.5 2.5 ถา S>= 9001 ใหค าํ นวณ B = 8.5 * S 2.6 ถา Y >= 1 และ Y <= 7 ใหคํานวณ BONUS = B + 5000 หากไมใช เง่อื นไขน้ีใหไ ปทาํ ขอ 2.7 2.7 ถา Y >= 8 และ Y <= 15 ใหคํานวณ BONUS = B + 7000 หากไมใช เงอ่ื นไขนใ้ี หไปทาํ ขอ 2.8
ระบบการเขียนโปรแกรม 35 2.8 ถา Y >= 16 ใหคาํ นวณ BONUS = B + 10000 2.9 แสดงคา BONUS ออกทางจอภาพ 2.10จบการทาํ งาน 3. ผงั งานโปรแกรม รูปท่ี 1.19 ผังงานการทํางานของโปรแกรมหาโบนัสของเงอ่ื นไขจํานวนเงนิ รายรับ และจํานวนปทท่ี าํ งาน
36 การเขยี นโปรแกรมเชงิ โครงสรางดว ยภาษาซี 4. การเขียนรหสั จําลอง Start Read variable S , Y on keyboard IF Salary (S>=1 && S<=5000) THEN Compute B=2.5*S; ELSE IF Salary (S>=5001 && S<=9000) THEN Compute B=4.5*S; ELSE IF Salary (S>=9001) THEN Compute B=8.5*S; ENDIF IF Year (Y>=1 && Y<=7) THEN Compute BONUS=B+5000; ELSE IF Year (Y>=8 && Y<=15) THEN Compute BONUS=B+7000; ELSE IF Year (Y>=16 ) THEN Compute BONUS=B+10000; ENDIF Display BONUS END ตัวอยางท่ี 4 จงเขียนโปรแกรมเพื่อหาผลรวมของเลข 1 ถึง เลข 100 แลวแสดงผล คา ผลรวมออกทางจอภาพ 1. วเิ คราะหโจทย 1.1 โจทยต องการ คาผลรวมของเลข 1 ถึงเลข 100 แสดงผลออกทางจอภาพ 1.2 ขอ มลู นาํ เขา ไมม ี เพราะเปน การกําหนดคา การทํางานในโปรแกรม 1.3 ขอ มูลนาํ ออก คาผลรวมของเลข 1 ถึงเลข 100 แสดงผลออกทางจอภาพ 1.4 ตัวแปรทใ่ี ช ให Sum = เกบ็ ผลรวมของเลข 1 ถึง 100 X = คา เคล่ือนท่ีของตัวแปรตงั้ แตค าเรม่ิ ตน และเคลื่อนไหวตาม X +1 2. การประมวลผล 2.1 เร่ิมตนการทาํ งาน 2.2 ให Sum = 0 เพอ่ื ใหเกบ็ คา เริม่ จาก 0 2.3 ให X = 1 เพราะโจทยก ําหนดใหเรม่ิ จาก 1 2.4 ให Sum = Sum + X 2.5 ให X = X + 1 เพราะตอ งการเคลื่อนเพม่ิ คาครงั้ ละ 1
ระบบการเขยี นโปรแกรม 37 2.6 ถา X <= 100 หากเงือ่ นไขเปน จรงิ ใหท าํ ขอ 2.4 , ขอ 2.5 และขอ 2.6 เปรยี บเทยี บจนกวา คาของ X จะมคี า มากกวา 100 (เปนเทจ็ ) จึงไปทาํ ขอ 2.7 2.7 ใหแ สดงคา Sum ออกทางจอภาพ 2.8 จบการทํางาน 3. ผังงาน เรมิ่ ตน Sum = 0 X=1 X <= 100 No แสดงคา Sum Yes Sum = Sum + X X=X+1 จบการทํางาน รปู ท่ี 1.20 ผงั งานการทํางานของโปรแกรมเพอ่ื หาผลรวมของเลข 1 ถึงเลข 100 4. การเขยี นรหสั จําลอง Start Let variable Sum = 0; Let variable x = 1 REPEAT WHILE (X<=100) Sum = Sum + X; X = X + 1; END REPEAT Display Sum END
38 การเขียนโปรแกรมเชงิ โครงสรางดว ยภาษาซี สรุปเนือ้ หาทา ยบท โปรแกรม คือ สวนของคําสั่งที่นํามาเรียงตอกัน เกิดกระบวนการหรืองานและมี ความหมายของระบบปฏิบัติงานหรอื ผลการทํางานขึ้นอยางใดอยางหน่ึงอยางชัดเจน แลวเมื่อ นําเอาเคร่อื งคอมพิวเตอรม าทาํ งานตามคําสั่งทเ่ี ราวางตอ ๆ กันไวท ลี ะคําส่ัง ภาษาคอมพิวเตอร ประกอบดว ย ภาษาเครื่อง ภาษาระดบั ตา่ํ และภาษาระดบั สงู ภาษาเคร่ือง (Machine Language) ทาํ งานเปน ระบบไฟฟาสญั ญาณไฟฟา คอื 0 และ 1 เราเรียกวารหัสเลขฐานสอง เมื่อมีการปอนรหัสเลขฐานสองเขาไปในตัวเคร่ืองคอมพิวเตอร เครื่องก็สามารถรูและเขาใจไดทันทีวาเปนคําส่ังอะไร แตดวยตัวภาษาระดับตํา่ เปนรหัสของ เลขฐานสองทอี่ อกแบบยากมากและใชเวลา และเปนภาษาทเ่ี ขา ใจยากในมนษุ ยป ุถุชน ภาษาแอสเซมบลี (Assembly Language) เปนคาํ สน้ั ๆ ในรปู ของภาษาองั กฤษแทนรหสั เลขฐานสอง ทาํ งานไดเร็ว เพราะมีการประมวลผลไดเ รว็ ทส่ี ดุ บางครัง้ เราเรียกภาษาเคร่ืองวา “ภาษาระดับต่ํา” ภาษาระดับสูง (High Language) คือ ชุดคาํ ส่ังท่ีส่ือสารกันอยางคลองตัวและเขาใจ ความหมายใกลเคยี งกับภาษามนษุ ยเปนภาษาคอมพิวเตอรห ลายภาษาข้ึนมา แตเครอื่ งคอมพิวเตอร จะรบั รไู ดก ็ตอเม่ือมกี ารแปลภาษาเทา นนั้ การเขยี นโปรแกรมดว ยภาษาระดับสูงโดยแปลจากตนฉบับโปรแกรม (Source Program) หรือ รหสั ตนฉบบั (Source Code) ใหเปนภาษาเคร่อื ง (Executable Program) ท่ีสามารถทํางาน ไดท ันที การแปลภาษาสามารถแบง ตามลักษณะการแปลออกเปน 2 ประเภท คือ อินเทอรพ รเี ตอร (Interpreter) และคอมไพเลอร (Compiler) อินเทอรพ รเี ตอร (Interpreter) จะทําการแปลคําส่ังท่เี ขยี นดวยภาษาชั้นสูงใหเปนภาษา เครอื่ งทลี ะคาํ สงั่ และทาํ งานตามคาํ ส่งั นนั้ ทันที กอ นท่ีจะแปลคําสงั่ ตอ ไปจนจบโปรแกรม คอมไพเลอร (Compiler) ทําหนา ที่ แปลตนฉบบั ของโปรแกรม (Source Program) ภาษา ระดบั สงู ทั้งโปรแกรมใหเปนรหสั ออ็ บเจกต (Object Code) ซึ่งประกอบดวยภาษาเครื่องท่ีมีรหัส สั่งงาน ออปเจกตโ ปรแกรมน้ยี ังไมสามารถทํางานได จะตองผานการลิงค (Link) หรือรวมเขา กบั ไลบราร่ี (Library) ของระบบกอนจึงจะเปนโปรแกรมที่สามารถทํางานไดหรือเปนภาษา เคร่ืองทเี รยี กวา “เอก ซิคิ๊วโปรแกรม (Executable Program)” การพัฒนาโปรแกรมคอมพิวเตอรมี 5 ข้ันตอน คือ การกําหนดและวิเคราะหปญหา ของงาน มกี ารออกแบบโปรแกรมโดยเขยี นผังงานและรหัสจําลองหรือซูโดโคด นําการออกแบบมา
ระบบการเขยี นโปรแกรม 39 เขยี นโปรแกรมตามการออกแบบ นําโปรแกรมทดลองใชเ พือ่ ทดสอบและแกไขโปรแกรม และมี การจัดทําเอกสารและบํารงุ รักษาโปรแกรม อัลกอรทิ ึม (Algorithm) หมายถงึ วิธีการหรือกระบวนการทาํ งานใดงานหน่ึงท่ีสามารถ แบงขนั้ ตอนออกเปนยอ ย ๆ ที่แนนอน ซ่ึงเมื่อทราบขั้นตอนการทาํ งานท่ีแนนนอนแลว ก็จะนาํ อลั กอรทิ มึ ที่ไดน ้ันมาวาดเปนผังงานจากนนั้ จึงแปลงเรื่องราวในผังงานเปนภาษาระดับสูงเขียน เปนโปรแกรมส่งั งานใหเครือ่ งคอมพวิ เตอรเขา ใจ และปฏบิ ัติการทาํ งานตามทอี่ อกคําส่ัง ปญหาประเภทท่ีมีลาํ ดับข้ันในการแกปญหา เมื่อแกปญหาตามขั้นตอนก็ไดคําตอบ ตามตองการ ขัน้ ตอนการวเิ คราะหป ญหาเชงิ อลั กอริทึม มี 3 ข้ันตอน คือ ข้นั วิเคราะหผลลัพธ ขน้ั วเิ คราะหข อ มูล ข้ันวิเคราะหก ระบวนการแกป ญ หาหรอื ข้ันการประมวลผล ผงั งาน (Flowchart) คอื แผนภาพซงึ่ แสดงลาํ ดบั ขัน้ ตอนของการทาํ งาน โดยแตล ะข้ันตอน จะถกู แสดงโดยใชส ญั ลักษณซ่งึ มคี วามหมายบงบอกวา ข้ันตอนน้ัน ๆ มีลักษณะการทํางานที่ ทําใหงายตอความเขาใจ วาในการทํางานน้ันมีขั้นตอนอะไรบาง และมีลําดับอยางไร ผังงาน ทั่วไปจะประกอบดวยโครงสรางพ้ืนฐาน 3 รูปแบบ คือโครงสรางแบบเปนลําดับ (Sequence structure) โครงสรางแบบมีตัวเลือก (Selection structure) และโครงสรางแบบทําซํ้า (Iteration structure) การเขียนแนวคดิ การทํางานของการสรางโปรแกรมจะประกอบไปดวย วิเคราะหโจทย การประมวลผล ผังงาน และการเขียนรหัสจําลอง
40 การเขยี นโปรแกรมเชิงโครงสรา งดว ยภาษาซี แบบทดสอบทา ยบท ตอนท่ี 1 จงใชเ ครอ่ื งหมาย X ทับตัวเลอื กท่ถี กู ตอ งที่สดุ 1. ขอ ใดเปน ความหมายของโปรแกรมระดบั สูง ก. ภาษาที่มนุษยใชส อ่ื สารกนั เชน ภาษาองั กฤษ ภาษาไทย เปน ตน ข. ภาษาท่ีประกอบดวยตัวเลขฐานสอง ซึง่ คอมพิวเตอรใ ชป ระมวลผลไดท นั ที ค. ภาษาที่สรา งขึ้นเพื่ออาํ นวยความสะดวกในการเขยี นโปรแกรมคําสง่ั จากคาํ ศพั ท ภาษาอังกฤษ ง. ภาษาท่ีมีความใกลเคยี งกับภาษาเคร่ืองหรอื ทเ่ี รยี กวา ภาษาองิ เครอ่ื ง (machine- oriented language) 2. อนิ เทอรพ รีเตอรเ ปน ตวั แปลภาษาคอมพิวเตอรใด ก. ภาษาปาสคาล ข. ภาษาฟอรแ ทน ค. ภาษาซี ง. ภาษาเบสิค 3. โปรแกรมแอสเซมเบอร คอื อะไร ก. ตัวแปลภาษาซี ข. ตวั แปลภาษาเบสคิ ค. ตวั แปลภาษาแอสเซมบลี ง. ตัวแปลภาษาฟอรแทน 4. การแปลภาษาคอมพิวเตอรเปน รหสั ภาษาเคร่อื งทแ่ี ปลทลี ะกลมุ คําสง่ั เรียกวาอะไร ก. ไทเมอร ข. คอมไพเลอร ค. อินเทอรพรีเตอร ง. แอสเซมเบอร 5. ขอใดใชตัวแปลภาษาแบบอนิ เทอรพรเี ตอร ก. ASP ข. Perl ค. PHP ง. ถกู ทกุ ขอ 6. คําวา “อลั กอริทมึ ” หมายถึงขอใด ก. ระเบียบวิธกี ารเพอ่ื สกู ารปฏิบัติ ข. กฎเกณฑแนวทางความเขาใจการทาํ งานรวมกนั ค. วธิ ีคิดแสดงแกป ญ หาการทํางาน ง. ถกู ทกุ ขอ 7. ขอ ใดกลาวถงึ ผงั งานไดถ กู ตอ งที่สดุ ก. ใชใ นการชวยเขียนอธิบายข้นั ตอนการประมวลผลไดด กี วาขอความ ข. การอธบิ ายการทาํ งานดว ย Flowchart ไมสามารถอธิบายการทาํ งานไดช ดั เจน ค. เปน การอธิบายขน้ั ตอนการประมวลผลดวยสัญลกั ษณต า ง ๆ ประกอบกัน ง. สามารถเลือกใชส ญั ลักษณไ ดต ามสะดวกและความพอใจ
ระบบการเขยี นโปรแกรม 41 8. ขอใดกลาวไมถกู ตองเกย่ี วกับสัญลักษณท ี่ใชเ ปน จุดเริ่มตนของผังงาน ก. มีทศิ ทางเขา และออกอยา งละ 1 ทิศทาง ข. ในแตละผงั งานมไี ดเ พียง 1 สัญลกั ษณ ค. เปนสัญลกั ษณทใี่ ชบ อกจดุ เริม่ ตน ของผังงาน ง. ทกุ ผังงานจะตองประกอบดว ยจดุ เรมิ่ ตน 9. ขอใดกลาวถกู ตองท่สี ดุ เกีย่ วกับการทาํ งานของโครงสรางผังงานแบบการเลอื กทํา หลังจาก การตรวจสอบเงือ่ นไขเสรจ็ เรยี บรอยแลว ก. จะทําขัน้ ตอนการทํางานสองทศิ ทางพรอ มกัน ข. จะทาํ ขน้ั ตอนการทํางานทง้ั สองทศิ ทาง แตจ ะทาํ ครั้งละหนงึ่ ทศิ ทาง ไมพ รอมกนั ค. จะเลอื กทาํ ขนั้ ตอนการทาํ งานเพยี งทศิ ทางใดทิศทางหน่งึ ตามเงื่อนไขเทา นนั้ ง. ผดิ ทกุ ขอ 10. คุณลกั ษณะของโปรแกรมทด่ี ีควรเปน อยางไร ก. มคี วามเขา กนั ได ข. มคี วามสามารถนํากลับมาใชใ หม ค. ตองอานงา ย ง. ถูกทกุ ขอ 11. สญั ลกั ษณของผงั งานในขอ ใด ใชสําหรับการแสดงผลทางจอภาพ ก. ข. ค. ค. ง. 12. สญั ลกั ษณของผงั งานในขอ ใด ใชในการรบั คาเขาและแสดงผลขอ มลู ออกโดยไมร ะบุอปุ กรณ ก. ก. ข. ค. . ง. 13. ในโครงสรางผังงาน การมีตัวเลอื ก การทํางานในขอใดจะตอ งทาํ เปนอันดับแรก ก. การคาํ นวณ ข. การตดั สินใจ ค. การรับคา ขอมลู ง. บอกจดุ ส้ินสุดของผงั งาน 14. เมอื่ ตอ งการพัฒนาสรา งโปรแกรมคอมพวิ เตอร สงิ่ แรกทตี่ องทําคอื อะไร ก. เลอื กภาษาท่ตี อ งใชเขยี น ข. วเิ คราะหปญหา
42 การเขียนโปรแกรมเชิงโครงสรา งดว ยภาษาซี ค. เขยี นรหสั จาํ ลอง ง. เขียนโปรแกรม จากโจทยท ีก่ าํ หนดใหตอไปนี้ ใชตอบคาํ ถามขอ 15 ถงึ ขอ 19 จงแกปญ หาโจทย เพื่อคาํ นวณและแสดงผลคาพ้ืนที่สี่เหลี่ยมผืนผาบนจอภาพ โดยรับ ขนาดความกวา งและตามยาวของส่เี หลีย่ มทางแปน พิมพ 15. จากการวิเคราะหร ะบบงาน สง่ิ ทต่ี องการ คอื ขอใด ก. ขนาดพ้นื ทส่ี เ่ี หลี่ยมผืนผา ข. ใหร บั ขนาดความกวา งและความยาวของพ้ืนทสี่ ี่เหลยี่ มทางแปนพิมพ ค. สูตรคํานวณขนาดพื้นที่สีเ่ หลยี่ ม ง. สงิ่ ท่ีตองการคือ ขอ ก. และขอ ข. 16. จากการวิเคราะหระบบงาน รปู แบบผลลพั ธคือขอ ใด ก. แสดงขนาดพนื้ ท่ีส่เี หล่ียมผนื ผา ข. แสดงขนาดความกวางและความยาวของพน้ื ที่ส่ีเหลย่ี มทางแปนพมิ พ ค. แสดงสูตรคาํ นวณขนาดพน้ื ทสี่ ีเ่ หลี่ยม ง. ถูกทกุ ขอ 17. จากการวเิ คราะหร ะบบงาน ขอ มูลนําเขา คือขอใด ก. ขนาดพนื้ ทส่ี ี่เหล่ียมผืนผา ข. ขนาดความกวา งและความยาวของพ้นื ทสี่ เ่ี หลย่ี มทางแปนพิมพ ค. สตู รคํานวณขนาดพน้ื ท่ีสี่เหล่ยี ม ง. ขอ มลู นาํ เขา คอื ขอ ข. และขอ ค. 18. จากการวิเคราะหโ จทยร ะบบงาน ตวั แปรทใี่ ชม ีทง้ั หมดกตี่ วั แปร ก. 2 ตัวแปร ข. 3 ตัวแปร ค. 4 ตวั แปร ง. 5 ตัวแปร 19. จากการวิเคราะหร ะบบงาน อลั กอรทิ มึ ปญหาโจทยน มี้ ีจาํ นวนกีข่ อ ก. 5 ขอ ข. 6 ขอ ค. 7 ขอ ง. 8 ขอ
ระบบการเขยี นโปรแกรม 43 Start Start c=a a=b i=1 Read b=c Read a,b a,b a > b No i=i+5 x=a+b+i Yes Print x Print a , b End End รูปที่ 1 รปู ที่ 2 จากผังงานรปู ท่ี 1 ใชตอบคําถามขอที่ 20 ถงึ ขอท่ี 21 20. ตัวแปร x จะมีคา เทาใด หากตัวแปร a รบั คา 5 และตวั แปร b รบั คา 7 ก. 10 ข. 12 ค. 13 ง. 18 21. ตัวแปร x จะมคี าเทาใด หากตวั แปร a รบั คา 2 และตวั แปร b รบั คา 4 ก. 7 ข. 11 ค. 12 ง. 18 จากผังงานรปู ที่ 2 ใชต อบคาํ ถามขอที่ 22 ถึงขอท่ี 25 22. หากรบั คาใหต วั แปร a คอื 10 และตวั แปร b คือ 7 หลงั จากที่ผงั งานน้ีทาํ งานเสรจ็ เรยี บรอยแลว คาของตวั แปร a และ b จะแสดงผลเทากบั เทาใด ก. 3 , 17 ข. 7 , 10 ค. 10 , 7 ง. 17 , 3 23. หากรบั คา ใหตวั แปร a คอื 7 และตัวแปร b คือ 10 หลงั จากทผี่ ังงานนที้ าํ งานเสรจ็ เรียบรอ ยแลว คาของตัวแปร a และ b จะแสดงผลเทา กบั เทาใด ก. 3 , 17 ข. 7 , 10 ค. 10 , 7 ง. 17 , 3 24. เม่ือตรวจสอบเงื่อนไขเรยี บรอ ยแลว ขอมลู เขา a และ b จะมีลักษณะแบบใด ทศิ ทางของ ผงั งานจึงจะไปในทศิ ทางท่ีมีตวั อกั ษร No กาํ กบั อยู ก. a นอ ยกวา หรือเทา กับ b ข. a นอยกวา b ค. a มากกวาหรอื เทา กบั b ง. a มากกวา b
44 การเขียนโปรแกรมเชิงโครงสรางดว ยภาษาซี 25. การตรวจสอบเงอ่ื นไขของ a และ b ของผังงานทกี่ าํ หนดให จดั เปนโครงสรางการทาํ งาน แบบใด ก. โครงสรางผังงานการทําซา้ํ ข. โครงสรางการทาํ งานแบบมเี งอ่ื นไข ค. โครงสรางผงั งานแบบตอ เน่ือง ง. ไมส ามารถจาํ แนกลักษณะของโครงสรางผังงานได ตอนท่ี 2 จงตอบคาํ ถามที่กาํ หนดใหตอ ไปน้ี ใหถกู ตองสมบรู ณ 1. จงอธิบายความหมายของผังงานและประโยชนข องผงั งาน 2. ใหน กั ศกึ ษาเขยี นและอธิบายขัน้ ตอนการสรางและพฒั นาโปรแกรมท้งั หมด 3. จงเขยี นผังงานโดยใชเครอ่ื งหมายสญั ลกั ษณใหถกู ตอ งแสดงรายละเอยี ดเกีย่ วกับขนั้ ตอน ระบบการวดั ประเมนิ ผลการเรยี นของนกั ศกึ ษา โดยมกี ารแสดงผลการเรยี นเกรดตง้ั แต 0 - 4 มรี ายละเอียดดงั น้ี คะแนน 0 - 49 ไดผ ลการเรียนเกรด 0 คะแนน 50 - 54 ไดผลการเรียนเกรด 1 คะแนน 55 - 59 ไดผลการเรยี นเกรด 1.5 คะแนน 60 - 64 ไดผลการเรยี นเกรด 2 คะแนน 65 - 69 ไดผลการเรยี นเกรด 2.5 คะแนน 70 - 74 ไดผลการเรยี นเกรด 3 คะแนน 75 - 79 ไดผ ลการเรียนเกรด 3.5 คะแนน 80 - 100 ไดผลการเรยี นเกรด 4 4. จงแกปญ หาโจทยรบั เงนิ คาโทรศพั ทจ ํานวน 3 เดือน โดยใหร ับขอมูลทางแปนพิมพ แลว หาคา ผลรวม และคาเฉลีย่ ของเงินทจี่ ายคาโทรศพั ท 3 เดอื นกาํ หนดใหผ ลรวมและคาเฉล่ยี ของการจายคา โทรศพั ท แสดงออกทางจอภาพดังนี้ Input : Input mounts 1 => 200 Input mounts 2 => 300 Input mounts 3 => 350 Output : Result Sum pay money => ???? Result value Average => ???
Search
Read the Text Version
- 1 - 44
Pages: