การวิเคราะห์งานหรือการวิเคราะห์ปัญหา เป็นงานขั้นแรกที่สำคัญที่สุดสำหรับ การเตรียมเพื่อเขียนโปรแกรม การวิเคราะห์งาน คือ การพิจารณาถึงผลลัพธ์ที่ต้องการได้จากโปรแกรม รูปแบบของผลลัพธ์ ข้อมูลที่ต้องจัดเตรียม ตลอดจนวิธีการและขั้นตอนการเรียงลำดับคำสั่งภายในโปรแกรมเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ (วัชราภรณ์ สุริยาภิวัฒน์, 2542 : 183) การวิเคราะห์งานที่ถูกต้องจะช่วยให้การเขียนโปรแกรมเป็นไปโดยง่ายขึ้นและไม่เสียเวลา จึงไม่ควรมองข้ามขั้นตอนนี้ไป
2.1 หลักเกณฑ์ในการวิเคราะห์งาน
การวิเคราะห์งานให้ได้ผลดีนั้นมีผู้วิเคราะห์กันหลายแบบแต่หลักเกณฑ์ใหญ่ที่นิยมกันทั่วไปมักพิจารณาสิ่งต่าง ๆ ตามลำดับดังนี้
2.1.1 สิ่งที่ต้องการ
เป็นการพิจารณาเกี่ยวกับงานที่ต้องการให้คอมพิวเตอร์ทำและผลลัพธ์ที่ต้องการ กรณีที่ต้องการผลลัพธ์มากกว่าหนึ่งอย่าง ควรจะเขียนแยกเป็นข้อ ๆ ให้ชัดเจน โดยทั่วไปมักพิจารณาสิ่งที่ต้องการจากคำสั่งหรือโจทย์ของงาน เมื่ออ่านโจทย์แล้วก็ขีดเส้นใต้ประโยคที่เป็นคำสั่ง จะช่วยแยกแยะความต้องการของงานได้ชัดเจนขึ้น ตัวอย่างเช่น
1) ต้องการคำนวณคะแนนสูงสุด คะแนนต่ำสุด และคะแนนเฉลี่ยของ ผู้เข้าสอบวิชาคอมพิวเตอร์เบื้องต้นทั้งหมด โดยสมมุติว่ามีการสอบสองครั้ง คือ สอบกลางภาคและปลายภาค
2) ต้องการพิมพ์รายงานเกี่ยวกับค่าจ้างรายวันของพนักงานบริษัท แห่งหนึ่งพร้อมทั้งยอดรวมของเงินค่าจ้างทั้งหมด
3) ต้องการคำนวณเงินเดือนที่ได้รับ ภาษีเงินได้ และเงินสุทธิที่พนักงานแต่ละคนได้รับ
4) ต้องการนับจำนวนสมาชิกของชมรมคอมพิวเตอร์แห่งหนึ่งแยกตามอายุ 3 กลุ่ม และแยกตามเพศ
2.1.2 รูปแบบของผลลัพธ์
เป็นการศึกษาถึงลักษณะของผลลัพธ์ที่ต้องการให้เครื่องคอมพิวเตอร์แสดงบนจอภาพหรือพิมพ์ออกมา งานบางอย่างอาจกำหนดลักษณะของผลลัพธ์มาให้ชัดเจน แต่งานบางงานอาจไม่ให้รายละเอียดใด ๆ จึงเป็นหน้าที่ของผู้วิเคราะห์งานที่จะต้องออกแบบ ผลลัพธ์ให้ตรงกับความต้องการของผู้ที่จะนำโปรแกรมไปใช้ การทราบรูปแบบผลลัพธ์ที่ชัดเจนจะทำให้เข้าใจถึงจุดหมายและขอบเขตของโปรแกรม และจะได้หาวิธีการนำไปสู่ผลลัพธ์ที่ต้องการ ตัวอย่างของรูปแบบผลลัพธ์ เช่น
ตัวอย่างรูปแบบผลลัพธ์ที่ 1
รายงานผลการสอบ วิชา 4141502 การเขียนโปรแกรมคอมพิวเตอร์ ปีการศึษา 25... |
รหัสประจำตัว ชื่อนามสกุล คะแนนสอบกลางภาค คะแนนสอบปลายภาค คะแนนรวม เกรด |
: : : : : : : : : : : : : : : : : : |
คะแนนสูงสุด …………………… คะแนน
คะแนนต่ำสุด …………………… คะแนน
คะแนนเฉลี่ย …………………… คะแนน
ตัวอย่างรูปแบบผลลัพธ์ที่ 2
บริษัท เอบีซี อิมปอร์ต เอ็กซ์ปอร์ต จำกัด รายงานค่าจ้างรายวัน |
เลขที่ ชื่อพนักงาน ค่าจ้างที่ได้รับ |
: : : |
ตัวอย่างรูปแบบผลลัพธ์ที่ 3
บริษัท ก้าวหน้าสิ่งทอ จำกัด เงินเดือนสุทธิของพนักงาน ณ วันที่ |
||||
เลขที่ |
ชื่อพนักงาน |
เงินเดือน |
ภาษี |
สุทธิที่ได้รับ |
: : |
: : |
: : |
: : |
: : |
รวมทั้งสิ้น |
XX,XXX.XX XX,XXX.XX |
ตัวอย่างรูปแบบผลลัพธ์ที่ 4
ตารางแสดงจำนวนสมาชิก แยกตาม เพศ และกลุ่มอายุ |
|||
อายุ |
ชาย |
หญิง |
รวม |
< 20 20 - 30 > 30 |
XXX XXX XXX |
XXX XXX XXX |
XXX XXX XXX |
รวม |
X,XXX |
X,XXX |
X,XXX |
2.1.3 ข้อมูลที่นำเข้า
ภายหลังที่ทราบรูปแบบของผลลัพธ์ที่ต้องการแล้วจะต้องพิจารณาถึงข้อมูลที่จำเป็นต้องทราบเพื่อใช้เป็นข้อมูลนำเข้า (Input Data) การพิจารณาข้อมูลนำเข้านั้นนอกจากจะดูว่ามีข้อมูลอะไรบ้างที่จำเป็นต้องใช้ในการประมวลผล บางครั้งยังต้องคำนึงถึงรูปแบบของข้อมูลที่จะจัดให้สอดคล้องกับตัวโปรแกรม เช่น จะจัดเรียงข้อมูลใดไว้ก่อนหลัง จะใช้ความยาวของแต่ละชนิดเท่าใด ถ้าเป็นข้อมูลตัวเลขจะมีทศนิยมกี่หลัก เป็นต้น
แสดงข้อมูลนำเข้าจากตัวอย่างรูปแบบผลลัพธ์
ตัวอย่างรูปแบบผลลัพธ์ที่ 1 ข้อมูลนำเข้าได้แก่ ปีการศึกษา รหัสประจำตัวของ ผู้เข้าสอบ ชื่อ-นามสกุล คะแนนสอบครั้งที่ 1 และครั้งที่ 2
ตัวอย่างรูปแบบผลลัพธ์ที่ 2 ข้อมูลนำเข้า ได้แก่ เลขที่ ชื่อพนักงาน ค่าจ้างรายวันและจำนวนวันที่ทำงาน
ตัวอย่างรูปแบบผลลัพธ์ที่ 3 ข้อมูลนำเข้า ได้แก่ วันที่ เลขที่ ชื่อพนักงาน เงินเดือนที่ได้รับและอัตราภาษีที่ต้องจ่าย
ตัวอย่างรูปแบบผลลัพธ์ที่ 4 ข้อมูลนำเข้า ได้แก่ เพศ และอายุ ของสมาชิกชมรมคอมพิวเตอร์
2.1.4 ตัวแปรที่ใช้
เป็นการกำหนดชื่อแทนความหมายของข้อมูลนำเข้า สิ่งที่จะพิมพ์หรือแสดงเป็นผลลัพธ์ และค่าต่าง ๆ ที่อยู่ในระหว่างการคำนวณหรือประมวลผล เช่น
ID แทน เลขประจำตัว
NAME แทน ชื่อพนักงาน
SALARY แทน เงินเดือน
TAX แทน ภาษีที่ถูกหักจากเงินเดือน
NET แทน เงินสุทธิที่ได้รับ
การตั้งชื่อตัวแปรมีกฎเกณฑ์กว้าง ๆ ดังนี้
1. ตั้งให้ตรงกับกฎเกณฑ์การตั้งชื่อของภาษาคอมพิวเตอร์ที่จะใช้ในการเขียนโปรแกรม
2. ให้มีความหมายใกล้เคียงกับค่าที่แทน เช่น ใช้ TAX แทนภาษี NAME แทนชื่อและนามสกุล เป็นต้น อย่างไรก็ตามในขั้นการวิเคราะห์งาน เราอาจจะยังไม่ตั้งชื่อตามกฎของภาษาคอมพิวเตอร์ก็ได้ แต่เมื่อนำขั้นตอนที่วิเคราะห์ไปเขียนโปรแกรม จึงทำการปรับเปลี่ยนชื่อ ตัวแปรให้ตรงตามกฎของภาษาที่ใช้เขียนโปรแกรม เช่น NAME เมื่อใช้กับการเขียนโปรแกรมภาษาเบสิก ปรับเปลี่ยนให้ตรงกับภาษาจะได้เป็น NAME$ เป็นต้น
จากตัวอย่างในหัวข้อรูปแบบของผลลัพธ์เมื่อทำการวิเคราะห์เพื่อกำหนดตัวแปรในการทำงานได้ดังนี้
จากตัวอย่างรูปแบบผลลัพธ์ที่ 1
SEMESTER แทน ปีการศึกษา
ID แทน รหัสประจำตัว
NAME แทน ชื่อและนามสกุล
MID แทน คะแนนสอบกลางภาค
FINAL แทน คะแนนสอบปลายภาค
TOTAL แทน คะแนนรวม (MID + FINAL)
MAX แทน คะแนนสูงสุด
MIN แทน คะแนนต่ำสุด
MEAN แทน คะแนนเฉลี่ย
จากตัวอย่างรูปแบบผลลัพธ์ที่ 2
NO แทน เลขที่
NAME แทน ชื่อพนักงาน
RATE แทน ค่าจ้างที่ได้รับรายวัน
DAY แทน จำนวนวันที่ทำงาน
TOTAL แทน ค่าจ้างที่ได้รับทั้งหมด (RATE X DAY)
SUM แทน รวมค่าจ้างที่จ้างพนักงาน
จากตัวอย่างรูปแบบผลลัพธ์ที่ 3
DATE แทน วันที่
NUMBER แทน เลขที่
NAME แทน ชื่อพนักงาน
SALARY แทน เงินเดือน
RATE แทน อัตราภาษีที่เสีย
TAX แทน จำนวนเงินภาษีที่จ่าย
NET แทน เงินสุทธิหลังจากหักภาษี
SUMS แทน ยอดรวมเงินเดือนของพนักงานทุกคน
SUMTAX แทน ยอดรวมเงินภาษีของพนักงานทุกคน
SUMNET แทน ยอดรวมเงินสุทธิหลังจากหักภาษีของพนักงานทุกคน
จากตัวอย่างรูปแบบผลลัพธ์ที่ 4
SEX แทน เพศ โดยที่ ถ้า SEX = M หมายถึง เพศชาย
SEX = F หมายถึง เพศหญิง
AGE แทน กลุ่มอายุโดยที่ ถ้า AGE = 1 หมายถึง กลุ่มอายุ < 20 ปี
AGE = 2 หมายถึง กลุ่มอายุ 20 - 30 ปี
AGE = 3 หมายถึง กลุ่มอายุ > 30 ปี
SM1 แทน จำนวนสมาชิกชายที่อยู่ในกลุ่มอายุ < 20 ปี
SM2 แทน จำนวนสมาชิกชายที่อยู่ในกลุ่มอายุ 20 - 30 ปี
SM3 แทน จำนวนสมาชิกชายที่อยู่ในกลุ่มอายุ > 30 ปี
SF1 แทน จำนวนสมาชิกหญิงที่อยู่ในกลุ่มอายุ < 20 ปี
SF2 แทน จำนวนสมาชิกหญิงที่อยู่ในกลุ่มอายุ 20 - 30 ปี
SF3 แทน จำนวนสมาชิกหญิงที่อยู่ในกลุ่มอายุ > 30 ปี
R1 แทน จำนวนสมาชิกที่อยู่ในกลุ่มอายุ < 20 ปี (SM1 + SF1)
R2 แทน จำนวนสมาชิกที่อยู่ในกลุ่มอายุ 20 - 30 ปี (SM2 + SF2)
R3 แทน จำนวนสมาชิกที่อยู่ในกลุ่มอายุ > 30 ปี (SM3 + SF3)
C1 แทน รวมจำนวนสมาชิกชาย (SM1 + SM1 + SM3)
C2 แทน รวมจำนวนสมาชิกหญิง (SF1 + SF2 + SF3)
TT แทน รวมจำนวนสมาชิกทั้งหมด
2.1.5 วิธีการประมวลผล
วิธีการประมวลผล (วัชราภรณ์ สุริยาภิวัฒน์, 2542 : 188) คือ ขั้นตอนของการประมวลผลเพื่อให้ได้ผลลัพธ์ตามรูปแบบที่ต้องการโดยใช้ข้อมูลนำเข้าและตัวแปรต่าง ๆ ตามที่ได้กำหนดไว้ ขั้นตอนของวิธีการจะประกอบด้วยอะไรบ้างนั้น ขึ้นอยู่กับวิธีการเขียนโปรแกรม โดยทั่วไปการเรียงคำสั่งในโปรแกรมเพื่อประมวลผลข้อมูลมี 2 วิธี คือ
1) รับข้อมูลเข้าสู่คอมพิวเตอร์ทีละรายการ แล้วประมวลผลและแสดงผลลัพธ์ทีละรายการ หลังจากนั้นก็จะรับข้อมูลรายการใหม่ เพื่อนำไปประมวลผลและแสดง ผลลัพธ์ วนเวียนเช่นนี้ไปเรื่อย ๆ จนกว่าจะหมดข้อมูลที่ต้องการประมวลผลวิธีนี้เป็นวิธีที่นิยมใช้กันโดยทั่วไปดังภาพที่ 1
ภาพที่ 1 รับข้อมูลเข้าสู่คอมพิวเตอร์ทีละรายการวิธีที่ 1
2) ใช้วิธีรับข้อมูลทั้งหมดเข้าสู่เครื่องคอมพิวเตอร์ในครั้งเดียวจากนั้นประมวลผล แล้วแสดงผลลัพธ์ของทุกรายการในครั้งเดียว ดังภาพที่ 2
ภาพที่ 2 วิธีรับข้อมูลทั้งหมดเข้าสู่เครื่องคอมพิวเตอร์ในครั้งเดียว วิธีที่ 2
วิธีนี้จะต้องใช้เนื้อที่ในหน่วยความจำมาก และคำสั่งที่ใช้ในการเขียนโปรแกรม โดยไม่ใช้คำสั่งเบื้องต้น ผู้ฝึกเขียนโปรแกรมใหม่จึงมักใช้วิธีที่ 1 มากกว่า
นอกจากนี้วิธีการประมวลผลยังต้องคำนึงถึงรูปแบบผลลัพธ์และลักษณะของข้อมูล นั่นคือ
1) พิจารณาว่ารูปแบบของผลลัพธ์ต้องการพิมพ์คำอธิบายตอนต้น หรือที่เรียกว่า หัวตาราง (Table Heading) หรือไม่ ถ้าจะมีต้องพิมพ์หัวตารางก่อนเสมอ
2) ถ้าต้องการคำนวณยอดรวมทั้งหมด เช่น ยอดรวมเงินค่าจ้างของพนักงานทุกคนจะต้องมีการกำหนดตัวแปรหนึ่งตัว เพื่อเป็นการเก็บค่ายอดรวมไว้ตั้งแต่ต้น อาจจะก่อนหรือหลังพิมพ์หัวตารางก็ได้ การกำหนดตัวแปรดังกล่าวมักจะกำหนดให้มีค่าเท่ากับศูนย์ เช่น SUM = 0
กรณีที่มีการหาหลายยอดรวมก็ต้องกำหนดตัวแปรสำหรับยอดรวมทุก ๆ ค่า เช่น ในตัวอย่างรูปแบบผลลัพธ์ที่ 3 ต้องกำหนด SUMS = 0 และ SUMTAX = 0 ส่วน SUMNET ได้จาก SUMS - SUMTAX จึงไม่ต้องกำหนดให้เป็นศูนย์
3) พิจารณาข้อมูลที่นำเข้า (Input Data) หรือตัวเลขที่เกี่ยวข้องถ้าตัวเลขที่ใช้มี ลักษณะเปลี่ยนไปแบบไม่มีระบบ กล่าวคือ มีความห่างของตัวเลขไม่แน่นอน ต้องใช้วิธีรับค่าตัวแปรนำเข้า เช่น เงินเดือนของพนักงานเป็นข้อมูลตัวเลขที่มีความห่างของค่าที่ไม่แน่นอน นั่นคือ พนักงานคนแรกมีเงินเดือน 5,000 คนที่สอง 8,600 คนที่สาม 4,000 และคนที่สี่ 12,000 ฯลฯ ซึ่งค่าความห่างของตัวเลขไม่เท่ากัน ช่วงห่างตัวเลขมีค่าไม่แน่นอนและไม่เท่ากัน
5,000 8,600 4,000 12,000 .......
ลักษณะข้อมูลแบบนี้ต้องใช้วิธีการรับค่าตัวแปรเข้ามา แต่ถ้าข้อมูลที่เกี่ยวข้องเป็นระบบ มีช่วงห่างเท่ากัน เช่น
1 2 3 4 5 6 .......
5 10 15 20 25 30 .......
ให้ใช้วิธีกำหนดตัวแปรให้มีค่าเท่ากับเริ่มต้นของข้อมูลแทนการรับข้อมูลเข้ามา เช่น กำหนดให้ N แทนการรับค่า 1 2 3 4 ..... กำหนดให้ N เริ่มที่ 1 จะได้ N=1 และ กำหนดให้ NUMBER แทนการรับค่า 5 10 15 20 25 ..... และ กำหนดให้ NUMBER เริ่มที่ 5 จะได้ NUMBER = 5 เป็นต้น
4) ในการเขียนโปรแกรมรับข้อมูลทีละรายการ จะต้องมีการทดสอบว่าข้อมูลหมดหรือไม่ หรือใช้วิธีการกำหนดตัวแปรสำหรับนับรอบ (Loop) เพื่อให้นับจำนวนรอบการประมวลผลจนกว่าจะครบตามจำนวนครั้งที่ต้องการ
4.1) การทดสอบข้อมูลสุดท้าย
ในการบันทึกข้อมูลเพื่อเข้าทำการประมวลผลจะประกอบด้วยขั้นตอนในการตรวจสอบข้อมูลชุดสุดท้ายหรือการหมดของข้อมูลที่นำเข้าสู่การประมวลผลมีอยู่ 2 วิธี คือ
4.1.1) เลือกตัวแปรที่เป็นข้อมูลนำเข้าตัวใดตัวหนึ่งที่มีค่าเป็นไปไม่ได้เป็นตัวทดสอบลำดับของการทดสอบจะอยู่ถัดจากการรับข้อมูลซึ่งการทดสอบข้อมูลจึงกระทำก่อนมีการประมวลผลหากทดสอบแล้วพบว่าตัวแปรมีค่าเท่ากับค่าที่เป็นไปไม่ได้ จะเลิกจากการประมวลผลข้อมูลทีละรายการ
พิจารณาโปรแกรมภาษาเบสิกง่าย ๆ ต่อไปนี้ เป็นการใช้ตัวแปรที่รับข้อมูลเข้า (X) เป็นตัวตรวจสอบการหมดข้อมูล โดยหากค่าที่รับเข้าน้อยกว่า 0 เป็นการหมดข้อมูล
คำสั่ง ความหมาย
10 INPUT X 10 รับตัวเลขทางแป้นพิมพ์แล้วเก็บไว้ในตัวแปร X ครั้งละ 1 ค่า
20 IF X < 0 THEN GOTO 60 20 ถ้าตัวเลขที่อยู่ในตัวแปร X เป็นค่าติดลบให้ ทำคำสั่ง GOTO ไปบรรทัดที่ 60 แต่ถ้าไม่ใช่
ให้ทำคำสั่งในบรรทัดที่ 30 ต่อไป
30 Y = X + 200 30 เอาค่าที่อยู่ในตัวแปร X ขณะนั้นบวกกับ 200 แล้วเก็บไว้ในตัวแปร Y
40 PRINT X,Y 40 แสดงค่าที่อยู่ในตัวแปร X และ Y
50 GOTO 10 50 ย้อนกลับไปทำคำสั่งในบรรทัดที่ 10 นั่นคือ รับค่าตัวเลขทางแป้นพิมพ์ตัวใหม่ และเก็บไว้
ในตัวแปร X (ค่าเดิมจะถูกแทนที่ด้วยค่าใหม่)
60 PRINT “GOOD BYE” 60 ถ้าค่าที่ป้อนทางแป้นพิมพ์คือ ค่าติดลบก็จะทำคำสั่งในบรรทัดที่ 60 นั่นเอง
แสดง GOOD BYE บนหน้าจอ
70 END 70 ให้หยุดทำงาน
4.1.2) ใช้วิธีการรับตัวแปรเพิ่มเข้าไปอีกตัวหนึ่ง การวางคำสั่งทดสอบมักอยู่ภายหลังเสร็จสิ้นการแสดงผลลัพธ์ในแต่ละรอบแล้ว วิธีนี้ข้อมูลรายการสุดท้ายจะผ่านการประมวลผลมาแล้ว หากพบว่าเป็นรายการสุดท้ายจะหยุดการประมวลผล
คำสั่ง ความหมาย
10 INPUT X, LC 10 รับตัวเลขทางแป้นพิมพ์แล้วเก็บไว้ในตัวแปร X และ LC
20 Y = X + 200 20 นำค่าในตัวแปร X บวกกับ 200 แล้วเก็บในตัวแปร Y
30 PRINT X,Y 30 แสดงผลลัพธ์ของตัวแปร X, Y บนจอภาพ
40 IF LC = 1 THEN 40 ถ้าค่าที่อยู่ในตัวแปร LC คือ 1 ให้ไปทำคำสั่งที่ 10
GOTO 10 ELSE ถ้าไม่ใช่ 1 ให้ไปทำ คำสั่งที่ 50 เป็นต้นไป
GOTO 50
50 PRINT “GOOD BYE” 50 แสดง GOOD BYE บนจอภาพ
60 END 70 ให้หยุดทำงาน
จากโปรแกรมเป็นการรับตัวแปรเพิ่ม (LC) เป็นตัวตรวจสอบการหมดข้อมูล โดย การรับค่าตัวแปร X และ LC ด้วย หากค่าของ LC ที่รับเข้าไม่เท่ากับ 1 เป็นการหมดข้อมูล
4.2) วิธีการกำหนดตัวแปรสำหรับนับรอบ (Loop)
อีกวิธีหนึ่งที่ใช้สำหรับควบคุมจำนวนครั้งหรือรอบของการประมวลผล คือ การกำหนดตัวแปรเพื่อใช้นับรอบ ในภาษาคอมพิวเตอร์ต่าง ๆ จะมีคำสั่งที่ใช้นับรอบ เช่น FOR - NEXT ในภาษาเบสิก เช่น ถ้าต้องการคำนวณค่าของ Y = X + 200 จำนวน 10 รอบ สามารถเขียนโปรแกรมในภาษาเบสิก ดังนี้
คำสั่ง ความหมาย
10 FOR I = 1 TO 10 10 กำหนดตัวแปร I เป็นตัวนับรอบการทำงานโดยเริ่มจาก 1 ถึง 10 (เพิ่มทีละ 1 จนครบ 10)
20 INPUT X 20 รับตัวเลข 1 ค่าทางแป้นพิมพ์ แล้วเก็บไว้ในตัวแปร X
30 Y = X + 200 30 คำนวณค่าตัวแปร Y โดยนำค่าตัวแปร X มาบวกกับ 200
40 PRINT X,Y 40 แสดงผลลัพธ์ค่าตัวแปร X, Y บนหน้าจอ
50 NEXT I 50 ให้กลับไปทำข้อ 10 โดยเพิ่มค่า I อีก 1 ขณะเดียวกันก็ทดสอบว่ายังไม่เกิน 10
ถ้าตัวแปร I มีค่าเกิน 10 ให้ทำข้อ 60
60 PRINT “GOOD BYE” 60 แสดง GOOD BYE บนจอภาพ
70 END 70 ให้หยุดทำงาน
4.2.1) การนับจำนวนของคนหรือสิ่งที่มีคุณสมบัติตรงตามเงื่อนไขการนับจำนวนคน หรือสิ่งต่าง ๆ นั้น จะต้องเริ่มด้วยการกำหนดตัวแปรที่จะใช้นับจำนวนต่าง ๆ ให้เท่ากับศูนย์ก่อน หลังจากนั้นจึงทดสอบตัวแปรนำเข้าว่ามีคุณสมบัติตรงตามที่ต้องการหรือไม่ ถ้าตรงตามที่ต้องการจึงนับเพิ่มทีละ 1 เข้าไปเก็บไว้ในตัวแปรที่กำหนดไว้ แล้วย้อนไปรับข้อมูลหรือตัวแปรใหม่ วิธีการการประมวลผลนี้ มีขั้นตอนที่ไม่สามารถกำหนดให้แน่นอนตายตัวลงไปได้แต่มีหลักกว้าง ๆ ดังที่กล่าวมา
2.2 ตัวอย่างวิธีการประมวลผลและการวิเคราะห์งาน
ตัวอย่างที่ 1 จากตัวอย่างรูปแบบผลลัพธ์ที่ 1 และการกำหนดตัวแปร เมื่อนำมาทำการเขียนวิธีการประมวลผลในการหาคะแนนรวม สามารถเขียนเป็นขั้นตอนได้ดังนี้
รูปแบบของผลลัพธ์ที่ต้องการเฉพาะคะแนนรวมจะได้ดังนี้
รายงานผลการสอบ วิชา 4141502 การเขียนโปรแกรมคอมพิวเตอร์ ปีการศึกษา …………… |
||||
รหัสประจำตัว |
ชื่อนามสกุล |
คะแนนสอบกลางภาค |
คะแนนสอบปลายภาค |
คะแนนรวม |
…………….. …………….. |
……………….. ……………….. |
………….. ………….. |
………….. ………….. |
………….. ………….. |
วิธีการประมวลผล
1. รับค่า SEMESTER ทางแป้นพิมพ์
2. พิมพ์หัวตารางและค่า SEMESTER
3. รับตัวแปร ID, NAME, MID และ FINAL ทีละรายการ
4. ทดสอบค่าของ ID
ถ้า ID ว่างหรือไม่มีข้อมูล ให้ทำข้อ 8
ถ้า ID ไม่ว่างหรือมีข้อมูล ให้ทำข้อ 5
5. คำนวณ TOTAL = MID + FINAL
6. พิมพ์ ID, NAME, MID, FINAL และ TOTAL ทีละรายการ
7. ย้อนกลับไปข้อ 3
8. ให้หยุดทำงาน
ตัวอย่างที่ 2 บริษัทแห่งหนึ่งต้องการคำนวณค่าแรงรายวันของพนักงานจำนวนหนึ่ง โดยพิจารณาว่า ถ้าพนักงานคนใดทำงานเกินกว่า 6 ชั่วโมง ให้นับชั่วโมงที่เกินกว่า 6 ชั่วโมง เป็นชั่วโมง การทำงานนอกเวลา และให้คิดค่าแรงเป็น 2 เท่าของค่าแรงปกติ จงหาจำนวนเงินที่พนักงานแต่ละคนจะได้รับในแต่ละวัน และจำนวนเงินที่บริษัทจะต้องจ่ายทั้งหมดในวันหนึ่ง ๆ
การวิเคราะห์งาน
1. สิ่งที่ต้องการ
จากโจทย์ เราสามารถแยกสิ่งที่เราต้องการได้เป็นข้อ ๆ ดังนี้
1.1 คำนวณจำนวนเงินที่พนักงานแต่ละคนจะได้รับ
1.2 คำนวณเงินทั้งหมดที่บริษัทจะต้องจ่ายในหนึ่งสัปดาห์
2. รูปแบบของผลลัพธ์
จากตัวอย่างนี้ โจทย์บอกมาชัดเจนว่าต้องการอะไรบ้าง ดังนั้นการวิเคราะห์ผลลัพธ์จึงต้องมีรายละเอียดของสิ่งที่ต้องการ และควรคำนึงด้วยว่าต้องมีรายละเอียดอะไรเพิ่มเติมอีกเพื่อให้รายงานนั้นสมบูรณ์ และผู้อื่นเข้าใจได้ง่าย สำหรับรูปแบบผลลัพธ์ของโจทย์ข้อนี้คือ
รายงานการจ่ายค่าแรงงานรายวัน |
||||
เลขประจำตัวพนักงาน |
ชื่อและนามสกุล |
เวลาทำงาน |
ค่าแรง/ชม. |
รายได้ |
…………………. …………………. …………………. |
……………………. ……………………. ……………………. |
………. ………. ………. |
…………. …………. …………. |
……………. ……………. ……………. |
|
|
รวมเงิน |
|
X,XXX,XXX |
3. ข้อมูลที่ต้องนำเข้า
พิจารณาลักษณะของผลลัพธ์ จะเห็นว่า 2 บรรทัดแรกเป็นการพิมพ์คำอธิบาย หัวตาราง ในบรรทัดต่อมาจะเป็นค่าของข้อมูล คือ เลขประจำตัวพนักงาน ชื่อและนามสกุล เวลาทำงาน และค่าแรง/ชม. แถวสุดท้ายคือ รายได้ เป็นค่าที่ได้จากการคำนวณ ดังนั้นข้อมูลที่ต้องการ คือ เลขประจำตัวพนักงาน ชื่อและนามสกุล เวลาทำงาน และค่าแรง/ชม.
ถ้าเลือกใช้วิธีทดสอบข้อมูลสุดท้าย โดยการเพิ่มตัวแปรในการทดสอบ ข้อมูลนำเข้าจะประกอบด้วย เลขประจำตัวพนักงาน ชื่อและนามสกุล เวลาทำงาน ค่าแรง/ชม.และตัวตรวจสอบ
4. ตัวแปรที่ใช้
ชื่อตัวแปร ความหมาย
NO เลขประจำตัวพนักงาน
NAME ชื่อและนามสกุล
HOURS เวลาทำงาน
RATE ค่าแรงต่อชั่วโมง
PAY รายได้
TOTAL รายได้รวมของพนักงานทุกคน
LC ตัวตรวจสอบค่าสุดท้าย
ถ้า LC 1 หมายถึง ยังไม่ใช่ข้อมูลรายการสุดท้าย
ถ้า LC 1 หมายถึง เป็นข้อมูลรายการสุดท้าย
5. วิธีการประมวลผล
5.1 พิมพ์หัวตาราง
5.2 กำหนดค่าเริ่มต้นของ TOTAL = 0
5.3 อ่านข้อมูลซึ่งประกอบไปด้วยค่า NO, NAME, HOURS, RATE, LC
5.4 เปรียบเทียบ HOURS กับ 6
ถ้า HOURS 6 ให้คำนวณ PAY = HOURS*RATE
ถ้า HOURS 6 ให้คำนวณ PAY = 6*RATE + 2*(HOURS-6)*RATE
5.5 คำนวณ TOTAL = TOTAL + PAY
5.6 พิมพ์ผลลัพธ์ NO, NAME, HOURS, RATE,PAY
5.7 เปรียบเทียบ LC กับ 1
ถ้า LC = 1 ไปทำข้อ 5.3
ถ้า LC < > 1 ทำข้อ 5.8
5.8 พิมพ์ค่า TOTAL
5.9 ให้หยุดทำงาน
ตัวอย่างที่ 3 วิเคราะห์งานเพื่อคำนวณเงินค่าหน่วยกิต ภาคเรียนที่ 2/2556 ของมหาวิทยาลัยราชภัฏนครปฐม ซึ่งมีการสอนสองระดับ คือ ปริญญาตรี และระดับปริญญาโท วิธีการคิดค่าหน่วยกิต มีดังนี้ คือ
ถ้าเป็นระดับปริญญาตรี คิดค่าหน่วยกิตละ 200 บาท
ถ้าเป็นระดับปริญญาโท คิดค่าหน่วยกิตละ 250 บาท
ต้องการผลลัพธ์ที่แสดงรายละเอียดเกี่ยวกับ เลขประจำตัวนักศึกษา ระดับที่กำลังศึกษา ชื่อและนามสกุลนักศึกษา จำนวนหน่วยกิตที่ลงทะเบียน และเงินที่นักศึกษาแต่ละคนต้องจ่าย และยอดเงินรวมทั้งหมดที่มหาวิทยาลัยจะได้รับ
การวิเคราะห์งาน
1. สิ่งที่ต้องการ
1.1 คำนวณค่าหน่วยกิตของนักศึกษาแต่ละคนที่จะต้องจ่าย
1.2 คำนวณยอดเงินค่าหน่วยกิตทั้งหมดที่มหาวิทยาลัยจะได้รับ
2. รูปแบบของผลลัพธ์
มหาวิทยาลัยราชภัฏนครปฐม ภาคเรียนที่ 2/2556 |
||||
เลขประจำตัว |
ระดับ |
ชื่อและนามสกุล |
จำนวนหน่วยกิต |
ค่าหน่วยกิต |
.................... .................... .................... |
.................... .................... .................... |
.................... .................... .................... |
.................... .................... .................... |
.................... .................... .................... |
|
|
รวมจำนวนเงิน |
|
XXX,XXX |
3. ข้อมูลที่ต้องนำเข้า
พิจารณาลักษณะของผลลัพธ์จะเห็นว่า 3 บรรทัดแรกเป็นการพิมพ์คำอธิบายหัวตาราง ในบรรทัดต่อมาจะเป็นค่าของข้อมูล คือ เลขประจำตัว ระดับ ชื่อและนามสกุล จำนวน หน่วยกิต และค่าหน่วยกิต แถวสุดท้าย คือ รวมจำนวนเงินเป็นค่าที่ได้จากการคำนวณ ดังนั้น ข้อมูลที่ต้องการ คือ เลขประจำตัว ระดับ ชื่อและนามสกุล และจำนวนหน่วยกิต
ถ้าเลือกใช้วิธีทดสอบข้อมูลสุดท้ายโดยการเลือกตัวแปรที่เป็นข้อมูลนำเข้าใน การทดสอบ ข้อมูลนำเข้าจะประกอบด้วย เลขประจำตัว ระดับ ชื่อและนามสกุล และจำนวน หน่วยกิต
4. ตัวแปรที่ใช้
ชื่อตัวแปร ความหมาย
ID รหัสประจำตัว
LEVEL ระดับการศึกษา ถ้า LEVEL = 1 หมายถึง ปริญญาตรี
ถ้า LEVEL = 2 หมายถึง ปริญญาโท
NAME ชื่อและนามสกุล
CR จำนวนหน่วยกิตที่ลงทะเบียน
MONEY เงินค่าหน่วยกิตที่นักศึกษาแต่ละคนต้องจ่าย
TOTAL ยอดเงินรวมค่าหน่วยกิตที่มหาวิทยาลัยได้รับทั้งหมด
5. วิธีการประมวลผล
5.1 พิมพ์หัวตาราง
5.2 กำหนดค่าเริ่มต้นในการหาเงินรวมค่าหน่วยกิต นั่นคือ TOTAL = 0
5.3 อ่าน ID
5.4 ทดสอบ ID
ถ้า ID ว่างหรือไม่มีข้อมูล ให้ทำข้อ 5.10
ถ้า ID ไม่ว่างหรือมีข้อมูล ให้ทำข้อ 5.5
5.5 อ่านค่า LEVEL, NAME, CR ของนักศึกษาแต่ละคน
5.6 ทดสอบ LEVEL
ถ้า LEVEL 1 ให้คำนวณ MONEY = 200 x CR แล้วทำข้อ 5.7
ถ้า LEVEL 2 ให้คำนวณ MONEY = 250 x CR แล้วทำข้อ 5.7
5.7 พิมพ์ ID, LEVEL, NAME, CR, MONEY
5.8 คำนวณ TOTAL = TOTAL + MONEY
5.9 ย้อนกลับไปทำข้อ 5.3
5.10 พิมพ์ TOTAL
5.11 ให้หยุดทำงาน
2.3 สรุปขั้นตอนของวิธีการประมวลผลในการวิเคราะห์โจทย์
จากตัวอย่างทั้งหมดสรุปได้ว่าวิธีของการวิเคราะห์งานแบ่งได้เป็น 2 กรณี คือ
1.3.1 เมื่อโปรแกรมมีข้อมูลนำเข้า
โปรแกรมประเภทนี้เป็นประเภทที่มีอยู่ทั่วไป กล่าวคือเกือบทั้งหมดของโปรแกรมที่เขียนขึ้นมักเป็นประเภทนี้ ซึ่งจะต้องมีการอ่านข้อมูลเข้าไป และขั้นตอนกว้าง ๆ ของวิธีการสำหรับโปรแกรมประเภทนี้คือ
1) กรณีใช้การทดสอบข้อมูลสุดท้ายแบบที่ 1 (ใช้ค่าเป็นไปไม่ได้มาทดสอบ)
1. พิมพ์หัวตาราง (ถ้ามี)
2. อ่านตัวแปร (Input Variable)
3. เลือกตัวแปรนำเข้าตัวหนึ่งซึ่งมีค่าเป็นไปไม่ได้ แล้วนำมาทดสอบ
ถ้าค่าของตัวแปรนั้นเท่ากับค่าเป็นไปไม่ได้ ให้หยุดทำงาน
ถ้าค่าตัวแปรไม่เท่ากับค่าเป็นไปไม่ได้ ให้ทำข้อ 4
4. คำนวณ
5. พิมพ์ผลลัพธ์
6. ย้อนกลับไปทำข้อ 2
2) กรณีใช้การทดสอบข้อมูลสุดท้ายแบบที่ 2 (เพิ่มตัวแปร)
1. พิมพ์หัวตาราง (ถ้ามี)
2. อ่านตัวแปรของข้อมูลที่ต้องการและตัวแปรสำหรับทดสอบข้อมูลสุดท้าย
3. คำนวณ
4. พิมพ์ผลลัพธ์
5. ทดสอบตัวแปรว่าเป็นข้อมูลชุดสุดท้ายหรือไม่
ถ้าใช่ ให้หยุดทำงาน
ถ้าไม่ใช่ ให้ทำข้อ 2
ถ้าต้องการหายอดรวมทั้งหมดจะต้องใช้เทคนิคการหายอดรวมทั้งหมดเข้าช่วย
3) เทคนิคการหายอดรวมทั้งหมด
จากตัวอย่างที่มีการหายอดรวมทั้งหมด จะเห็นว่าเมื่อต้องการหายอดรวมจะกำหนดให้ค่าของตัวแปรในการหายอดรวม เท่ากับศูนย์ (หรือเท่ากับค่าเริ่มต้น) และจะต้องกำหนดไว้ตั้งแต่ตอนต้นก่อนการอ่านข้อมูล และก่อนที่จะย้อนกลับไปอ่านข้อมูลชุดใหม่จะต้องมีการบวกสะสมเสียก่อน เมื่อทดสอบข้อมูลว่าเป็นชุดสุดท้าย ให้พิมพ์ยอดรวมนั้น ๆ ก่อนจึงหยุดทำงาน
สรุปได้ว่า ลำดับในการวิเคราะห์ที่มีการหายอดรวมทั้งหมดจะเป็นดังนี้ คือ
1. พิมพ์หัวตาราง (ถ้ามี)
2. กำหนดตัวแปรให้มีค่าเท่ากับค่าเริ่มต้นในการบวก (มักจะเท่ากับศูนย์
เช่น SUM = 0) ถ้ามีการหายอมรวมหลาย ๆ ยอด ให้กำหนดตัวแปรตามจำนวนยอดรวมที่ต้องการหา (เช่น SUMN = 0, SUMNDIS = 0 เป็นต้น)
3. อ่านข้อมูลทีละรายการ
4. ทดสอบข้อมูลสุดท้าย
ถ้าใช่ข้อมูลสุดท้าย สั่งพิมพ์ตัวแปรยอดรวมแล้วจึงหยุดทำงาน
ถ้าไม่ใช่ข้อมูลสุดท้าย ให้ทำข้อ 5
5. คำนวณ
6. พิมพ์ผลลัพธ์
7. คำนวณยอดรวมสะสม (เช่น SUM = SUM + X)
8. ย้อนกลับไปทำข้อ 3
1.3.2 เมื่อโปรแกรมไม่มีข้อมูลนำเข้า
ในกรณีที่ตัวเลขที่นำมาประมวลผลมีค่าความห่างของข้อมูลเท่า ๆ กัน เช่น 1, 2, 3, …. การวิเคราะห์โจทย์จะไม่มีข้อมูลนำเข้า วิธีการต่าง ๆ ยังคงคล้ายคลึงกับวิธีการในข้อ 1.3.1 เพียงแต่ไม่ต้องอ่านข้อมูลเข้า ใช้วิธีกำหนดค่าเริ่มต้นแล้ว เพิ่มค่าขึ้นเรื่อย ๆ ซึ่งขั้นตอนจะเป็นดังนี้
1. พิมพ์หัวตาราง (ถ้ามี)
2. กำหนดตัวแปรเริ่มต้นของค่าที่จะประมวลผล
3. คำนวณ
4. เพิ่มค่าตัวแปร
5. ทดสอบว่าค่าที่เพิ่มเกินกว่าที่ต้องการหรือยัง
ถ้ายังไม่เกิน ให้ทำข้อ 3
ถ้าเกินค่ากำหนด ให้ทำข้อ 6
6. พิมพ์ผลลัพธ์
7. หยุดทำงาน