บทที่ 1...

Preview:

Citation preview

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. ใชเวลาในการพฒนาโปรแกรมไมนาน

ปจจบนทงเทคโนโลยและวธการท างานเปลยนแปลงอยางรวดเรว ท าใหเราไมสามารถใชเวลานาน

เกนไปในการพฒนาโปรแกรม ไมเชนนนแลว กวาโปรแกรมจะเสรจ ความตองการอาจเปลยนไปแลว และ

การสงมอบงานกพฒนาเปนไปตามทประเมน

Recommended