naiyana2706.files.wordpress.com€¦ · web...
TRANSCRIPT
1
ความรพนฐานการเขยนโปรแกรม
เนอหาในบทนจะกลาวถงขนตอนวธการทางคอมพวเตอร (computer algorithms) เพอเปนการใหความรพนฐานกอนการเขยนโปรแกรมคอมพวเตอร รวมถงเนอหาเกยวกบโครงสรางภายในโปรแกรมซงจะประกอบดวยเนอหาเกยวกบลกษณะของโปรแกรมแบบโครงสราง และรปแบบโครงสรางภายในโปรแกรม เพอชวยใหผเขยนโปรแกรมสามารถเลอกใชคำาสงใหสอดคลองกบโครงสรางภายในโปรแกรมได ซงรายละเอยดของแตละเนอหามดงตอไปน
1.1 ขนตอนวธการทางคอมพวเตอร (computer algorithms)กอนทเราจะเขยนโปรแกรมคอมพวเตอรภาษาใดภาษาหนงเพอแกปญหาทางคอมพวเตอร เราควรศกษาขนตอนวธการทางคอมพวเตอร เพอใหเกดความรความเขาใจทถกตองตามขนตอนวธดงน1) การวเคราะหงาน (job analysis)2) การเขยนผงงานโปรแกรม (program flowcharting)3) การเขยนโปรแกรม (programming)4) การทดสอบ และแกไขโปรแกรม (testing and editing program)5) การจดทำาเอกสารประกอบ และการบำารงรกษาโปรแกรม (documentation and maintenance program)
1.1.1 การวเคราะหงาน (job analysis)ในการวเคราะหงานเราจะตองกำาหนดจดประสงคของการวเคราะหงาน และขนตอนวธการวเคราะหงานแตละอยางใหได ซงงานแตละอยางมรายละเอยดดงน1.1.1.1 จดประสงคของการวเคราะหงานในการวเคราะหงานแตละอยางมจดประสงคของการวเคราะหงานทสำาคญดงน
2
1. เพอหาวตถประสงคของการเขยนโปรแกรม2. เพอหารปแบบผลลพธทตองการ3. เพอหาขอมลนำาเขาทตองใสเขาไปในโปรแกรม4. เพอหาตวแปรทจำาเปนตองใชในโปรแกรม5. เพอหาขนตอนวธการทำางานของโปรแกรม1.1.1.2 ขนตอนวธการวเคราะหงานในการวเคราะหงานแตละอยางมขนตอนวธการวเคราะหงานทสำาคญดงน1) การหาวตถประสงคของการเขยนโปรแกรมผเขยนโปรแกรมจะตองหาวตถประสงคจากงานทจะเขยนโปรแกรมวา ตองการเขยนโปรแกรมเพอแกปญหาอะไรบางซงจะทำาใหเขยนโปรแกรมไดตรงกบความตองการหรอวตถประสงคของงานนน ๆ 2) การหารปแบบผลลพธทตองการเมอผเขยนโปรแกรมหาวตถประสงคของการเขยนโปรแกรมไดแลว ขนตอนตอมาคอการกำาหนดรปแบบผลลพธทตองการจากโปรแกรม ซงรปแบบผลลพธอาจอยในลกษณะของขอความหรอตวเลข หรอตาราง หรอแผนภม หรออาจใชผสมกนระหวางตวเลขกบขอความ หรอขอความกบตวเลข และตารางกได ขนอยกบผเขยนโปรแกรมเปนผกำาหนดเอง แตโดยสวนมากนยมแสดงผลลพธของโปรแกรมใหอยในรปแบบทเขาใจงายมากกวารปแบบทซบซอน 3) การหาขอมลนำาเขาทตองใสเขาไปในโปรแกรมผเขยนโปรแกรมจะตองหาขอมลนำาเขาจากผลลพธทไดจากโปรแกรม โดยคำานงถงขนตอนวธการคำานวณ และขอมลทจำาเปนตองใสเขาไปเพอใหไดผลลพธทตองการ
ตวอยางท 1.1 ผลลพธทตองการ คอ พนทสามเหลยมมมฉากขอมลนำาเขาทตองใสเขาไปในโปรแกรมคอ 1) สตรคำานวณพนทสามเหลยมมมฉากพนทสามเหลยมมมฉาก = ? x ฐาน x สง2) ความยาวของฐานและความสงของรปสามเหลยม
3
4) การหาตวแปรทจำาเปนตองใชในโปรแกรมตวแปร หมายถง ชอทผเขยนโปรแกรมสามารถตงขนเองตามหลกการตงชอตวแปรของภาษาคอมพวเตอรทนำามาเขยนโปรแกรม (หลกเกณฑการตงชอตวแปรกลาวไวในหวขอ 2.5.3.1) เพอใชในการอางองการเกบขอมลและเรยกใชขอมลภายในตวแปร ดงนนผเขยนโปรแกรมจะตองตงชอตวแปรทใชในการเกบขอมลทงหมดภายในโปรแกรม รวมถงตวแปรบางตวทใชในการนบจำานวนรอบของการทำางานในโปรแกรมอกดวย
จากตวอยางท 1.1 สามารถแสดงการวเคราะหงานตงแตขนตอนท 1 ถง 4 ไดดงน
1) วตถประสงคของการเขยนโปรแกรมเพอคำานวณหาคาพนทสามเหลยมมมฉาก2) รปแบบผลลพธทตองการพมพผลลพธทตองการออกทางภาพดงน* ** output ***Base = 5High = 4Area = 103) ขอมลนำาเขา คอ ความยาวฐานและความสง4) ตวแปรทใชB = ตวแปรทเกบความยาวของสามเหลยมมมฉาก H = ตวแปรทเกบความสงของสามเหลยมมมฉาก Area = ตวแปรทเกบผลลพธทไดจากการคำานวณตามสตร
Area = 1/2*B*H หรอ Area = 0.5*B*H
5) การหาขนตอนวธการทำางานของโปรแกรม
4
การหาขนตอนวธการทำางานของโปรแกรมจะขนอยกบลกษณะของการแกปญหา ดงนนนกเขยนโปรแกรมทมความชำานาญในระดบหนงแลวจะสามารถหาขนตอนวธการทำางานของโปรแกรมไดโดยไมยาก แตสำาหรบผทเรมตนศกษาการเขยนโปรแกรม ควรหาขนตอนวธการทำางานของโปรแกรมตามคำาแนะนำาโดยเรยงตามลำาดบดงน
ขนตอนวธการทำางานของโปรแกรมทแนะนำา
5.1) เรมตนทำางาน5.2) กำาหนดคาเรมตนใหกบตวแปร5.3) พมพหวรายงาน (ถามรายงาน)5.4) รบขอมลเขาทละเรคอรด5.5) ตรวจสอบขอมลวาเปนชดสดทายหรอไม5.5.1 ถาเปนขอมลชดสดทาย ใหไปทำางานขอ 5.11 5.5.2 ถาไมใชขอมลชดสดทาย ใหทำางานขอตอมา (ขอ 5.6)5.6) คำานวณผลลพธ5.7) เปรยบเทยบผลลพธ (ถาม)5.8) เพมคาตวแปรสะสม (ถาม)5.9) พมพคาผลลพธทละเรคอรด5.10) ยอนกลบไปทำางานขอ 5.45.11) พมพสรป (ถาม)5.12) จบการทำางาน
ทงนการวเคราะหงานเพอแกปญหาแตละอยางอาจมบางขนตอนแตกตางกนไป ดงนนคำาแนะนำาขางตนจงเปนเพยงแนวทางของการหาขนตอนวธการทำางานของโปรแกรมเทานน ซงเวลาใชงานจรงผวเคราะหงานตอง
5
ประยกตใหเขากบปญหาทตองการแกไขตอไป เพอความเขาใจเกยวกบขนตอนวธการวเคราะหงานมากยงขน ใหศกษาจากตวอยางการวเคราะหงานดงตอไปน
ตวอยางท 1.2 จงเขยนวเคราะหงาน เพอเขยนโปรแกรมคำานวณ พนทสเหลยมผนผา จำานวน 1 รป โดยทผใชโปรแกรม จะตองปอนความกวาง และความยาวของสเหลยมผนผา เขาไปในโปรแกรม
วธทำา ขนตอนการวเคราะหงานทง 5 ขนตอน สามารถแสดงไดดงน1) วตถประสงคของการเขยนโปรแกรมเพอคำานวณพนทสเหลยมผนผาจำานวน 1 รป2) รปแบบผลลพธทตองการพมพผลลพธออกทางจอภาพ ดงน
3) ขอมลนำาเขา3.1) สตรคำานวณพนทสเหลยมผนผา
Area = Width*Length
3.2) รบคาความกวางและความยาวของสเหลยมผนผาผานทางคยบอรด4) ตวแปรทตงขนเพอใชในโปรแกรมWidth = ตวแปรทใชเกบความกวางของสเหลยมผนผา Length = ตวแปรทใชเกบความยาวของสเหลยมผนผาArea = ตวแปรทใชเกบพนทของสเหลยมผนผา
6
โดยคำานวณไดจากสตร Area = Width*Length5) ขนตอนวธการทำางานของโปรแกรมมดงน5.1) เรมตนทำางาน5.2) รบขอมลคาความยาวและความกวางของสเหลยมผนผาผานทางคยบอรด5.3) คำานวณพนทสเหลยมผนผาตามสตร Area = Width*Length5.4) พมพคาความยาว ความกวาง และพนทสเหลยมผนผาออกทางจอภาพ5.5) จบการทำางาน
1.1.2 การเขยนผงงานโปรแกรม (program flowcharting)สำาหรบหวขอการเขยนผงงานโปรแกรมจะประกอบดวยเนอหาทสำาคญดงนคอ ความหมายของผงงาน ประเภทของผงงาน สญลกษณมาตรฐานทใชเขยนผงงานโปรแกรม หลกการเขยนผงงานโปรแกรม และขนตอนการเขยนผงงานโปรแกรม ดงรายละเอยดตอไปน
1.1.2.1 ความหมายของผงงาน“ผงงาน ” (flowchart) ทางคอมพวเตอร หมายถง แผนภาพทเขยนขนโดยใชสญลกษณมาตรฐาน เพอแสดงขนตอนวธการทำางานของโปรแกรม หรอระบบงานทตองการ
1.1.2.2 ประเภทของผงงานผงงานสามารถจำาแนกออกได 2 ประเภท คอ1) ผงงานระบบ (system flowchart) หมายถง ผงงานทแสดงถงขนตอนวธการทำางานของระบบงานใดระบบหนง ซงในผงงานระบบจะแสดงใหเหนถงสอทใชรบขอมล บนทกขอมล วธการประมวลผล ขนตอนการทำางานและความสมพนธของสวนตาง ๆ ในระบบงานอยางกวาง ๆ เพอใหเหนภาพรวมของระบบงานใดระบบงานหนง เชน
7
รปท 1.1 ผงงานระบบแสดงการตดเกรดทมา : กรรณการ กมลรตน, 2547.
2) ผงงานโปรแกรม (program flowchart) หมายถงผงงานทแสดงขนตอน วธการทำางานของโปรแกรมทตองการเขยนขน ภายในผงงานโปรแกรม จะแสดงใหเหนขนตอน วธการทำางาน ของโปรแกรมอยางละเอยด เพอใหคอมพวเตอรสามารถทำางานตามทเขยนไวในผงงานโปรแกรม ไดอยางถกตอง โดยเราสามารถนำาขนตอน วธการทำางานของโปรแกรมในขนการวเคราะหงาน มาเขยนเปนผงงานโปรแกรมไดทนท จากนนกสามารถนำาผงงานโปรแกรม ไปเขยนโปรแกรมตามทตองการได ดงนนในเรองของการเขยนผงงาน ทจะกลาวตอไปนจะเกยวของกบผงงานโปรแกรมทงสน เชน
8
รปท 1.2 ผงงานโปรแกรมแสดงรายละเอยดการทำางานของโปรแกรมสำาหรบตดเกรด
ทมา : เฉลมพล ทพซาย, 2530 : 29.
1.2.1.3 สญลกษณมาตรฐานทใชเขยนผงงานโปรแกรมสถาบนมาตรฐานแหงชาตของสหรฐอเมรกา (American National Standard Institute) และองคการระหวางประเทศวาดวยการมาตรฐาน (International Organization for Standardization) ไดรวมกนกำาหนดสญลกษณมาตรฐานทใชเขยนผงงานโปรแกรม โดยในเอกสารเลมนจะนำาเสนอสญลกษณทนยมนำามาใชเขยนผงงานโปรแกรม ดงตอไปน
1. สญลกษณ Process
Process
ความหมายของ Process คอ การกำาหนดคาหรอการคำานวณคา
ตวอยางท 1.3 แสดงการกำาหนดคาใหตวแปร Total
9
ตวอยางท 1.4 แสดงการคำานวณคาผลรวมของตวแปร Total
2. สญลกษณ Decision
ความหมายของ Decision คอ การทดสอบเงอนไขหรอเปรยบเทยบเงอนไข เพอตดสนใจทำางานอยางใดอยางหนงตามทตองการ
ตวอยางท 1.5 แสดงการเปรยบเทยบเงอนไข 1 ทางเลอก
ตวอยางท 1.6 แสดงการเปรยบเทยบเงอนไข 2 ทางเลอก
10
3. สญลกษณ Start/ Stop program หรอ Terminal Interrupt
ความหมายของสญลกษณ คอ การเรมตนโปรแกรม หรอการสนสดการทำางานของโปรแกรม หรอหยดการทำางานชวคราว ตวอยางท 1.7 แสดงการใชงานสญลกษณ Start/ Stop program หรอ Terminal Interrupt
11
4. สญลกษณ Input / Output
ความหมายของสญลกษณ คอ การรบขอมล (input) หรอการแสดงผลลพธ (output) โดยไมไดระบสอทใช
ตวอยางท 1.8 แสดงการใชงานสญลกษณ Input/ Output
12
5. สญลกษณ Display
ความหมายของสญลกษณ คอ การแสดงผลลพธทางจอภาพ
ตวอยางท 1.9 แสดงการใชงานสญลกษณ display
6. สญลกษณ Document
ความหมายของสญลกษณ คอ การพมพผลลพธออกทางกระดาษพมพ
ตวอยางท 1.10 แสดงการใชงานสญลกษณ Document
7. สญลกษณ Manual Input
13
ความหมายของสญลกษณ คอ การรบขอมลหรอคำาสงผานทางคยบอรด
ตวอยางท 1.11 แสดงการใชงานสญลกษณ Manual Input
8. สญลกษณ Manual Operation
ความหมายของสญลกษณคอการรบขอมลหรอแสดงผลลพธโดยไมระบสอ
ตวอยางท 1.12 แสดงการใชงานสญลกษณ Manual Operation
14
9. สญลกษณ Connector
Connector
ความหมายของสญลกษณ คอ แสดงจดเชอมตอจากทหนงไปยงอกทหนงของผงงาน โดยทจดเชอมตอนอยในหนาเดยวกน
ตวอยางท 1.13 แสดงการใชงานสญลกษณ Connector
10. สญลกษณ Off page Connector
Off page Connector
ความหมายของสญลกษณ คอ แสดงจดเชอมตอจากทหนงไปยงอกทหนงของผงงาน โดยทจดเชอมตอนอยตางหนากน
15
ตวอยางท 1.14 แสดงการใชงานสญลกษณ Off page Connector
คำานวณคา Avg = Total + N เสรจแลว ไปทำางานตอไปทจด B โดยทจด B อยตางหนากน
11. สญลกษณ flow line and arrowheads
ความหมายของสญลกษณ คอ แสดงทศทาง การทำางานของผงงาน โดยใชลกศร เปนตวกำาหนดทศทาง การทำางานของผงงาน
ตวอยางท 1.15 แสดงการใชงานสญลกษณ flow line and arrowheads
16
12. สญลกษณ Punched Card
ความหมายของสญลกษณคอการรบขอมลหรอแสดงผลลพธบนบตรเจาะร ตวอยางท 1.16 แสดงการใชงานสญลกษณ Punched Card
1.1.2.4 หลกการเขยนผงงานโปรแกรมการเขยนผงงานโปรแกรม มหลกการเขยนดงน1) เขยนผงงานจากดานบนลงดานลาง2) ใชสญลกษณใหตรงกบความหมายของผงงาน3) ใชเสน flow line และ arrowheads แสดงทศทางการทำางานของผงงาน4) ใสคำาอธบายลงในสญลกษณสน ๆ แตเขาใจงาย จะใชภาษาไทยหรอองกฤษกได5) หลกเลยงการโยงเสนทศทางของผงงานใหตดกนเพราะจะทำาใหสบสน ควรใชจดเชอมตอ (connector) หนาเดยวกนแทน จะเขาใจไดงายและเปนระเบยบ6) พยายามเขยนผงงานใหจบในหนากระดาษเดยวกน แตถาไมจบในหนาเดยวกน ควรใชจดเชอมตอตางหนากระดาษ (off page connector)
1.1.2.5 ขนตอนการเขยนผงงานโปรแกรมเพอความเขาใจเกยวกบขนตอนการเขยนผงงานโปรแกรมไดถกตองใหศกษาจากตวอยางดงตอไปน
17
ตวอยางท 1.17 จงเขยนผงงานโปรแกรมทไดวเคราะหงานมาแลวในตวอยางท 1.2
วธทำา
จากการวเคราะหงานในตวอยางท 1.2 จะไดวา
ขนตอนวธการทำางานของโปรแกรม มดงน1) เรมตนทำางาน2) รบขอมลคาความยาว และความกวางของสเหลยมผนผาผานทางคยบอรด3) คำานวณพนทสเหลยมผนผาตามสตร Area = Width * Length4) พมพคาความยาว ความกวาง และพนทสเหลยมผนผาออกทาง จอภาพ5) จบการทำางาน
การเขยนผงงานโปรแกรม จะนำาขนตอนวธการทำางานของโปรแกรม ทไดจากการวเคราะหงาน มาเขยนผงงานไดดงน
18
รปท 1.3 แสดงผงงานขนตอนวธการทำางานของโปรแกรม ทมา : สมชาย รตนเลศนสรณ, 2545 : 17.
1.1.3 การเขยนโปรแกรม (programming)ในหวขอเรองการเขยนโปรแกรมจะกลาวถงเนอหา 2 สวน คอความหมายของโปรแกรมคอมพวเตอร และภาษาคอมพวเตอรดงมรายละเอยดตอไปน
ความหมายของโปรแกรมคอมพวเตอรโปรแกรมคอมพวเตอร (computer program) หมายถง ชดของคำาสงทเขยนขนเพอสงใหคอมพวเตอรทำางานตามทตองการ สวนการเขยนโปรแกรม (programming) หมายถง การเขยนชดคำาสงดวยภาษาคอมพวเตอรภาษาใดภาษาหนง เพอใหคอมพวเตอรทำางานตามโปรแกรมทเราเขยนขน
ดงนน ผเขยนโปรแกรม (programmer) จงจำาเปนตองเรยนรภาษาคอมพวเตอรภาษาใดภาษาหนงหรอหลายภาษา แลวฝกฝนทกษะการเขยนโปรแกรมดวยภาษาคอมพวเตอรทตองการใชงานใหเกดความชำานาญจงจะสามารถเขยนโปรแกรมคอมพวเตอรไดอยางมประสทธภาพ
ภาษาคอมพวเตอรภาษาคอมพวเตอร (computer language) หมายถง ภาษาทสามารถนำามาใชเขยนโปรแกรมคอมพวเตอรได
1.1.4 การทดสอบ และแกไขโปรแกรม (testing and editing program)หลงจากทเราเขยนโปรแกรมเสรจแลว ขนตอนตอไป คอ การทด-สอบโปรแกรมทเขยนขนซงอาจพบความผดพลาดได 2 ชนด ดงน1) ความผดพลาดทางไวยากรณภาษา (syntax error) เปนความผดพลาดทเกดจากการเขยนคำาสงของภาษาคอมพวเตอรผด ตวอยางเชน คำาสง printf( ) ในภาษา C ตองเขยนดวยตวอกษรตวเลก แตเขยนเปน PRINTF( ) เปนตน โดยสวนมากความผดพลาดทางไวยากรณ จะถกตรวจ
19
สอบพบเมอมการแปลโปรแกรม (compile) ใหเปนภาษาเครอง ซงเราสามารถแกไขโดยการเขยนคำาสงใหถกตองตามไวยากรณของภาษานน ๆ
2) ความผดพลาดทางตรรกะ (logical error) เปนความผดพลาดทเกดจากการลำาดบการทำางานผดหรอปอนสตรคำานวณผด ตวอยางเชน ตองการหาคา X = X + Y แตปอนสตรเปน X = X * Y อยางน เปนตน วธการตรวจหาความผดพลาดแบบน คอ ตรวจสอบการคำานวณผลลพธของโปรแกรมวาตรงกบผลลพธทคำานวณดวยมอหรอเครองคดเลขหรอไม ถาไมตรงกนแสดงวาเกดความผดพลาดทางตรรกะขน วธการแกไขกคอ การแกไขสตรใหถกตอง หรอแกไขลำาดบการทำางานใหถกตอง ดงนน จะเหนไดวาผเขยนโปรแกรมจะตองทำาการทดสอบโปรแกรมและแกไขโปรแกรมใหสามารถทำางานไดตามทตองการ
1.1.5 การจดทำาเอกสารประกอบ และการบำารงรกษาโปรแกรม (documentation and maintenance program)เมอผเขยนโปรแกรมไดทำาการทดสอบโปรแกรมและแกไขความผดพลาดทเกดขนเรยบรอยแลว ขนตอนตอไปกควรจดทำาคมอการใชโปรแกรม เพราะจะทำาใหผใชโปรแกรมสามารถใชงานไดถกตอง โดยคมอการใชโปรแกรมทดควรจดทำาในลกษณะทแสดงการทำางานเปนขนตอน ผใชโปรแกรมสามารถปฏบตตามไดจรง สวนการบำารงรกษาโปรแกรมทพฒนาขนกตองมคำาแนะนำาใหผใชโปรแกรมปฏบต ตวอยางเชน การเกบโปรแกรมตนฉบบ ควรเกบไวในกลองทมดชด ปองกนฝนได ไมควรเกบไวบนโตะทำางาน ไมควรเกบไวในรถยนตเพราะอาจถกอากาศรอนทำาใหเสยได นอกจากนตองมการสำาเนาโปรแกรมตนฉบบเอาไว อยางนอย 1 ชด แลวนำาชดทสำาเนาไปใช ไมควรใชโปรแกรมตนฉบบโดยตรง ควรเกบเอาไวสำาหรบกรณทโปรแกรมสำาเนาเกดปญหาจะไดนำาโปรแกรมตนฉบบมาทำาสำาเนาและใชงานไดทนท