บทที่ 1 ภาษาคอมพิวเตอร์และการ ...1 บทท 1...
TRANSCRIPT
1
บทท 1
ภาษาคอมพวเตอรและการพฒนาโปรแกรม
1. ภาษาคอมพวเตอร
เครองคอมพวเตอรเปนอปกรณทประมวลผลดวยวงจรทางอเลกทรอนกส ทท างานดวยระบบ
ดจตอล การทสอสารกบคอมพวเตอรหรอสงงานใหคอมพวเตอรรบรและเขาใจกตองสอสารดวยสญญาณ
ดจตอล ส าหรบมนษยเราสามารถสอสารพดคยโดยใชภาษาเปนสอกลาง ซงภาษาทใชจะตองท าใหผสงสาร
และผรบสารเขาใจตรงกนดวย ดงนนเชนเดยวกนการทจะท าใหมนษย สามารถสอสาร หรอสงงาน
คอมพวเตอรไดกจะ ตองอาศยภาษาคอมพวเตอรเขามาเปนสอกลาง สรปวา ภาษาคอมพวเตอร หมายถง
สญลกษณ อกขระบนคอมพวเตอรทถกก าหนดขนมาเพอใหมนษยสามารถสงงานและควบคมให
คอมพวเตอรท างานไดตรงกบตามทตองการ
ภาษาทมนษยใชในแตละประเทศกแตกตางกนไป เชน ภาษาองกฤษ เยอรมน ฝรงเศส ซงภาษา
เหลานจะมอกขระ ส าเนยง และไวยากรณโครงสรางของภาษาทใชในการสอสารทแตกตางกนออกไปตาม
ทองถนของชนชาตประเทศนน เชนเดยวกนภาษาคอมพวเตอรกจะมไวยากรณและการใชแตกตางกนไป
ตามการคนคดของผสรางภาษา จงท าใหเกดเปนภาษาตาง ๆ ตามทเราเคยไดยน เชน ภาษา C , ภาษา
Pascal และภาษา HTML เปนตน และเมอมการน าภาษาคอมพวเตอรมาเรยบเรยงตามไวยากรณเพอ
สงงานใหคอมพวเตอรท างานในสงทตองการ เรากจะเรยกกลมค าสงการท างานนนวา โปรแกรม นนเอง
คอมพวเตอรใชสญญาณดจตอล (Digital) ในการท างาน ดงนนคอมพวเตอรจะรจกและท างานกบ เลขฐานสองซงกคอ 0 และ 1 เทานน โดยค าสงทเปน 0 และ 1 นจะถกเรยกวาภาษาเครองดงนนการสงงานใหคอมพวเตอรท างานจะตองมการเขยนค าสงทประกอบไปดวย 0 และ 1 แตในความเปนจรงการเขยนค าสงดวย 0 และ 1 สามารถท าไดยากเพราะตองเขยนค าสงมากมายและมนษยกยากทจะเขาใจค าสงของภาษาเครอง ดงนนจงไดมการคดคนภาษาทใชแทนภาษาเครอง และท าการแปลภาษาทคดคนขนมานใหเปนภาษาเครองเพอไปสงงาน คอมพวเตอรอกครงหนง
ภาษาคอมพวเตอร (Computer Languages) หมายถงภาษาทใชส าหรบเขยนชดค าสงเพอให คอมพวเตอรท างานตามทก าหนด โดยชดค าสงทถกเขยนขนนจะถกเรยกวาโปรแกรม (Program) ซงในปจจบนมภาษาคอมพวเตอรทใชส าหรบการพฒนาโปรแกรมอยมากมายหลายภาษา เซน ภาษาซ ภาษา
2
เบสค ภาษาจาวา เปนตน โดยในแตละภาษาจะมหลกการเขยนและกฎเกณฑทแตกตางกนไป แตภาษาคอมพวเตอรแตละภาษาจะมลกษณะทคลายกนคอ
มค าสงรบขอมลและแสดงผลขอมล ภาษาคอมพวเตอรทกภาษาตองมค าสงในการรบขอมลจากภายนอกเขาสคอมพวเตอรและจะตอง
มค าสง ส าหรบใชในการแสดงผลขอมลทผานการประมวลผลแลว มค าสงส าหรบการค านวณ ภาษาคอมพวเตอรทกภาษาจะตองมค าสงทใชในการค านวณทางคณตศาสตร คอ บวก ลบ คณ
หาร มค าสงทมการเปรยบเทยบและใหเลอกทศทาง ภาษาคอมพวเตอรจะตองมค าสงทใชส าหรบเปรยบเทยบเพอใชส าหรบตดสนใจในการเลอก
ทศทาง การท างานของโปรแกรม มค าสงส าหรบเกบบนทกขอมลลงหนวยความจ าส ารอง ส าหรบการสงขอมลไปเกบบนทกในสอบนทกอยางใดอยางหนงและมค าสงทเรยกขอมลทเกบอย
นนมาใชไดอก ภาษาคอมพวเตอรจะมลกษณะเชนเดยวกบภาษาทกภาษาบนโลก ซงจะประกอบไปดวย ตวเลข
ตวอกษร ค าศพท (Vocabularies) และไวยากรณ (Syntax)
2. ววฒนาการของภาษาคอมพวเตอร
ภาษาคอมพวเตอรไดถกพฒนามาจากภาษาคอมพวเตอรระดบต า ซงเปนภาษาทมนษยเขาใจยาก ซง ภาษาคอมพวเตอรระดบต านนเปนภาษาทตดตอและสงงานคอมพวเตอรไดโดยตรง จนมาถงในปจจบน ภาษาคอมพวเตอรไดถกพฒนาใหเปนภาษาคอมพวเตอรระดบสงทมนษยสามารถเขาใจไดงายขน การพฒนา โปรแกรมดวยภาษาคอมพวเตอรระดบสงจะเปนไปอยางสะดวกและรวดเรว เนองจากภาษาระดบสงมความ ใกลเคยงกบภาษามนษย ผพฒนาโปรแกรมจงสามารถเขาใจไดงายโดยววฒนาการของภาษาคอมพวเตอรสามารถ แบงไดดงน
1. ภาษายคท 1 ภาษาเครอง (Machine Language) 2. ภาษายคท 2 ภาษาแอสเซมบล (Assembly Language) 3. ภาษายคท 3 ภาษาระดบสง (High-level Language) 4. ภาษายคท 4 ภาษาระดบสงมาก (Very High-level Language) 5. ภาษายคท 5 ภาษาธรรมชาต (Natural Language)
3
ภาษายคท 1 ภาษาเครอง (Machine Language) ภาษาเครอง หมายถง ภาษาของเครองคอมพวเตอรท เขยนแทนดวยเลขฐานสองทสงให
คอมพวเตอร ท างานไดทนท ซงการเขยนค าสงแบบนมนษยไมคนเคย เพราะการแทนค าสงจะเขยนดวย 0 หรอ 1 เมอน าไปแทนสญญาณทางไฟฟาในระบบคอมพวเตอรจะเปน ON หรอ OFF ภาษาเครองจดอยในภาษาระดบต า
รหสค าสงของภาษาเครองจะประกอบไปดวย 2 สวนคอ รหสบอกประเภทของค าสง (Operation Code หรอ Opcode) เปนรหสทสงใหเครองท าการประมวลผล เชน บวก ลบ คณ หาร สวนทสองคอรหสบอกต าแหนงขอมล (Operand) เปนรหสทบอกต าแหนงของขอมลทเกบอยบนหนวยความจ าเ พอใหคอมพวเตอรทราบวาตองน าขอมลต าแหนงใดมาท าการค านวณ ตวอยาง ภาษาเครอง เชน
01010111 010111011111011100011010 01010111 คอ Op-Code 010111011111011100011010 คอ Operand
ภาษายคท 2 ภาษาแอสเซมบล (Assembly Language) ภาษาแอสเซมบล ยงจดอยในภาษาระดบต า และจดเปนภาษาสญลกษณ (Symbolic Language)
เพราะเปนการใชสญลกษณขอความแทนกลมของเลขฐานสอง ความสมพนธระหวางภาษาแอสเซมบลกบภาษาเครองมความใกลเคยงกนมากคอ 1 ค าสงภาษาเครองเทากบ 1 ค าสงของภาษาแอสเซมบล ภาษาเครองเขยนแทนดวย เลขฐานสอง 1 หรอ 0 สวนภาษาแอสเซมบลเขยนแทนดวยสญลกษณหรอ (Mnemonic codes) เปนการน า ตวอกษรมาเขยนเปนตวยอ เชน การบวกใช ADD การลบใช SUB เปนตน การเขยนภาษาชนดนกอนน าไปใชงาน จะตองผานตวแปลภาษากอนทเรยกวา Assembler program เพอเปลยนใหเปนภาษาทเครองคอมพวเตอรเขาใจ คอ ภาษาเครอง (Machine Language) การเขยนค าสงภาษาชนดนไมสะดวกในการพฒนาโปรแกรมแตละครง ตวอยาง ภาษาแอสเซมบลมดงน
B80103 movov ax,00301 B90100 mov CX,00001 BA8000 mov dx,00080 CD13 int 013 C3 retn
ภาษายคท 3 ภาษาระดบสง (High-level language) ภาษาระดบสงเปนภาษาทใชกนอยางแพรหลายในชวงตนป 1960 โครงสรางทางภาษามลกษณะ
เหมอนกบภาษาองกฤษ ท าใหผใชสะดวกสบายในการเขยนค าสงและความตองการของผลลพธ ท าใหผเขยนโปรแกรมลดความยงยากลงไปไดมาก ภาษาระดบสงสวนใหญเปนการเขยนโปรแกรมแบบเชงโครงสราง (Structured Programming) ซงเปนการเขยนโปรแกรมทจะท างานจากบนลงลาง ภาษาระดบสงท าใหผใชเขยนโปรแกรมงายขน โดยจะตองมตวแปลภาษา (Translator) ท าการแปลภาษาตาม
4
กฏเกณฑทก าหนดขนของภาษาระดบสง เพอแปลเปนภาษาเครองทจะน าไปใหคอมพวเตอรท างาน ภาษาระดบสงสวนมากจะใชกบงานทวไป การประยกตใชภาษาคอมพวเตอรสวนมากจะเขยนดวยภาษา Basic , ภาษา FORTRAN , ภาษา COBOL และภาษาระดบสงของคอมพวเตอรทนยมใชคอ ภาษา C
ในการใชงานภาษาระดบสงจะตองแปลภาษาระดบสงทเขยนขนไปเปนค าสงหรอภาษาทเครอง คอมพวเตอรเขาใจ อกนยหนงกคอการแปลภาษาระดบสงใหเปนภาษาเครอง ซงโปรแกรมแปลภาษาสามารถแบงออกไดเปน 2 ประเภทคอ อนเทอรพรเตอร (Interpreter) และคอมไพเลอร (Compiler)
อนเทอรพรเตอร (Interpreter) เปนโปรแกรมแปลภาษาทจะแปลภาษาระดบสงใหเปนภาษาเครอง โดยจะท าการแปลค าสงทละค าสงและมการท างานตามค าสงทแปลนนทนท เมอแปลค าสงหนงเสรจแลวกจะท าการแปลค าสงตอไปตามล าดบ ค าสงทถกแปลเปนภาษาเครองแลวจะไมถกเกบไว เมอตองการใชงานโปรแกรมนอกจะตองท าการแปลค าสงทกครงทตองการใชงานโปรแกรม ท าใหการท างานของโปรแกรมมความไมสะดวก และถาเกดขอผดพลาดของค าสงหนงค าสงใดในโปรแกรม จะตองท าการแกไขค าสงใหถกตองแลวสงใหโปรแกรมสงท างานใหม ตวอยางภาษาทใชตวแปลภาษาแบบอนเทอรพรเตอรไดแก ภาษา BASIC
คอมไพเลอร (Compiler) เปนตวแปลภาษาระดบสงอกชนดหนงทจะท าการแปลค าสงจากภาษาระดบสงใหเปนภาษาเครอง โดยจะแปลค าสงทงโปรแกรมเสรจในครงเดยว โดยกลมค าส งทถกแปลเปนภาษาเครองแลว จะถกจดเกบในรปแบบทเรยกวาออบเจคโปรแกรม (Object Program) คอมพวเตอรจะท างานโดยน าออบเจค โปรแกรมนนไปประมวลผลเพอท างานตอไป
อนเทอรพรเตอร (Interpreter) คอมไพเลอร (Compiler)
1. ท าการแปลโปรแกรมทละค าสงแลวท างานทนทตาม
ค าสงนน
1. ท าการแปลทงโปรแกรมแลวท างานตามค าสงทแปล ตามทได
โปรแกรมไว 2. ไมมการสรางออบเจคโปรแกรม (Object Program) 2. มการสรางออบเจคโปรแกรม (Object Program) 3. มการใขงานหนวยความจ านอย 3. มการใชงานหนวยความจ ามาก 4. ทกครงทมการเรยกใชงานโปรแกรมตองท าการ
แปลภาษาใหมทกครง
4. ทกครงทมการเรยกใชงานโปรแกรมไมตองท าการ แปลภาษา
ใหมเนองจากเรยกใชจากออพเจค โปรแกรมซงถกแปลไวแลว
ภาษายคท 4 ภาษาระดบสงมาก (Very high-level language) เปนยคทมการพฒนาโปรแกรมขนมาเปนระดบท 4 หรอเปนยคทส (Fourth-generation
Language ) หรอ 4GLs เปนการพฒนาสมบตของภาษาไดแตกตางจากยคกอนอยางชดเจน โดยการใช
หลกการเขยนโปรแกรม แบบไมใชโพรซเยอร (Prooedural Language ) ซงแบบเกาเราตองเขยน
โปรแกรมสรางโพรซเยอรแตละตวไวเพอใหท างานในดานตาง ๆ แตยคนโปรแกรมการท างานในสวนตาง ๆ
ตารางท 1.1 ความแตกตางของอนเทอรพรเตอรกบคอมไพเลอร
5
จะถกสรางไวพรอมแลว ดงนนนกพฒนาโปรแกรมไมจ าเปนตองเขยนโปรแกรมขนใหมทงหมด ซงสามารถ
เรยกชดการท างานทมอยแลวมาสรางเปนโปรแกรมใหมทเราตองการไดเลย
ตวอยาง ถาตองการใหรายชอพนกงานทมอยในกรงลอนดอน จะสามารถเขยนโปรแกรมไดสน
มาก ๆ เมอเทยบกบโปรแกรมแบบเกา โดยเพยงแคสงงานสน ๆ ดงน
SELECT First name , Last name
FROM Employees
WHERE City = “London”
จากตวอยางนเปนการเขยนโปรแกรมทสนมาก เนองจากโปรแกรมเปนภาษาทใชมความใกลเคยง
กบภาษาของมนษยมากยงขน หากเราเทยบกบการเขยนโปรแกรมดวยภาษา COBOY กจะพบวาเรา
อาจจะตองเขยนโปรแกรมไดถงหลายรอยบรรทดเลยทเดยว
ขอดของภาษาในยคทส
การเขยนโปรแกรมจะมงหวงทจะไดผลลพธของงานเปนหลกวาอยากไดอะไรโดยไมสนใจวธการท ามากนก
สงเสรมตอการพฒนาเนอหา เนองจากสามารถเขยนและแกไขโปรแกรมไดงาย
ลดเวลาในการอบรมและพฒนาผเขยนโปรแกรมเพราะไมเชยวชาญในการเขยนโปรแกรมกสามารถท าได
ผเขยนโปรแกรมไมจ าเปนตองรและศกษาถงโครงสรางของโปรแกรม และระบบฮารดแวรของเครอง ในยคทสไดมการพฒนาภาษาเพอใชเรยกดขอมล ซงรจกกนในชอ ภาษาเรยกคนขอมล (Query
Language ) เพอชวยใหเราสามารถเรยกแสดงขอมลและตดตอฐานขอมลไดสะดวกยงขน เพราะกอน
หนานถาจะท าการจดเกบและเรยกแสดงขอมลจะตองมการวางแผนไวกอนลวงหนา หากมการเรยกแสดง
ขอมลนอกเหนอจากแผนทก าหนดไว กจะตองใชเวลารอทนาน แตถาเปนการเรยกคนขอมลกจะชวยให
เราเรยกดไดเรวขน และภาษาเรยกคนขอมลทเปนมาตรฐานทรจกกนด คอ SQL (Structured Query
Language )
ภาษาธรรมชาต ( Natural Language )
เปนภาษาโปรแกรมทพฒนามาถงระดบท 5 หรอเรยกวายค ภาษายคทหา ( Fifth generation
Language ) หรอ 5GLs เหตผลทมาของธรรมชาต กเพราะวาเปนภาษาทไกลเคยงกบภาษาธรรมชาตของ
มนษย ซงไมสนใจในเรองของไวยากรณของภาษา เพยงแคผใชพมพค าสงลงไป และผใชแตละคนอาจจะ
ใชค าศพท รปประโยคทแตกตาง จากนนคอมพวเตอรจะแปลความและท างานตามค าสงเหลานนเอง แต
ถามค าสงทไมเขาใจหรอไมแนใจ กจะมการแจงกลบมาใหเรายนยนความถกตอง ซงแปลความหมายของ
6
ค าสงในภาษาธรรมชาตจะใช ระบบฐานความร ( Knowledge base system ) ทมความใกลเคยงกบ
การใชภาษาของมนษย
ตวอยาง การใชภาษา SQL เรยกการคนขอมลโดยใหแสดงรายชอพนกงานทมอยในกรงลอนดอล
จะสามารถเขยนโปรแกรมไดดงน
SELECT First Name , Last Name
FROM EMPLOYEES
WHERE City=”London”
แตถาเปนการเขยนโปรแกรมดวยภาษาธรรมชาต เราจะเขยนโปรแกรมโดยใกลเคยงกบภาษา
มนษยมากขน ดงน
TELL ME THE NAMES OF EMPLOYEES IN LONDON
ขอแตกตางระหวางภาษาระดบต ากบภาษาระดบสง ภาษาระดบต าจะมความแตกตางกนเมอใชกบเครองคอมพวเตอรตางเครองกน สวนภาษา
ระดบสงนน สามารถใชไดกบ คอมพวเตอรตางเครองกน โดยอาจมการปรบปรบปรง หรอ เปลยนแปลงเพยงเลกนอยเทานน
ภาษาระดบสงมนษยสามารถอานเขาใจไดงายกวาภาษาระดบต า เพราะภาษาระดบสงมลกษณะคลาย กบมนษยทใชในขวตประจ าจน สวนภาษาระดบต าอาจใชรหสหรอค ายอแทนค าสงใหท างาน
ภาษาระดบต าจะตองเขยนขนตอนการท างานอยางละเอยด จงใชเวลาในการเขยนโปรแกรมมากกวาการ เขยนโปรแกรมระดบสง
การเขยนโปรแกรมดวยภาษาระดบต า จ าเปนตองศกษาและเชาใจระบบการท างานภายในคอมพวเตอร แตการเขยนโปรแกรมดวยภาษาระดบสงไมจ าเปนตองศกษาอยางลกซง
3. ภาษาคอมพวเตอรทใชในการพฒนาโปรแกรม
ภาษาคอมพวเตอรทไดรบการพฒนาเกดขนอยางมากมาย ดงนนการเลอกใชภาษาโปรแกรม
คอมพวเตอรกเปนสงส าคญ เพราะโครงสรางของภาษาทท างานไดงาย กจะสงผลใหการเขยนโปรแกรม
เปนไปไดอยางสะดวกและรวดเรว นอกจากนภาษาทใชควรเขากบสภาพแวดลอมของเครองคอมพวเตอร
ระบบตาง ๆ ไดดวย ดงนนสวนใหญจงน าภาษาระดบสงมาใชงานกน โดยจะประยกตน าไปเขยนเปน
โปรแกรมในงานดานตางๆ เชนงานดานวทยาศาสตร งานดานธรกจ และการน าเสนอขอมล เปนตน ซง
ภาษาทนยมใชกนมดงน
7
ภาษาฟอรแทรน (Fortran)
ยอมาจากค าวา FORmula TRANslator เปนภาษาระดบสงทเกดขนในป ค.ศ. 1950 เพอใชใน
การสรางโปรแกรมประยกตดานวทยาศาสตรและวศวกรรม ตอมาในป ค.ศ. 1953 John Backus ได
พฒนา Fortran เพอน ามาใชสรางโปรแกรมประยกตการใชงานในเครองเมนเฟรม IBM 704 แทนทภา
แอลแซมบลทมความยงยาก
ตวอยางของการเขยนโปรแกรมดวย Fortran 90
Program HelloWorid
Write (*,*) ‘Hello worid !’ ! This is inline cormment
End program HelloWorid
ในอดตวชาการเขยนโปรแกรมภาษานเปนวชาบงคบส าหรบนกศกษาทางดานวทยาศาสตร และ
วศวกรรมศาสตร ทตองการน าคอมพวเตอรมาชวยค านวณในดานตางๆ เนองจากภาษานมความสามารถ
ในการค านวณดกวาภาษาอน ๆ
ขอด : เปนภาษาระดบสงทถกพฒนาขนเพอใชบนเมนเฟรม จงท าใหตองมการปรบค าสงมากมาย
เพอใหเหมาะสมกบการน ามาใชสรางโปรแกรมประยกตบนเครองไมโครคอมพวเตอร จงเปนเหตใหหมด
ความนยม เมอมการพฒนาภาษาเบสกมาใชบนไมโครคอมพวเตอรทมการใชงานกนอยางแพรหลาย
ภาษาเบสก
เปนภาษาระดบสงทเรมออกแบบโดย John George kemeny และ Thomas Eugene Kurtz ท
มหาวทยาลย Dartmouth Collge ในป ค.ศ. 1963 ภาษา Basic ยอมาจากค าวา Beginner’s All-
purpose Symbolic Instruction Code ซงเปนภาษาทออกแบบมาใหใชงานงาย และในป 1980 ไดถก
ขยายการใชงานมากขนตามการก าเหนดของเครองคอมพวเตอรทใชภายในบาน เปนภาษาทใชค าสง
ประยกตตามขอความภาษาองกฤษ ท าใหไดรบความนยมในการใชสอนและฝกการเขยนโปรแกรมใน
โรงเรยนตาง ๆ
ขอด : เปนภาษาระดบสงทมรปแบบการใชงานงาย น าไปประยกตสรางโปรแกรมไดทวไปทง
งาน ดานธรกจ และวทยาศาสตร เหมาะกบผทเรมตนฝกการเขยนโปรแกรม
ขอเสย : ถกพฒนาและใชในยคแรกของเครองไมโครคอมพวเตอร จงคาใหประสทธภาพของ
ค าสงมนอยกวาภาษาอน และเนองจากรปแบบของการเขยนโปรแกรมจะไมเปนโครงสราง ดงนนจงไม
เหมาะกบการเขยนโปรแกรมทมการเชอมตอกบระบบฐานขอมล
8
ภาษาโคบอล
มชอเตมวา Business – Oriented Language เรมตนนพฒนาขนในป ค.ศ. 1959 โดยการ
รวมมอ 3 ฝาย คอ รฐบาลสหรฐ (Pentagon) องคกรธรกจและมหาวทยาลยชนน า และประกาศใชงาน
อยางเปนทางการในป 1960 โดยถกออกแบบเพอการเขยนโปรแกรมเชงโครงสราง (Structured
Program) เหมาะกบการน าไปใชสรางโปรแกรมประยกตดานธรกจ การบญช และการท างานเชอมตอ
คอมพวเตอรในบรษท/องคกร เรมตนถกพฒนาใชกบเครองเมนเฟรม ตอจากนนกมการพฒนาใหใชงานใน
ไมโครคอมพวเตอรกนอยางแพรหลาย
ขอด : เปนภาษาทนยมใชในการดานธรกจ ไดแก การจดเกบขอมล งานบญช การเงนและสนคา
คงคลง เพราะเปนภาษาทมการเขยนเชงโครงสราง จงสามารถประยกตใหท างานเชอมตอกบฐานขอมลได
ปจจบนไดพฒนาเปนการเขยนโปรแกรมเชงวตถ (OOP)
ขอเสย : ผพฒนาโปรแกรมตองศกษาโครงสรางของโปรแกรม เพอการใชค าสงไดถกตอง
ภาษาปาสคาล (Pascal)
เกดขนในป ค.ศ. 1970 โดยนกวทยาศาสตรชาวสวส ชอ Niklaus Wirth พฒนาขนเพอใชสอน
การเขยนโปรแกรมคอมพวเตอรใหกบนกเรยน และไดตงชอภาษาตามชอของนกคณตศาสตรละนกปรชญา
ชาวฝรงเศส ชอ Blaise Pascal ผคดคนประดษฐเครองค านวณในยคแรก ภาษาปาสคาลเปนภาษาทใช
เขยนโปรแกรมเชงโครงสราง เรมตนจงนยมใชในการสอนโปรแกรมเชงโครงสรางใหกบนกศกษา และการ
น าไปพฒนาสรางซอฟตแวรตางๆ ตอมาบรษทบอรแลนด ไดพฒนาเปนเทอรโบปาสคาล (Turbo Pascal)
ซงเปนภาษาในการเขยนโปรแกรมเชงวตถ
ตวอยางของภาษา Pascal
Program HelloWorld (output);
Begin
Writeln (‘Hello,World!’)
End.
ขอด : เปนภาษาทเขยนเชงโครงสราง เหมาะกบการศกษาส าหรบผเรมตนเขยนโปรแกรม
นอกจากนค าสงไดถกออกแบบใหท างานอยางมประสทธภาพ จงสามารถพฒนาไปใชงานทวไป งานดาน
ธรกจ วทยาศาสตรและวศวกรรม
ขอเสย : เปนภาษาทยงคงใชงานยากเมอเปรยบกบการเขยนโปรแกรมเชงวตถ
9
ภาษาซ (C)
ภาษา C ไดพฒนาขนในป ค.ศ. 1970 โดย เดนนส รชช (Bell Laboratory) ของบรษท เอท
แอนดท (AT&T) เพอใชในระบบปฏบตการยนกซ (Unix) จากนนกแพรกระจายไปใชงานระบบปฏบตการ
ตาง ๆ และเปนภาษาทใชกนอยางแพรหลาย โดยไดมการพฒนาเพอสรางเปนโปรแกรมควบคมระบบ
เพราะมค าสงทเขาถงระบบฮารดแวรของคอมพวเตอรโดยตรง สามารถตดตอกบเครองระบบตาง ๆ ผาน
การควบคมพอรตของคอมพวเตอร นอกจากนยงเปนทนยมใชในการศกษาการเขยนโปรแกรม
ตวอยางของภาษา C
#include <stdio.h>
int main (void)
{
Printf (“Hello World\n”);
Return 0;
}
ขอด : เปนภาษาทมความยดหยนสามารถท างานบนระบบเครอง และระบบปฏบตการตางๆ ได
นอกจากนสามารถเขาถงฮารดแวรของคอมพวเตอรไดโดยตรง
ขอเสย : ค าสงของภาษาจะไมเหมอนค าศพทภาษาองกฤษโดยตรง จงอาจจะจดจ ายากขน และ
วธการใชค าสงจะมกฎเกณฑรายระเอยดจ านวนมาก จงไมเหมาะกบผเรมตนเขยนโปรแกรม
ภาษาซพลสพลส C++
ภาษา C++ ไดพฒนาขนจากภาษา C โดย Bjarne Stroustrup ทหองปฏบตการ Bell Labs
ตงแตป 1983ซงเปนการพฒนาภาษา C ดวยการเพมใส Class เขาไป สามารถสนบสนนการเขยน
โปรแกรมโพรซเยอร Procedural programming การเขยนโปรแกรมเชงวตถ (Object-oriented
Programming) และการเขยนโปรแกรมแบบทวไป (Generic Programming) นยมน าไปสรางโปรแกรม
ประยกตตาง ๆ เชน Word Processor
ขอด : เปนภาษาทมรปแบบการเขยนโปรแกรมเชงวตถ สามารถท างานเขาถงการท างานของ
ฮารดแวรไดโดยตรง จงเหมาะกบการพฒนาโปรแกรมประยกต และไดรบความนยมเปนอยางสง
ขอเสย : เปนภาษาระดบสง และมรปแบบการเขยนโปรแกรมทซบซอน ไมเหมาะสมส าหรบผ
เรมตนเขยนโปรแกรม
10
วชวลเบสก (Visual Basic)
เรมตนพฒนาโดย Alan Cooper จากบรษทไมโครซอฟต ในป ค.ศ. 1991 เปนการพฒนามาจาก
ภาษาเบสก เวอรขน 1-3 จะท างานอยบน DOS จากเวอรชน 4 จนถงปจจบนไดพฒนาใหท างานบน MS
Windows ภาษานมรปแบบในการเขยนโปรแกรมโดยสรางกราฟกในสวนของหนาจอตดตอกบผใชงาน
จากนนจงก าหนดคณสมบตและเขยนโปรแกรมควบคมการท างานแตละวตถใหเปนไปตามทตองการ
ขอด : เปนการพฒนาโปรแกรมทเหมาะกบการท างานของระบบปฏบตการ GUI เชน Windows
เพราะมเครองทใชในการสรางกราฟก เหมาะกบการสรางโปรแกรมขนาดใหญ
ขอเสย : ไมเหมาะกบผทเรมตนเขยนโปรแกรม เพราะจะเหมาะกบผทเคยมพนฐานการเขยน
โปรแกรมภาษาพนฐานมากอน ซงการเขยนโปรแกรมจะมความซบซอนมากขน
ภาษาจาวา Java
เปนภาษาทมรปแบบการเขยนโปรแกรมเชงวตถ พฒนาโดย James Gosling มหาวทยาและ
บรษท Sun Microsystems ในป ค.ศ. 1990 การท างานของภาษาจะแตกตางจากภาษาอน พราะเปนการ
คอมไพลแบบ Bytecode จงท าใหโปรแกรมทเขยนขนจาก Java สามารถท างานไดบนเครองทกระบบ
โดยจะตดตง Java Virtual Machine ในเครองเหลานนเพอท าใหโปรแกรมท างานเขากบสภาวะแวดลอม
ของเครองได
ขอด : เปนโปรแกรมภาษาทสามารถท างานไดบนทกระบบ จงเหมาะกบการพฒนาโปรแกรม หรอ
เกมทตองการเขาถงผใชไดในทกระบบ จงมชอเรยกวา “Write once, run anywhere ”
ขอเสย : เปนมาตรฐานทมความซบซอน และมผเชยวชาญนอย ดงนนในการพฒนาและศกษา
โปรแกรมจงยากกวาภาษาอน
4. การเลอกใชภาษาคอมพวเตอรในการพฒนาโปรแกรม การพฒนาโปรแกรมเพอประยกตใชงานในแตละดาน จ าเปนอยางยงทจะตองเรยกใชภาษาท
เหมาะสม และเนองจากภาษาคอมพวเตอรมจ านวนมาก ดงนนจ าเปนจะตองพจารณาสงตาง ๆ ในการ
เลอกใชภาษาคอมพวเตอร ดงน
4.1 ภาษามาตรฐานทใชในองคกร
การพฒนาโปรแกรมไวใชในองคกร โดยสวนใหญจะยดภาษาใดภาษาหนงไวเปนหลก เพราะไม
ตองเสยเวลาในการศกษาโครงสรางของภาษาในการเขยนโปรแกรมใหม ท าใหสะดวกตอการ เขยน
โปรแกรมการดแลและงานบรหารระบบ
11
ตวอยางองคกรทใชภาษา Java เปนมาตรฐาน กจะมงเนนใชภาษา Java ในการสรางโปรแกรม
ทงหมด เพราะนกพฒนาโปรแกรมแตละคนไมไดเกงในการเขยนโปรแกรมไดทกภาษา
นอกจากนควรเปนภาษาทสามารถสรางบคลากรมาท างานเขยนโปรแกรมและบรการอยาง
ตอเนองได ตวอยางเชน องคกรทใชภาษา JAVA เรมตนในการเขยนโปรแกรม ตอจากนนโปรแกรมเมอร
ชดเกาลาออกไป หากองคกรไมสามารถหาโปรแกรมเมอรทช านาญภาษา JAVA มาแทนทได กจะท าให
งานนนหยดชะงกไป
4.2 คณสมบตและความเหมาะสม
แตละภาษากจะมคณสมบตและความเหมาะสมกบงานในแตละดาน เชน งานดานธรกจ งานดาน
บญช ดานวทยาศาสตร และงานดานวศวกรรม ตวอยางเชน การเขยนโปรแกรมดานบญชจะนยมใช
Cobol เนองจากเหมาะกบงานทางดานการค านวณเปนหลก
4.3 การท างานรวมกบโปรแกรมอน
การเขยนโปรแกรมการท างานในบางดาน อาจจะตองท างานรวมกบโปรแกรมอนดวย เชน การ
เขยนโปรแกรมสนคาคงคลง เราจ าเปนตองเขยนโปรแกรมทงสวนตดตอกบผใช และสวนของฐานขอมล
ดงนนการเลอกใชภาษาทรองรบกน จะชวยใหโปรแกรมท างานไดอยางมประสทธภาพ
4.4 การท างานรวมกบระบบอน
โปรแกรมประยกตบางตวอาจจะมเปาหมายใหสามารถท างานขามระบบได เชน โปรแกรมรบ
รายการอาหารจากลกคา และการออกใบเสรจใหกบลกคา ของภตตาคาร ซงจะตองท างานรวมกนระหวาง
โปรแกรมรบรายการสนคาบนระบบเครอง PDA ของพนกงานขาย และสงขอมลไปยงระบบเครอง
คอมพวเตอรเซรฟเวอรทจะบนทกรายการอาหารของลกคาแตละคนไปค านวณราคา และพมพ
ใบเสรจรบเงนออกมา
5. หลกการเขยนโปรแกรมคอมพวเตอร
หลกการเขยนโปรแกรมถอวาเปนเรองส าคญส าหรบนกเขยนโปรแกรมทตองท าความเขาใจ
เพราะหากเลอกหลกการเขยนโปรแกรมทไมเหมาะสมกท าใหเสยเวลา ลาชา และสนเปลองคาใชจาย ซง
หลกการเขยนโปรแกรมในปจจบนม 3 หลกการ ไดแก การเขยนโปรแกรมเชงโครงสราง การเขยน
โปรแกรมแบบโมดลาร และการเขยนโปรแกรมเชงออบเจกต ซงทงสองแบบกมความตางกน ดง
รายละเอยดตอไปน
12
5.1 การเขยนโปรแกรมแบบเชงโครงสราง (Structure Programming)
การเขยนโปรแกรมแบบเชงโครงสราง ววฒนาการมาจากแนวคดของ เอดสการ ไดคสตรา
(Edsgar Dijkstra) ในป ค.ศ. 1969 โดยไดคสตราไดชใหเหนวา การใชค าสง goto มาก ๆ ในโปรแกรมจะ
มผลท าใหโปรแกรมสบสน ไดคสตราไดเสนอวาภาษาคอมพวเตอรระดบสงไมควรมค าสง goto เพราะ
ค าสงนไมใชค าสงควบคม และนกเขยนโปรแกรมไมไดใชค าสงนส าหรบการควบคมการท างานแตอยางใด
เพยงแตใชเพออ านวยความสะดวกสบาย หรอเพอเปนการรวบรดของผเขยนโปรแกรมเอง จงเปนตนเหต
ใหเกดความสบสน โดยการกระโดดจากจดหนงในโปรแกรมกลบไปกลบมาและในทสดจะพนกนยงเหยง
และนอกจากนค าสง goto ท าใหโรงสรางโปรแกรมคลมเครอไมชดเจน และยากแกการวเคราะหตรวจสอบ
อกดวย ดงภาพท 1.1
โดยไดคสตราเสนอแนวความคดใหพจารณาโปรแกรมออกเปนชน ๆ โดยคอย ๆ ยอยจากฟงกชน
ทหยาบใหละเอยดลงไปเรอย ๆ เพอเปนการแกปญหาเรองความซบซอนของโปรแกรมขนาดใหญ และ
ปญหาทเกยวกบความผดพลาดของโปรแกรม (สานนท เจรญฉาย, 2546 : 5)
………………
ค าสงท 1
ค าสงท 2
goto 9
ค าสงท 8
ค าสงท 9
goto 2
ค าสงท 10
ภาพท 1.1 การใชค าสง goto ในโปรแกรม
13
ดงนนจงสรปไดวาการเขยนโปรแกรมเชงโครงสราง เปนการเขยนโปรแกรมอยางมระบบ มแบบ
แผน และมเปาหมาย เพอใหไดโปรแกรมทมลกษณะดงตอไปน
1. โปรแกรมตองมความผดพลาดนอยหรอไมผดพลาดเลย เพอสรางความนาเชอถอใหผใช
โปรแกรม
2. โปรแกรมไมคลมเครอ อานเขาใจงาย และไมซบซอน
3. สามารถปรบปรงแกไข และเพมเตมโปรแกรมไดงาย
4. สามารถพฒนาโปรแกรมไดงาย รวดเรว และเปนระบบ
5. โปรแกรมมความชดเจน สามารถเขาใจวตถประสงคของโปรแกรมไดงาย
5.2 การเขยนโปรแกรมแบบโมดลาร (Modular Programming)
เปนการเขยนโปรแกรมทแยกการท างานตาง ๆ ออกเปนโปรแกรมยอยขนาดเลกหลายโปรแกรม
แตละโปรแกรมเรยกวา โมดล (Module) ซงสามารถท างานไดอสระจากโมดลอน ท าใหถาหากโปรแกรมม
ความผดพลาดกสามารถแกไขโมดลทผดพลาดไดงายขน ส าหรบในการเขยนโปรแกรมจะตองม โมดลหลก
ทท าหนาทควบคมการท างานทงหมด วาจะเรยกโมดลใดมาใชงานกอน
โมดลแตละโมดลสามารถเรยกใชโมดลยอยไดอก และโมดลอาจมการสงการควบคมไปยงโมดลอน
ๆ ไดอกดวย
การเขยนโปรแกรมในลกษณะโมดลโปรแกรมยอยจะมสองประเภท คอ โปรแกรมยอยภายใน
(Internal Subroutine) ทเปนโปรแกรมยอยทผเขยนโปรแกรมเขยนขน เพอเปนสวนหนงของ
โปรแกรมหลก แตสามารถเรยกใชได อกประเภทหนงคอโปรแกรมยอยภายนอก (External Subroutine)
ซงเปนโปรแกรมยอยทเกบไวในไลบราล (library) ทเรยกใชได และสามารถน าไปใชงายอนไดอก
5.3 การเขยนโปรแกรมเชงออบเจค (Object-Oriented Programming)
การเขยนโปรแกรมแบบเชงออบเจกตเปนโปรแกรมทมการสรางสวนยอยของโปรแกรมทเรยกวา
วตถ (object) ซงแตละวตถจะสามารถท างานเฉพาะอยางไป โดยมคลาส (class) ซงเปนตวก าหนด
คณสมบตของวตถนน แตละคลาสจะมสถานะ (state) และพฤตกรรม (behavior) ตามบทบาทของตน
โดยมขอมลรายละเอยดหรอคณสมบต (characteristic) ซงคณสมบตยงสามารถถายทอด (inheritance)
ในลกษณะคลาสยอย (subclass) ดงนนหากมคลาสทเปนตนแบบทดแลว ผพฒนากสามารถน าคณสมบต
ของคลาสตนแบบนนมาใชงานไดทนท
จงกลาวไดวาแนวคดโปรแกรมเชงออบเจกต เปนแนวคดทนกเขยนโปรแกรมสามารถน าวตถยอย
เหลานนมาประกอบกนขนเปนโปรแกรมชดใหญได ในบางครงนกเขยนโปรแกรมไมจ าเปนตองสรางทก
วตถ แตอาจน าวตถทมผพฒนาโปรแกรมคนอนสรางไวแลวมาพฒนาตอไดเลย เพยงแตทราบวาวตถนนท า
อะไรบาง และจะเรยกใชงานวตถนนอยางไร การเขยนโปรแกรมแบบเชงออบเจกตเปนการเขยนโปรแกรม
14
ทท าใหงายและสะดวกในการเขยนโปรแกรม และลดคาใชจายในการพฒนา เพราะสามารถน าวตถไปใชซ า
(reuse) ได
6. ขนตอนการพฒนาโปรแกรม
กอนการพฒนาโปรแกรมผเขยนโปรแกรมจะตองมความเขาใจเกยวกบกระบวนการ หรอขนตอนในการท างานของโปรแกรม โดยในสวนนไมไดเปนสวนของการเขยนโปรแกรมอยางเดยว แตหมายรวมถงกระบวนการวางแผน กระบวนการคดวเคราะห กระบวนการเขยนโปรแกรม กระบวนการทดสอบ ตลอดจนกระบวนการน าไปใช ทง 7 กระบวนการเปนการท าความเขาใจกอนการพฒนาโปรแกรมเพอใหผเขยนโปรแกรมเขาใจปญหาและกระบวนการกอนการลงมอพฒนาโปรแกรม เพราะทกกระบวนการเปนกระบวนการทมความส าคญเปนอยางยง เนองจากหากผพฒนาโปรแกรมไมเขาใจกระบวนการท างานทแทจรงผลลพธทออกมาอาจไมตรงตามความตองการของผใช กระบวนการนจงเปนกระบวนการวาง โครงรางการท างานของการพฒนาโปรแกรม เพอใหเหนภาพของขนตอนการน าเขาขอมล ขนตอนการประมวลผล และขนตอนการแสดงผลลพธทไดจากโปรแกรม กระบวนการในการเขยนโปรแกรมจ าเปนตองใชความรความสามารถและทกษะหลายดานเพอน ามาประยกตใชในการพฒนาโปรแกรม การเขยนโปรแกรมคอมพวเตอรเปนเพยงสวนหนงของการพฒนาโปรแกรม ตอไปนเปนขนตอนการพฒนาโปรแกรม
ภาพท 1.2 แสดงขนตอนการพฒนาโปรแกรม
15
ขนตอนการพฒนาโปรแกรมประกอบดวย 7 ขนตอนดงน 1. การวางแผนการท างาน (Planning) กระบวนการวางแผนการท างานเปนกระบวนการเรมตนของการพฒนาโปรแกรม เพอให
ผพฒนาไดก าหนดขอบเขตการท างาน แผนการ และระยะเวลาในการด าเนนงานอยางชดเจน พรอมทงคดหาวธการแกปญหาในกรณทอาจมปญหาเกดขนระหวางการพฒนาโปรแกรม ในขนตอนนทมพฒนาโปรแกรมอาจจะมการประชมรวมกนเพอใหทกคนไดแบงหนาทการท างานอยางชดเจน ออกแบบ วางโครงรางการท างานรวมกน การเรมตนทดจะน าไปสการไดรบผลลพธทถกตองกระบวนการนจงถอไดวาเปนกระบวนการทมความส าคญยง
2. การวเคราะห (Analysis) ในกระบวนการวเคราะห เปนกระบวนการในการหาทมาของปญหาเพอรวมวเคราะหการ
ท างานของโปรแกรม ในขนตอนนจะลงรายละเอยดในวเคราะหกอนการเขยนโปรแกรม เพอใหผพฒนาไดเขาใจถงปญหา กระบวนการท างาน และความตองการของผใช โดยในขนตอนนจะเรมตนดวยการพจารณาประเดนตาง ๆ ดงตอไปน
2.1 สวนของขอมลน าเขา (Input) 2.2 สวนของการประมวลผล (Process) 2.3 สวนของการแสดงผลลพธ (Output)
โดยพจารณาการวเคราะหการท างานของแตละสวนงานไดดงน 2.1 สวนของขอมลน าเขา (Input) ขอมลน าเขาจะไดจากการศกษาและการก าหนดปญหาเพอ
หาความตองการของโปรแกรม และผลลพธของโปรแกรม โดยนกเขยนโปรแกรมตองทราบวาผลลพธของโปรแกรมทตองการคออะไร และขอมลดงกลาวเปนขอมลทเกยวกบอะไร และไดมาจากไหน ตวอยางเชน
ตวอยางท 1 ตองการเขยนโปรแกรมค านวณรายไดสทธใหกบพนกงานของบรษทแหงหนง สงทตองวเคราะหสวนของขอมลน าเขา คอ ผลลพธสดทายทตองการแสดงผลลพธมขอมลอะไรบาง เชน รหสพนกงาน ชอ สกล รายไดสทธ หรอ ขอมลอน ๆ อกหรอไม ในสวนของ รายไดสทธของพนกงานไดมาจากเงนสวนไหนบาง เพอเปนประเดนทจะพจารณาขอมลน าเขา ตวอยางเชน บรษทดงกลาวนอกจากจายเงนเดอนใหแกพนกงานแลว ยงจายเงนสวนใดอกบาง เชน เงนประจ าต าแหนง เงนสมทบกองทนสวสดการ คาลวงเวลา หรอ อน ๆ อกหรอไม โดยขอมลดงกลาวจะไดจากการศกษาขอมลกอนการเขยนโปรแกรม
2.2 สวนของการประมวลผล (Process) ในสวนของการประมวลผลหลงจากทไดพจารณาขอมลน าเขาแลว ประเดนตอมาทพจารณาคอ จะด าเนนการอยางไรกบขอมลน าเขาดงกลาว โดยในกระบวนการนตองไมลมเงอนไขอน ๆ ทใชในการพจารณา เชน เงนคาลวงเวลา หากมการจายเงนคาลวงเวลา จ าเปนทจะตองพจารณาตอวา อตราการจายคาลวงเวลาของพนกงานมเงอนไขอยางไรบาง พนกงาน 1 คนสามารถท างานลวงเวลาไดไมเกนกชวโมง อตราการจายคาลวงเวลาใหกบพนกงานจายใน
16
อตราชวโมงละกบาท รวมไปถงการพจารณาออกแบบกระบวนการท างานอน ๆ ดวย เชน หากมการใสขอมลทผดพลาดโปรแกรมจะแสดงผลการท างานของขอมลทผดพลาดอยางไร ในขนตอนนเปนขนตอนทมความส าคญเปนอยางยง เพราะหากออกแบบกระบวนการท างานผดพลาดผลลพธทไดกจะผดพลาดเชนกน จากโจทยทก าหนดสามารถสรปขนตอนของการพจารณาการประมวลผลในขนตอนนไดดงตอไปน
การประมวลผลหลกของโปรแกรม เชน วธการคดรายไดสทธ การประมวลผลยอยของการประมวลผลหลก เชน วธการคดคาลวงเวลา โครงสรางการท างานของโปรแกรมเปนรปแบบใดเชน แบบตามล าดบ แบบมทางเลอก
แบบวนซ า 2.3 สวนของการแสดงผลลพธ (Output) ในสวนของการแสดงผลลพธเปนสวนของการ
พจารณาผลลพธสดทายทจะไดจากโปรแกรม โดยขอมลการพจารณาดงกลาวจะถกพจารณาตงแตเรมตนกอนการเขยนโปรแกรมเพอก าหนดขอมลน าเขาและการประมวลผลโปรแกรม แตในขนตอนนสงทยงคงตองพจารณาคอ รปแบบการแสดงผลลพธ สวนตดตอกบผใช ตวอยางเชน ขอมลทจะแสดงผลสดทายของค านวณรายไดสทธใหกบพนกงาน ประกอบดวยสวนการแสดงผลกสวน มรปแบบการออกแบบการแสดงผลอยางไรใหดสวยงามและเหมาะสม
จากโจทยตวอยางท 1 สามารถวเคราะหผลการด าเนนงานโปรแกรมไดดงน 1) สวนน าเขาขอมล (Input)
1.1) รบคาขอมลเกยวกบรายละเอยดพนกงาน ไดแก รหส ชอ นามสกล 1.2) รบคาขอมลเกยวกบรายละเอยดรายรบพนกงาน ไดแก อตราเงนเดอนทไดรบ เงนประจ าต าแหนง จ านวนชวโมงการท างานลวงเวลา
2) สวนการประมวลผล (Process) จากโจทยตวอยางการประมวลผลแบงออกเปน 2 กระบวนการ คอ
2.1) การค านวณหาจ านวนเงน อตราคาลวงเวลา (จ านวนชวโมง x อตราคาลวงเวลาตอชวโมง) 2.2) การค านวณหารายรบสทธทไดรบ อตราเงนเดอน + เงนประจ าต าแหนง + จ านวนเงนคาลวงเวลา
3) สวนการแสดงผลลพธ (Output) 3.1) รายละเอยดทจะแสดงออกสหนาจอ ประกอบดวย รหส ชอ สกล และรายไดสทธ 3.2) รปแบบการแสดงผลลพธ ไดแก การออกแบบฟอรมแสดงผลลพธ
จากตวอยางเปนการฝกวเคราะหโดยมองหาสวนของขอมลน าเขา การประมวลผล และการแสดงผลลพธ จะท าใหสามารถสรปความคดและมองเหนภาพของความตองการชดเจนมากยงขน และจากประสบการณมามผเรยนหลายคนไมสามารถเรมตนเขยนโปรแกรมได เนองจากไมสามารถวเคราะหความตองการของโปรแกรมและไมสามารถออกแบบกระบวนการท างานได ผสอนจงอยากใหผเรยนไดฝกทกษะ
17
วเคราะหจากโจทยตวอยางโดยมงประเดน 3 ประเดน คอ การวเคราะหขอมลน าเขา การวเคราะหการประมวลผล และวเคราะหผลลพธของโปรแกรม
ในสวนของกระบวนการวเคราะหสามารถน าเครองมอมาใชเพอชวยในการวเคราะหกอนการลงมอเขยนโปรแกรมและสรางความเขาใจระหวางผพฒนาและผใช ผเคราะหสามารถวเคราะหโดยใชอลกอรทม เพอชวยสรางความเขาใจ
3. การเขยนโปรแกรม (Development) กระบวนการเขยนโปรแกรมเปนกระบวนการหลงจากทผพฒนาโปรแกรมไดทราบปญหา
และ วเคราะหกระบวนการ ความตองการของผใชแลว กอนการเขยนโปรแกรมผพฒนาอาจรางพมพเขยว หรอ อลกอรทมของโปรแกรมกอนลงมอเขยนค าสง (Source Code) เนองจากวา อลกอรทมจะชวยใหผเขยนโปรแกรมและผใชมองเหนระบบทชดเจนมากยงขน ภาษาทน ามาใชในการเขยนโปรแกรม อาจเปนภาษาระดบต าหรอภาษาระดบสงกไดขนอยกบความสามารถของนกเขยนโปรแกรมและตามความตองการของผใช
หลงจากไดวเคราะหและออกแบบการเรยนโปรแกรมแลว ตอไปเปนกระบวนการเขยนโปรแกรม ในการเขยนโปรแกรมสามารถใชภาษาคอมพวเตอรมาใชในการเขยนโปรแกรม ตวอยางภาษาคอมพวเตอรเชน ภาษาซ ภาษา PHP (Personal Home Page) ภาษา Basic ภาษา PASCAL เปนตน โดยในการเขยนโปรแกรมนน ปจจบนมโปรแกรมทใชเขยนโปรแกรมหลายโปรแกรมทสามารถเขยนโปรแกรมและรนการท างานผานระบบปฏบตการวนโดวน ท าใหการเขยนโปรแกรมงายและสะดวกยงขน และค าสงทใชในการเขยนโปรแกรมปจจบนนยมใชภาษาธรรมชาต เนองจากเปนภาษาทเรยนรงายโปรแกรมงายมากยงขน
3.1 หลกการเขยนโปรแกรม การเขยนโปรแกรมใหประสบความส าเรจนนจะตองมความเขาใจหลกการเขยนโปรแกรม
ประกอบดวยหลกการดงตอไปน 1. เขาใจโครงสรางการท างานของโปรแกรมในแตละภาษา
2. เขาใจกระบวนการท างาน และผลลพธความตองการของผใชงาน 3. ควรมการตรวจสอบผลลพธ และการประเมนผลลพธกอนน าโปรแกรมไปใชงานจรง
จากโจทยตวอยางท 1 เขยนโปรแกรมค านวณรายไดสทธใหกบพนกงานของบรษทแหงหนง สามารถน ามาเขยนโปรแกรมโดยใชภาษาซ ไดดงตอไปน
18
ผลการรนโปรแกรม
ภาพท 1.3 แสดงผลรนของโปรแกรมจากตวอยางโจทยท 1
#include<stdio.h> main() { float Net_pay ,Hour ,E_salary,E_position; int C_ot; char E_id[10] ,E_name[30],E_sur[30]; printf(" Caculate Your Net_Salary\n"); printf("******************************\n");
printf("Input Employee_id :"); scanf("%d",&E_id);
printf("Input Employee_name :"); scanf("%s",&E_name); printf("Input Employee_surname :"); scanf("%s",&E_sur); printf("Input your salary :"); scanf("%f",&E_salary); printf("Input your Emoluments :"); scanf("%f",&E_position); printf("Input the number of overtime hours :"); scanf("%f",&Hour); Net_pay = E_salary + E_position +(Hour*250); printf("******************************\n"); printf(" Khun %s %s get %f bath\n",E_name,E_sur,Net_pay); printf("******************************\n"); }
19
4. การทดสอบ (Test) กระบวนการทดสอบโปรแกรม เปนกระบวนการตรวจสอบความถกตองของการท างานของ
โปรแกรมเพอใหแนใจวาโปรแกรมทพฒนาขนไมไดมขอผดพลาด ซงความผดพลาดในการเขยนโปรแกรมจะเกดขนได 2 กรณ คอ 1. รปแบบชดค าสงผดพลาด (Syntax Error) คอลกษณะการเขยนโปรแกรมโดยไมทราบโครงสรางการท างานของโปรแกรมและการไมแมนย าในการเขยนค าสงโปรแกรม จากประสบการณสอนทผานมาพบวานกศกษามากจะเขยนค าสงผดพลาด และลมขอบงคบของการเขยนโปรแกรมแตละภาษา เชนในภาษาซก าหนดใหทกค าสงจะปดทายดวยเครองหมาย ; นกศกษามกจะลมค านงถงขอบงคบน และ 2. ผลการท างานทผดพลาด (Logic Errors) คอ การเขยนโปรแกรมทไมไดมการวเคราะหทถกตอง ท าใหเมอน าวธการไปเขยนโปรแกรมแลวไดผลลพธทไมตรงกบความตองการของผใช ยกตวอยางเชน ตองการใหเขยนโปรแกรมตรวจสอบอายปจจบนของผใช แตกลบเขยนโปรแกรมตรวจสอบปคาอยางอนแทนเปนตน ดงนนในการเขยนโปรแกรมผพฒนาโปรแกรมจ าเปนตองทดสอบใหแนใจวาโปรแกรมมไดมขอผดพลาด กระบวนการในการทดสอบโปรแกรมสามารถด าเนนการไดหลายวธ เชน การทดสอบโดยสมกลมผใชทเกยวของ หรอการทดสอบโดยผเชยวชาญเฉพาะดาน เพอหาจดบกพรองกอนทจะน าไปใชงานจรง
5. การแกไขและปรบปรง (Edit and Improve) กระบวนการแกไขและปรบปรงเปนกระบวนทเกดขนหลงจากมการทดสอบโปรแกรม โดยใน
การตรวจสอบจะตองตรวจสอบใหแนใจวาโปรแกรมไมไดมขอผดพลาดทงสองรปแบบ หากตรวจสอบแลวมจดทตองปรบปรงหรอแกไขนกวเคราะหระบบและโปรแกรมเมอรจะตองกลบมาปรบปรงและแกไขงานอกครงเพอใหไดโปรแกรมทถกตองและตรงกบความตองการของผใชมากทสด
6. การจดท าเอกสารคมอ (Document) การจดท าเอกสารคมอ เปนขนตอนของการพฒนาคมอการใชงานโปรแกรมเพอใหผใชเปนคมอ
ในการใชงาน ซงจดไดวาเปนอกหนงขนตอนทมความส าคญ เนองจากขนตอนนเปนขนตอนของการอธบายการใชงานและสวนประกอบตาง ๆ ของโปรแกรม เพอเปนคมอในการปรบปรงงานหรอแกไขงานในอนาคต การจดท าคมอการใชงานควรพจารณาถงผใชโปรแกรมเปนส าคญเพอจะไดพฒนาคมอตามความเหมาะสมของผใช เชน หากผใชงานอายไมเกน 10 ป ควรออกแบบเปนภาพมากกวาขอความบรรยาย
7. การน าไปใช (Utilize) กระบวนการน าโปรแกรมไปใชงานเปนกระบวนการสดทายของการพฒนาโปรแกรม ในการ
น าไปใชงานทมพฒนาจ าเปนตองมการอบรมใหกบผใชงานหรอไมนนขนอยกบความตองการและประเภทของโปรแกรม หากเปนโปรแกรมทพฒนาขนเฉพาะเพอองคกรใดองคกรหนงการอบรมการใชงานอาจเปนสงจ าเปนส าหรบหนวยงานทใชโปรแกรม แตหากเปนโปรแกรมทพฒนาขนเพอใชงานทวไป และสามารถเรยนรไดการอบรมอาจไมมความจ าเปน
20
จากรปไดอะแกรมทอธบายเปนภาพรวมของกระบวนการพฒนาโปรแกรม เพอใหผพฒนา โปรแกรมมความเขาใจเกยวกบภาพรวมทงหมดกอนการลงรายละเอยดในขนตอนของการวเคราะหและออกแบบโปรแกรม เนองจากต าราเลมนจดท าขนเพอใชในการเรยนการสอนในรายวชาการเขยนโปรแกรมคอมพวเตอรทางการศกษา 1 ผเรยนจงจ าเปนตองเขาใจถงขนตอนดงกลาวเพอเปนความรในการเขยนโปรแกรมตอไป
7. โครงสรางการท างานของการเขยนโปรแกรม
การเขยนโปรแกรมมลกษณะการเขยนทแตกตางกนในแตละโปรแกรมตามรปแบบของค าสงแตละภาษาและความตองการของผใช จงมการแบงโครงสรางการท างานของการเขยนโปรแกรมเพอใหงายตอผเขยนโปรแกรม โครงสรางการท างานของการเขยนโปรแกรมออกได 3 รปแบบดงน 7.1 การท างานแบบตามล าดบ 7.2 การท างานแบบทางเลอก 7.3 การท างานแบบวนซ า
ลกษณะโครงสรางการท างานของโปรแกรมทง 3 แบบมลกษณะทแตกตางกน ภายใน 1 โปรแกรมอาจมโครงสรางการท างานไดหลายแบบ รายละเอยดการท างานแตละโครงสรางอธบายไดดงน 7.1 การท างานแบบตามล าดบ
การท างานแบบเปนล าดบ คอ โปรแกรมมลกษณะการท างานเรมจากค าสงท 1 ตอดวย ค าสงท 2 ตอดวยค าสงท 3 เรยงล าดบจนค าสงสดทาย ลกษณะการท างานของโปรแกรมจะเปนการท างานแบบบนลงลาง โดยไมมค าสงในการตดสนใจหรอวนซ า ท าเปนล าดบขนตอนจากค าสงเรมตนไลล าดบค าสงจนจบหรอเรยกงาย ๆ วาการท างานแบบตามล าดบ เสรจค าสงกอนหนากอนถงจะไปท าค าสงถดไป เรยงล าดบจากค าสงแรกจนค าสงสดทาย มรปแบบการท างานแสดงไดดงผงงานตอไปน
1
2
ชอรหสเทยม
1. start
2. statement 1
3. statement 2
4. statement n
5. stop
ภาพท 1.4 แสดงการท างานแบบตามล าดบ
21
ตวอยางท 2 ผงงานและรหสเทยม(Pseudo Code) แบบตามล าดบ โจทย โปรแกรมการบวกเลข 2 จ านวนเพอหาผลลพธ
Start
Stop
Num1=5,Num2=10, Sum=0
Sum=Num1+Num2
Sum
ผงงาน (Flowchart)
ภาพท 1.5 แสดงตวอยางการเขยนโปรแกรมแบบตามล าดบ จากภาพท 1.5 อธบายการท างานของโปรแกรมไดดงน 1. เรมตนการท างานโดยการก าหนดตวแปร Num1 ใหมคาเทากบ 5 ตวแปร Num2 มคาเทากบ 10 และก าหนดคา Sum=0 2. น าคา Num1 และ คา Num2 มาบวก เกบคาผลลพธไวทตวแปร Sum 3. แสดงคาตวแปร Sum 4. จบการท างาน
7.2 การท างานแบบมทางเลอก การท างานแบบมทางเลอก คอ การท างานของโปรแกรมทตองตดสนใจเลอกท าอยางใดอยาง
หนง ตามเงอนไขทก าหนดไวซงเงอนไขดงกลาวโปรแกรมแตละโปรแกรมบางครงม 1 เงอนไขหรอมากกวา 1 เงอนไขกได ขนอยกบลกษณะการท างานของโปรแกรม สามารถแบงรปแบบการท างานแบบมทางเลอก ออกไดดงตอไปน
7.2.1 การท างานแบบม 1 ทางเลอก 7.2.2 การท างานแบบม 2 ทางเลอก 7.2.3 การท างานแบบมหลายทางเลอก (มการตดสนใจมากวา 1 ครง)
การท างานในแตละแบบมขอแตกตางกนอยางไรอธบายไดจากภาพผงงานดงตอไปน
ชอรหสเทยม การบวกเลข 2 จ านวนโดยไมรบคา
1. Start
2. Set Num1=5, Num2=10, Sum=0
3. Compute Sum=Num1+Num2
4. Display Sum
5. Stop
รหสเทยม PseudoCode
22
7.2.1 การท างานโปรแกรมแบบม 1 ทางเลอก
start
1
2
3
stop
ภาพท 1.6 แสดงโปรแกรมแบบม 1 ทางเลอก
จากภาพท 1.6 อธบายการท างานของโปรแกรมไดดงน 1. เรมตนโปรแกรมจะเรมด าเนนการตามค าสงท 1 2 ตามล าดบ 2. เมอโปรแกรมเจอสญลกษณในการตดสนใจหรอค าสงแบบทางเลอก การพจารณาตามค าสงทางเลอกคอ จะท าตามค าสงเมอเงอนไขทตดสนใจเปนจรง และออกจากการตดสนใจเมอเงอนไขทพจารณาเปนเทจ
ตวอยางท 3 การท างานโปรแกรมแบบม 1 ทางเลอก โจทย จงเขยนโปรแกรมในการตรวจเชคตวเลขทรบเขามากมคามากกวา 0 หรอไม ถาใชใหแสดงคาตวเลขนน ถาไมใชใหจบการท างาน
ชอรหสเทยม
1. start 2. statement 1 3. statement 2 4. if (condition) then statement 3 End if 5. stop
23
start
Num
Num>0
Num
stop
Yes
No
ภาพท 1.7 แสดงการท างานโปรแกรมแบบม 1 ทางเลอก
ค าอธบาย 1. เรมตนการท างานรบคาตวเลข 1 จ านวน 2. เปรยบเทยบคาตวเลขทรบเขามา มากกวา 0 หรอไม
ถาใช แสดงผลคาตวเลขจ านวนนน ถาไมใชออกจากการท างาน
3. จบการท างาน
ชอรหสเทยม ตรวจเชคตวเลขทรบเขามา 1. start 2. Input num 3. if (Num>0)
then Display Num End if 4. stop
โดยท Num คอ ตวเลขทรบเขามา
24
7.2.2 การท างานโปรแกรมแบบม 2 ทางเลอก
start
1
2
3
stop
4
ภาพท 1.8 แสดงโครงสรางการท างานโปรแกรมแบบม 2 ทางเลอก
ตวอยางท 4 การท างานโปรแกรมแบบม 2 ทางเลอก โจทย จงเขยนโปรแกรมเพอตรวจเชคอายของนกทองเทยวทตองการเขาใชสถานบนเทงทจ ากดอาย โดยมเงอนไขคอ ถาอายมากกวา หรอ เทากบ 18 ปแสดงขอความอนญาตใหเขาได แตถาอายไมถง 18 ปแสดงขอความไมอนญาตใหเขาใชบรการ
ชอรหสเทยม 1. start 2. statement 1 3. statement 2 4. if (condition) then statement 3
else statement 4 End if
5. stop
25
สามารถอธบายดวยผงงานและรหสเทยมไดดงน start
card_id , year_birth
age = 0
age = 2559-year_birth
Age>=18
AllowNot Allow
stop
No Yes
หมายเหตจากโปรแกรมคดปปจจบนท ป พ.ศ.2559
ภาพท 1.9 แสดงการท างานโปรแกรมแบบมทางเลอกแบบ 2 ทางเลอก
จากภาพท 1.9 อธบายการท างานของโปรแกรมไดดงน 1. เรมตนโปรแกรมท าการรบหมายเลขบตรประจ าตวประชาชน และปทเกดเขาสระบบ 2. ก าหนดใหตวแปรอาย (age) มคาเทากบ 0 3. ค านวณหาอาย โดยน าป พ.ศ.ปจจบน – ปทเกด ไดผลลพธเทาไหรเกบไวท ตวแปรอาย 4. ตรวจสอบผล
ถาอายมากกวาหรอเทากบ 18 พมพขอความ Allow ถาไม พมพขอความ Not Allow 5. จบการท างาน
ชอรหสเทยม ตรวจเชคอายกอนเขาสถานบนเทง
1. start 2. input card_id ,year_birth 3. set age = 0 4. age = 2559-year_birth 5. if (age>=18) then print “Arrow”
else print “Not Arrow” End if
5. stop
โดยท card_id คอ รหสบตรประจ าตวประชาชน year_birht คอ ปเกด age คอ อาย
26
7.2.3 การท างานโปรแกรมแบบมหลายทางเลอก (มการตดสนใจมากกวา 1ครง)
start
1
2
1 3
stop
2 4
5 3
6
ภาพท 1.10 แสดงโครงสรางการท างานโปรแกรมแบบมหลายทางเลอก (มการตดสนใจมากกวา 1ครง)
จากภาพท 1.10 จะพบวาการตดสนใจจะมมากกวา 1 ครงหากการตดสนใจกอนหนาไมเปนจรงโปรแกรมจะพจารณาค าสงถดไปเรอย ๆ จนกวาจะไมมทางเลอกใหตดสนใจ
ชอรหสเทยม 1. start 2. statement 1 3. statement 2 4. if (condition1) then statement 3
else if (condition2) then statement 4 else if (condition3) then statement 5 else statement 6 End if
5. stop
ค าสงท 6 จะมหรอไมมกได
27
ตวอยางท 5 ผงงาน (Flowchart) และรหสเทยม (Pseudo Code) การท างานโปรแกรมแบบมหลายทางเลอก โจทย จงวเคราะหกระบวนการตดสนใจในการเลอกสาขาวชาเรยนจากผลการเรยนรายวชาคณตศาสตร โดยมเงอนไขดงน
ถาได เกรด A แนะน าใหเลอกสาขาวชา คณตศาสตร ถาได เกรด B แนะน าใหเลอกสาขาวชา คอมพวเตอร ถาได เกรด C แนะน าใหเลอกสาขาวชา สงคม นอกเหนอจากนนใหเลอก การจดการการทองเทยว start
stop
Grade_math
Grade_math =’A’ Or Grade_math =’B’
Should you choose to study
math.
Grade_math =’B’ Or Grade_math =’b’
Grade_math =’C’ Or Grade_math =’c’
Should you choose to study
computer.
Should you choose to study
society.
Should you choose to study
tourism.
Yes
No
Yes
No
Yes
No
ภาพท 1.11 โปรแกรมแบบมหลายทางเลอก (มการตดสนใจมากกวา 1ครง)
ชอรหสเทยม แนะน าการเลอกสาขาวชาเรยนโดยพจารณาจากเกรดรายวชาคณตศาสตร 1. start 2. input Grade_math 3. if (Grade=’A’Or Grade=’a’) then display Should you choose to study math. else if (Grade=’B’Or Grade=’b’) then display Should you choose to study computer. else if (Grade=’C’Or Grade=’c’) then display Should you choose to study society. else display Should you choose to study tourism. End if 4. stop
28
จากภาพท 1.11 อธบายการท างานของโปรแกรมไดดงน 1. เรมตนรบคาเกรดรายวชาคณตศาสตร โดยก าหนดใหเกบไวในตวแปร Grade_math 2. ท าการเปรยบเทยบคาเกรด โดยค าสง If การเปรยบเทยบครงแรกเปรยบเทยบวาได เกรด A หรอ a ถาใช แสดงค าวา Should you choose to study math. แตถาไมใชเกรด A หรอ a ใหเปรยบเทยบเงอนไขครงท 2 เปรยบเทยบวาได เกรด B หรอ b
ถาใช แสดงค าวา Should you choose to study computer. แตถาไมใชเกรด B หรอ b ใหเปรยบเทยบเงอนไขครงท 3 เปรยบเทยบวาได เกรด C หรอ c ถาใช แสดงค าวา Should you choose to study society. แตถาไมใช หมายความวาไมตรงกบเงอนไขใด ๆ เลย จะแสดงค าวา Should you choose to study tourism.
3. จบการท างาน
7.3 การท างานแบบวนซ า การท างานแบบวนซ าเปนลกษณะการท างานทท าค าสงเดมซ าหลาย ๆ รอบ โดยตรวจเชคจาก
เงอนไข คอ ถาเงอนไขเปนจรงท าค าสงทก าหนด และถาเงอนไขเปนเทจท าอกค าสงทก าหนดตามความตองการของผใช
7.3.1 รปแบบการท างานแบบวนซ า start
1
2
3
stop
ภาพท 1.12 แสดงโครงสรางการท างานโปรแกรมแบบวนซ า
29
จากภาพท 1.12 เปนโครงสรางการท างานแบบวนซ า โปรแกรมจะวนกลบไปท างานยงจดทก าหนดจนกวาจะเปนไปตามเงอนไขทก าหนด พจารณาเสนประ เสนประหมายความวา โปรแกรมจะวนกลบไปท างาน ณ ต าแหนงใดกไดในโปรแกรมตามค าขอบเขตของโปรแกรมทก าหนดมา การท างานแบบวนซ าในการเขยนโปรแกรมภาษาซจะใชค าสงในการเขยนโปรแกรม 3 ค าสง ดงน 1. ค าสง Do..While 2. ค าสง While 3. ค าสง For มรปแบบรหสเทยมแตละค าสงดงตอไปน
ชอรหสเทยม รปแบบรหสเทยม แบบ Do..While 1. Start 2. Statement 1 3. Statement 2 4. Do {
Statement 3 Statement 4 } While (Condition) End DoWhile
5. stop
ชอรหสเทยม รปแบบรหสเทยมแบบ While 1. Start 2. Statement 1 3. Statement 2 4. While (Condition) {
Statement 3 Statement 4 } End While
5. stop
ชอรหสเทยม รปแบบรหสเทยม แบบ For 1. Start 2. Statement 1 3. Statement 2 4. For count to count {
Statement 3 Statement 4 } End While
5. stop
30
ตวอยางผงงาน (Flowchart) และรหสเทยม (Pseudo Code) แบบวนซ า ตวอยางท 8 ผงงาน (Flowchart) และรหสเทยม (Pseudo Code) การท างานโปรแกรมแบบวนซ า โจทย บวกสะสมเลขคจ านวน 10 จ านวน
Start
Stop
I=0,Sum=0
I<=10
Sum = Sum+2I=I+1
Yes
No
ภาพท 1.13 แสดงตวอยางการท างานโปรแกรมแบบวนซ าบวกสะสมเลขคจ านวน 10 จ านวน
จากภาพท 1.13 อธบายการท างานของโปรแกรมไดดงน 1. เรมตน 2. ก าหนดคาตวแปร I และตวแปร Sum ใหมคา = 0 3. ตรวจสอบเงอนไข คาตวแปร I มคานอยกวา หรอ เทากบ 10 หรอไม
ถาใช ประมวลผลโดยเอาคา Sum+2 และเกบผลลพธไวทตวแปร Sum และ เพมคาตวแปร I อก1 แลววนการท างานกลบไปท การตรวจสอบเงอนไข จะด าเนนการตรวจสอบเงอนไขและปฏบตตามค าสงถาเงอนไขเปนจรงไปเรอย ๆ จนกวาการตรวจสอบเงอนไขออกมาแลวผลลพธจะเปนเทจ จงจะจบการท างาน
4. จบการท างาน
ชอรหสเทยม บวกสะสมเลขคจ านวน 10 จ านวน 1. Start 2. Set I =0 ,Sum = 0 3. For I to 10 4. Sum = Sum+2 5. Increment I=I+1 6. End For 7. Stop
31
ตวอยางท 6 ผงงาน (Flowchart) และรหสเทยม (Pseudo Code) การท างานโปรแกรมแบบวนซ า โจทย วเคราะหกระบวนการท างานของโปรแกรมของคดรายชอนกศกษาเพอเขารบทนจ านวน 10 คนโดยมเงอนไขคอ นกศกษาทไดจะตองมเกรดเฉลยมากกวา 3
start
stop
Grade
Count =0
Grade >3.00
Count < 10
Id_studeant
Yes
YesNo
No
Count = Count +1
ภาพท 1.14 แสดงการท างานโปรแกรมแบบวนซ าคดรายชอนกศกษาเพอเขารบทนจ านวน 10 คน
ชอรหสเทยม คดรายชอนกศกษาเพอเขารบทนจ านวน 10 คน 1. Start 2. Set Count =0 3. While (Count <10) 4. Input Grade 5. If Grade>3.00 6. Then Input Id_student 7. Else Go to stop 8. End If 9. Increment Count = Count +1 10. End While 11. Stop
32
จากภาพท 1.14 อธบายการท างานของโปรแกรมไดดงน 1. เรมตน 2. ก าหนดคาตวเลข 3. ตรวจสอบเงอนไขการวนรอบ ถา Count < 10 4. ถาจรง รบคาเกรด (Grade) 5. ตรวจสอบคาเกรดทรบเขามา ถา คาเกรดมคามากกวา 3 6. รบรหสนกศกษา 7. จบการท างานของค าสง If 8. เพมจ านวนรอบการวน Count = Count +1 และวนกลบไปท างานขอท 3 9. จบการท างานนของค าสง While 10. จบการท างาน
8. คณลกษณะของโปรแกรมทด
การเขยนโปรแกรมใหท างานหนงนน สามารถเขยนไดหลายวธ โดยแตละวธในการเขยนอาจได
ผลลพธออกมาเหมอนกนแมวาจะมวธการเขยนหรอขนตอนการท างานไมเหมอนกนกตาม การเขยน
โปรแกรมในงานบางงานผลลพธ ทไดจะไมถกตองเสมอไป ตวอยางเชนการเขยนโปรแกรมส าหรบหารเลข
โดยใหโปรแกรมรบคาทางแปนพมพสองคาแลวน าคามาหารกน อาจเปนไปไดวาคอมพวเตอรอาจจะแสดง
ผลลพธการหารออกมาได แตถาหากมการปอนคาเปนศนยเขาไปคอมพวเตอรกไมสามารถค านวณได ถา
หากผเขยนไมไดตรวจสอบตรงจดนกท าใหโปรแกรมทเขยนออกมาเปนโปรแกรมทไมสมบรณ
โปรแกรมบางโปรแกรมท างานไดด ท างานไดถกตอง แตถาหากตองการพฒนาตอหรอปบปรง
โปรแกรมใหดขนไดยาก กไมถอวาโปรแกรมมนนมคณลกษณะทด ส าหรบโปรแกรมทมคณลกษณะทด
ควรมลกษณะดงตอไปน
1. มความถกตองและเชอถอได (correctness and Reliability) โปรแกรมทดตองใหผลลพธท
ถกตองแมนย า ไมคลาดเคลอน โปรแกรมจงตองมความสมบรณมากทสด คอ ผานการทดสอบทครอบคลม
โปรแกรมตองนง ไมคอยเกดปญหา เพราะอาจถกน าไปใชในการตดสนใจส าคญ ๆ ของผบรหาร
2. มความเปนมตรตอผใช (User-friendliness) ปจจบนมผใชโปรแกรมในการท างานมากขน ใน
จ านวนนมผใชทเปนผเรมตนและไมมพนฐานทางดานคอมพวเตอรเละ และมแนวโนมเพมมากขน การ
สรางใหโปรแกรมใชงายและสะดวกจงเปนเรองทมความส าคญ
33
3. คาใชจายต า (Low Cost) กอนการพฒนาตองวางแผนและประเมนคาใชจาย เมอพฒนาตอง
ควบคมคาใชจายใหเปนไปตามแผนในมมมองของผใชโปรแกรม จะตองท างานใหคมกบเงนทจาย ใน
มมมองของผพฒนา คาใชจายในการพฒนาตองต ากวาราคาทเสนอแกลกคา
4. ตองอานงายและสามารถน ากลบมาใชใหม (Readability & Reusability) โปรแกรมทม
ความสามารถมาก มกมโครงสรางทใหญและซบซอน จงควรมการออกแบบเปนโมดล (Module) ยอย ๆ ท
มอสระตอกน และเรยบงาย เพอใหผพฒนาโปรแกรมอนทสามารถเขาใจน าไปพฒนาตอใหเหมาะสมกบยค
สมยได
5. มความปลอดภย (Security) ขอมลส าคญมแนวโนมในการเกบไวในคอมพวเตอรเพมมากขน
รวมถงเผยแพรในอนเทอรเนต ท าใหเกดความเสยงในเรองของความปลอดภยของขอมล เชน การแกไข
ขอมลไมไดรบอนญาต การลกลอบขโมย ไปจนถงการท าลายขอมล โปรแกรมทดจงตองมความปลอดภยสง
6. ใชเวลาในการพฒนาโปรแกรมไมนาน
ปจจบนทงเทคโนโลยและวธการท างานเปลยนแปลงอยางรวดเรว ท าใหเราไมสามารถใชเวลานาน
เกนไปในการพฒนาโปรแกรม ไมเชนนนแลว กวาโปรแกรมจะเสรจ ความตองการอาจเปลยนไปแลว และ
การสงมอบงานกพฒนาเปนไปตามทประเมน