การเขียนโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่ง จนกระทั่งได้ผลลัพธ์ออกมาตามที่ต้องการนั้นคงไม่ใช่เรื่องยาก หากผู้เขียนโปรแกรมมีแนวคิดในการเขียนโปรแกรมที่ดี และทำการเขียนโปรแกรมตามแนวคิดที่ได้วางไว้ แต่สำหรับผู้เขียนโปรแกรมมือใหม่ อาจจะยังไม่เข้าใจหลักการในการเขียนโปรแกรมว่าจะต้องเริ่มต้นเขียนโปรแกรมอย่างไร ทำให้คิดว่าการเขียนโปรแกรมเป็นเรื่องยาก ดังนั้น ในใบความรู้นี้จะกล่าวถึงแนวคิดในการเขียนโปรแกรมเพื่อเป็นแนวทางสำหรับผู้เขียนโปรแกรมได้เข้าใจหลักการในการเขียนโปรแกรมมากขึ้น
ขั้นตอนการพัฒนาโปรแกรม
ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรมครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้ แต่หากผู้เขียนโปรแกรมมีความชำนาญเพียงพอ อาจจะข้ามขั้นตอนบางขั้นตอนได้ ในการอธิบายนี้จะขอยกตัวอย่างโจทย์ 1 ตัวอย่าง เพื่อให้ง่ายต่อการทำความเข้าใจในแต่ละขั้นตอน
1. วิเคราะห์ปัญหา (Analysis)
ขั้นตอนนี้ถือว่าเป็นขั้นตอนที่สำคัญที่สุด ผู้เขียนโปรแกรมต้องวิเคราะห์ปัญหาให้ออกว่าจะต้องทำการเขียนโปรแกรมเพื่อแก้ปัญหาอะไร เพราะหากวิเคราะห์หรือมองปัญหาผิดแล้ว ก็จะทำให้เขียนโปรแกรมได้ผลลัพธ์ออกมาผิดไปจากสิ่งที่ต้องการด้วย และนอกจากจะวิเคราะห์ว่าปัญหาคืออะไรแล้ว จำเป็นอย่างยิ่งที่จะต้องวิเคราะห์ด้วยว่าข้อมูลที่จะนำเข้ามาใช้ในโปรแกรมมีอะไรบ้าง
จากโจทย์ข้างต้น สามารถแตกปัญหาได้เป็น 2 ส่วน คือ
• ต้องรับข้อมูลเลขจำนวนเต็ม 2 ตัวเข้ามาในโปรแกรม
วิเคราะห์ กำหนดให้ x เก็บเลขจำนวนเต็มตัวที่ 1
กำหนดให้ y เก็บเลขจำนวนเต็มตัวที่ 2
• เลขจำนวนเต็มตัวที่ 1 + เลขจำนวนเต็มตัวที่ 2 มีค่าเท่ากับเท่าไร
วิเคราะห์ กำหนดให้ sum เก็บค่าผลบวกของเลขจำนวนเต็มทั้ง 2 จำนวน
นั่นคือ sum = x + y
2. วางแผนและออกแบบ (Planning and Design)
การวางแผน คือ การนำปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 มาวางแผนอย่างเป็นขั้นตอนว่าจะต้องเขียนโปรแกรมเพื่อแก้ปัญหาอย่างไร การวางแผนอย่างเป็นขั้นตอนนี้ เรียกว่า อัลกอริทึม (Algorithm) ซึ่งอัลกอริทึมแบ่งออกเป็น 2 รูปแบบ คือ
• ซูโดโค้ด (Pseudo code) คือ การเขียนอัลกอริทึม โดยใช้ประโยคภาษาอังกฤษที่สื่อความหมายง่าย ๆ สามารถอ่านแล้วเข้าใจได้โดยทันที
รูปที่ 1 อัลกอริทึมแบบซูโดโค้ด
จากโจทย์ สามารถเขียนซูโดโค้ดได้ดังรูป จะเห็นว่าเมื่ออ่านซูโดโค้ดแล้วสามารถเข้าใจได้ทันทีว่าขั้นตอนการเขียนโปรแกรมเป็นอย่างไร
• โฟลวชาร์ต (Flowchart) คือ การเขียนอัลกอริทึมโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมาย
จากโจทย์ สามารถเขียนโฟลวชาร์ตได้ดังรูป
รูปที่ 2 อัลกอริทึมแบบโฟลวชาร์ต
3. การเขียนโปรแกรม (Coding)
เป็นการนำอัลกอริทึมจากขั้นตอนที่ 2 มาเขียนโปรแกรมให้ถูกต้องตามหลักไวยากรณ์ (Syntax) ของภาษาซี จากโจทย์สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่างที่ 1 แสดงซอร์สโค้ด หากนำโปรแกรม (source code) มาพิจารณา จะพบว่า การเขียนโปรแกรมมีขั้นตอนเป็นไปตามขั้นตอนของอัลกอริทึมที่ได้วิเคราะห์ขึ้นทุกประการ ดังนี้
รูปที่ 3 แสดงการเปรียบเทียบขั้นตอนการทำงานที่เหมือนกันระหว่างซอร์สโค้ดและอัลกอริทึม
4. ทดสอบโปรแกรม (Testing)
เป็นการนำผลลัพธ์จากขั้นตอนที่ 3 มาทำการรัน (run) โดยทดสอบป้อนค่า x และ y เข้าไปในโปรแกรม และตรวจสอบผลลัพธ์ที่ได้ว่าถูกต้องหรือไม่ ให้ทดสอบหลายๆ ครั้ง หากผลลัพธ์ที่ได้ถูกต้อง แสดงว่าโปรแกรมที่เขียนขึ้นถูกต้องแล้ว แต่หากผลลัพธ์ถูกบ้างผิดบ้าง หรือผิดทุกครั้ง แสดงว่าโปรแกรมที่เขียนขึ้นผิดพลาด ผู้เขียนโปรแกรมต้องกลับไปตรวจสอบ และแก้ไขโปรแกรมใหม่อีกครั้ง
จากโจทย์ สามารถทดสอบโปรแกรมได้ดังนี้
ผลลัพธ์ของโปรแกรม ลองทดสอบโปรแกรมหลาย ๆ ครั้ง จนกระทั่งมั่นใจว่าผลลัพธ์ที่ได้ถูกต้อง
5. จัดทำคู่มือ (Documentation)
จุดประสงค์ที่สำคัญของการทำคู่มือ คือ ช่วยให้ผู้อื่นศึกษาซอร์สโค้ด (source code) ของโปรแกรมได้ง่ายขึ้น ซึ่งจะเป็นประโยชน์มากสำหรับการพัฒนาโปรแกรมในอนาคต เพราะจะช่วยให้ศึกษาซอร์สโค้ดได้ง่ายและรวดเร็วขึ้น การจัดทำคู่มือไม่มีกฎเกณฑ์ระบุไว้แน่นอน แต่ผู้เขียนโปรแกรมควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด
จากโจทย์ สามารถจัดทำคู่มือได้ดังนี้ (การจัดทำคู่มือที่จะแสดงต่อไปนี้ เป็นเพียงตัวอย่าง นักเรียนสามารถจัดทำคู่มือออกมาในลักษณะอื่น ๆ ได้ตามที่ต้องการ แต่สิ่งสำคัญ คือ ควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด)
รูปที่ 4 แสดงการจัดทำคู่มือประกอบโปรแกรม
การเขียนอัลกอริทึมแบบโฟลวชาร์ต
โฟลวชาร์ต (Flowchart) คือ การแสดงขั้นตอนการทำงานโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมาย รูปภาพแต่ละรูปจะมีความหมายเฉพาะตัว และใช้ลูกศรกำหนดทิศทางการทานในแต่ละขั้นตอน
ตารางที่ 1 สัญลักษณ์รูปภาพของโฟลวชาร์ต
จากตารางที่ 1 เป็นสัญลักษณ์รูปภาพของโฟลวชาร์ตเพียงบางส่วนที่มีการใช้งานบ่อย ๆ เท่านั้น ซึ่งสัญลักษณ์รูปภาพของโฟลวชาร์ตยังมีอีกมาก
ตัวอย่างที่ 2 จงเขียนโฟลวชาร์ตแสดงขั้นตอนการหาพื้นที่ของรูปสี่เหลี่ยมคางหมู
วิเคราะห์ปัญหา
1. ปัญหา คือ ต้องทำการคำนวณหาพื้นที่ของรูปสี่เหลี่ยมคางหมู จากสูตร พื้นที่สี่เหลี่ยมคางหมู = ½ x ผลบวกของด้านคู่ขนาน x สูง
2. ตัวแปรที่ใช้ คือ w1 ใช้เก็บความยาวของด้านคู่ขนานด้านที่ 1 ของรูปสี่เหลี่ยมคางหมู w2 ใช้เก็บความยาวของด้านคู่ขนานด้านที่ 2 ของรูปสี่เหลี่ยมคางหมู h ใช้เก็บความสูงของรูปสี่เหลี่ยมคางหมู Area ใช้เก็บพื้นที่ของรูปสี่เหลี่ยมคางหมู
3. ข้อมูลนำเข้า คือ ค่าของ w1, w2, และ h
4. ผลลัพธ์ คือ คำนวณพื้นที่ของรูปสี่เหลี่ยมคางหมู จากสูตร
Area = ½ x (w1 + w2) x h
ขั้นตอนการทำงาน
1. รับค่า w1, w2, h เข้ามาในโปรแกรม
2. คำนวณพื้นที่ของรูปสี่เหลี่ยมคางหมู
จากสูตร Area = ½ x (w1 + w2) x h
รูปที่ 5 โฟลวชาร์ตแสดงการหาพื้นที่ของรูปสี่เหลี่ยมคางหมู
ตัวอย่างที่ 3 จงคำนวณหาเกรดวิชาคอมพิวเตอร์ของนักเรียนชั้นมัธยมศึกษาปีที่ 3 จากแฟ้มข้อมูลคะแนน พร้อมทั้งแสดงเกรดของนักเรียนแต่ละคน โดยเกณฑ์ที่ใช้ในการตัดเกรด คือ
ตัวอย่างแฟ้มข้อมูลคะแนน คือ
วิเคราะห์ปัญหา
1. ปัญหา คือ ต้องทำการคำนวณหาเกรดวิชาคอมพิวเตอร์ของนักเรียนชั้นมัธยมศึกษาปีที่ 3 จากช่วงคะแนนที่กำหนด เช่น นักเรียนได้ 77 คะแนน จะได้เกรด B เป็นต้น
2. ตัวแปรที่ใช้ คือ points ใช้เก็บคะแนนของนักเรียนชั้นมัธยมศึกษาปีที่ 3 grade ใช้เก็บเกรดของนักเรียนชั้นมัธยมศึกษาปีที่ 3
3. ข้อมูลนำเข้า คือ ค่าคะแนนของนักเรียน (ค่า points) โดยต้องนำเข้ามาจากแฟ้มข้อมูลคะแนน ซึ่งข้อมูลน้ำเข้านี้แตกต่างจากตัวอย่างที่ 1 เนื่องจากตัวอย่างที่ 1 จะรับค่าข้อมูลนำเข้ามาจากผู้ใช้งานโปรแกรมโดยตรง (ผู้ใช้ทำการป้อนข้อมูลเข้ามา) แต่สำหรับตัวอย่างนี้เป็นการนำข้อมูลคะแนนเข้ามาจากแฟ้มข้อมูล คือ มีข้อมูลเป็นจำนวนที่แน่นอนเก็บอยู่ในแฟ้มข้อมูลแล้ว เพียงแต่ดึงข้อมูลเหล่านี้ออกมาใช้ อย่างไรก็ตาม การดึงข้อมูลคะแนนออกมาใช้จะต้องคำนึงด้วยว่า ได้ดึงข้อมูลจากแฟ้มออกมาจนกระทั่งจบแฟ้มข้อมูลแล้วหรือยัง กล่าวง่าย ๆ คือ ต้องพิจารณาด้วยว่า ทำการอ่านคะแนนของนักเรียนครบทุกคนแล้วหรือยัง
• หากอ่านคะแนนของนักเรียนยังไม่ครบทุกคน (ยังไม่จบแฟ้มข้อมูล) ให้อ่านข้อมูลต่อไป
• หากอ่านคะแนนของนักเรียนครบทุกคนแล้ว (จบแฟ้มข้อมูลแล้ว) ให้หยุดการทำงาน
เนื่องจากข้อมูลของนักเรียนทุกคนได้รับการคำนวณเกรดหมดแล้ว
การพิจารณาว่าจบแฟ้มข้อมูลหรือยัง ให้ใช้ EOF (End Of File) ในการพิจารณาดังนี้
IF EOF THEN
STOP
ELSE
.....
END IF
4. ผลลัพธ์ คือ เกรดของนักเรียน ซึ่งได้จากการนำคะแนนของนักเรียนคนนั้นๆมาพิจารณาตามเกณฑ์ที่กำหนด
ตัวอย่างผลลัพธ์
ขั้นตอนการทำงาน
1. อ่านชื่อนักเรียนและคะแนนของนักเรียนจากแฟ้มข้อมูล แล้วทำการตรวจสอบว่าจบไฟล์หรือยัง
• หากจบไฟล์ แสดงว่าไม่มีข้อมูลคะแนนของนักเรียนให้อ่านแล้ว ให้หยุดการทำงาน
• หากยังไม่จบไฟล์ สามารถไปทำขั้นตอนต่อไปได้
2. ตรวจสอบค่าคะแนนของนักเรียนว่าอยู่ในช่วงใด และได้เกรดเท่าไร
3. แสดงชื่อและเกรดของนักเรียนแต่ละคน
4. ทำรายการของนักเรียนคนต่อไป โดยวนกลับไปทำขั้นตอนที่ 1 ใหม่อีกครั้ง
รูปที่ 6 โฟลวชาร์ตแสดงการหาเกรดวิชาคอมพิวเตอร์ของนักเรียนชั้นมัธยมศึกษาปีที่ 3
ตัวอย่างที่ 4 จงเขียนโฟลวชาร์ตแสดงการหาผลบวกของเลขคู่ที่มีค่าอยู่ในช่วง 1 ถึง 100
วิเคราะห์ปัญหา
1.ปัญหา คือ ต้องทำการคำนวณหาผลบวกของเลขคู่ที่มีค่าอยู่ในช่วง 1 ถึง 100
2 + 4 + 6 + 8 + 10 + 12 + 14 +16 + 18 + ... = ?
เลขคู่ตัวแรกที่มีค่าอยู่ในช่วง 1 ถึง 100 คือ 2 และตัวถัดไปคือ 4, 6, 8, ...
เริ่มต้น กำหนดตัวบวก = 0 และผลบวก = 0
2.ตัวแปรที่ใช้ คือ
count ใช้เก็บค่าตัวบวก
sum ใช้เก็บผลบวก
เพราะฉะนั้น หากนำตัวแปรไปใช้กับปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 จะได้สูตร 2 สูตร ดังนี้
นั่นคือ ค่าของตัวบวกตัวใหม่ จะได้มาจากการนำค่าของตัวบวกเดิมมาบวกด้วย 2 (นำค่าของตัวแปร count มาบวก 2 แล้วเก็บผลลัพธ์ที่ได้ลงตัวแปร count เหมือนเดิม) ส่วนค่าของผลบวกใหม่ ก็จะได้มาจากการนำค่าของผลบวกเดิมมาบวกด้วยค่าตัวบวก (นำค่าของตัวแปร sum มาบวกกับค่าของตัวแปร count แล้วเก็บผลลัพธ์ที่ได้ลงตัวแปร sum เหมือนเดิม)
3.ข้อมูลนำเข้า ไม่มี
4.ผลลัพธ์ คือ ผลบวกของเลขคู่ทั้งหมดที่อยู่ในช่วง 1 ถึง 100
ขั้นตอนการทำงาน
1.กำหนดค่าเริ่มต้นให้กับตัวแปร count และ sum คือ count = 0, sum = 0
2.เพิ่มค่าตัวบวกเพื่อเป็นตัวบวกตัวถัดไป คือ count = count + 2
3.ตรวจสอบตัวแปร count ว่ามีค่ามากกว่า 100 หรือไม่
• หากมากกว่า 100 ให้จบการทำงาน
• หากไม่มากกว่า 100 ให้ทำขั้นตอนต่อไป
4.ทำการคำนวณหาผลบวกจากสูตร sum = sum + count แล้วกลับไปทำขั้นตอนที่ 2 ใหม่อีกครั้ง
รูปที่ 7 โฟลวชาร์ตแสดงการหาผลบวกของเลขคู่ที่มีค่าอยู่ในช่วง 1 ถึง 100
ตัวอย่างที่ 5 จงเขียนโฟลวชาร์ตแสดงการแปลงค่าจากคริสต์ศักราช (ค.ศ.) ไปเป็นพุทธศักราช (พ.ศ.) พร้อมทั้งแสดงผลลัพธ์ โดยให้แยกส่วนของการรับค่าข้อมูล ค.ศ. ออกจากส่วนของการแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ. (แนะนำ : ให้เขียนโฟลวชาร์ตแยกเป็นการทำงานของโปรแกรมย่อยที่เรียกว่า subprogram)
วิเคราะห์ปัญหา
1.ปัญหา คือ ต้องทำการแปลงค่าข้อมูลจาก ค.ศ. ไปเป็น พ.ศ. จากสูตร
พ.ศ. = ค.ศ. + 543
2.ตัวแปรที่ใช้ คือ
BE ใช้เก็บค่าปี พ.ศ.
CE ใช้เก็บค่าปี ค.ศ.
3.ข้อมูลนำเข้า คือ ค่าปี ค.ศ. โดยรับค่ามาเก็บไว้ในตัวแปร CE
4.ผลลัพธ์ คือ ค่าปี พ.ศ. ซึ่งได้จากการแปลงค่า ปี ค.ศ. โดยใช้สูตร
BE = CE + 543
หมายเหตุ โจทย์สั่งให้แยกส่วนของการรับค่าข้อมูล ค.ศ. ออกจากส่วนของการแปลงค่า ค.ศ. ไปเป็น พ.ศ. ดังนั้น ในที่นี้จะกำหนดให้การรับค่าข้อมูล ค.ศ. เป็นส่วนของโปรแกรมหลัก และกำหนดให้ส่วนของการแปลงข้อมูลจาก ค.ศ. ไปเป็น พ.ศ. เป็นส่วนของโปรแกรมย่อย หรือ subprogram
เริ่มต้นการทำงานจากส่วนของโปรแกรมหลักทำการรับค่าข้อมูล ค.ศ. เข้ามา จากนั้นโปรแกรมหลักก็จะไปเรียกส่วนของโปรแกรมย่อยขึ้นมาทำงาน เพื่อแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ.
ขั้นตอนการทำงาน
1.รับค่า CE เข้ามาในโปรแกรม
2.ทำการเรียกโปรแกรมย่อยขึ้นมาทำงาน
3.โปรแกรมย่อยทำการแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ. โดยใช้สูตร BE = CE + 543
4.กลับเข้าสู่การทำงานของโปรแกรมหลักอีกครั้ง โดยโปรแกรมหลักจะแสดงผลลัพธ์ที่โปรแกรมย่อยประมวลผลได้
รูปที่ 8 โฟลวชาร์ตแสดงการแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ.
โดยอาศัยหลักการทำงานของโปรแกรมหลักร่วมกับการทำงานของโปรแกรมย่อย
รูปที่ 3 แสดงการเปรียบเทียบขั้นตอนการทำงานที่เหมือนกันระหว่างซอร์สโค้ดและอัลกอริทึม
4. ทดสอบโปรแกรม (Testing)
เป็นการนำผลลัพธ์จากขั้นตอนที่ 3 มาทำการรัน (run) โดยทดสอบป้อนค่า x และ y เข้าไปในโปรแกรม และตรวจสอบผลลัพธ์ที่ได้ว่าถูกต้องหรือไม่ ให้ทดสอบหลายๆ ครั้ง หากผลลัพธ์ที่ได้ถูกต้อง แสดงว่าโปรแกรมที่เขียนขึ้นถูกต้องแล้ว แต่หากผลลัพธ์ถูกบ้างผิดบ้าง หรือผิดทุกครั้ง แสดงว่าโปรแกรมที่เขียนขึ้นผิดพลาด ผู้เขียนโปรแกรมต้องกลับไปตรวจสอบ และแก้ไขโปรแกรมใหม่อีกครั้ง
จากโจทย์ สามารถทดสอบโปรแกรมได้ดังนี้
ผลลัพธ์ของโปรแกรม ลองทดสอบโปรแกรมหลาย ๆ ครั้ง จนกระทั่งมั่นใจว่าผลลัพธ์ที่ได้ถูกต้อง
5. จัดทำคู่มือ (Documentation)
จุดประสงค์ที่สำคัญของการทำคู่มือ คือ ช่วยให้ผู้อื่นศึกษาซอร์สโค้ด (source code) ของโปรแกรมได้ง่ายขึ้น ซึ่งจะเป็นประโยชน์มากสำหรับการพัฒนาโปรแกรมในอนาคต เพราะจะช่วยให้ศึกษาซอร์สโค้ดได้ง่ายและรวดเร็วขึ้น การจัดทำคู่มือไม่มีกฎเกณฑ์ระบุไว้แน่นอน แต่ผู้เขียนโปรแกรมควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด
จากโจทย์ สามารถจัดทำคู่มือได้ดังนี้ (การจัดทำคู่มือที่จะแสดงต่อไปนี้ เป็นเพียงตัวอย่าง นักเรียนสามารถจัดทำคู่มือออกมาในลักษณะอื่น ๆ ได้ตามที่ต้องการ แต่สิ่งสำคัญ คือ ควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด)
รูปที่ 4 แสดงการจัดทำคู่มือประกอบโปรแกรม
การเขียนอัลกอริทึมแบบโฟลวชาร์ต
โฟลวชาร์ต (Flowchart) คือ การแสดงขั้นตอนการทำงานโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมาย รูปภาพแต่ละรูปจะมีความหมายเฉพาะตัว และใช้ลูกศรกำหนดทิศทางการทานในแต่ละขั้นตอน
ตารางที่ 1 สัญลักษณ์รูปภาพของโฟลวชาร์ต
จากตารางที่ 1 เป็นสัญลักษณ์รูปภาพของโฟลวชาร์ตเพียงบางส่วนที่มีการใช้งานบ่อย ๆ เท่านั้น ซึ่งสัญลักษณ์รูปภาพของโฟลวชาร์ตยังมีอีกมาก
ตัวอย่างที่ 2 จงเขียนโฟลวชาร์ตแสดงขั้นตอนการหาพื้นที่ของรูปสี่เหลี่ยมคางหมู
วิเคราะห์ปัญหา
1. ปัญหา คือ ต้องทำการคำนวณหาพื้นที่ของรูปสี่เหลี่ยมคางหมู จากสูตร พื้นที่สี่เหลี่ยมคางหมู = ½ x ผลบวกของด้านคู่ขนาน x สูง
2. ตัวแปรที่ใช้ คือ w1 ใช้เก็บความยาวของด้านคู่ขนานด้านที่ 1 ของรูปสี่เหลี่ยมคางหมู w2 ใช้เก็บความยาวของด้านคู่ขนานด้านที่ 2 ของรูปสี่เหลี่ยมคางหมู h ใช้เก็บความสูงของรูปสี่เหลี่ยมคางหมู Area ใช้เก็บพื้นที่ของรูปสี่เหลี่ยมคางหมู
3. ข้อมูลนำเข้า คือ ค่าของ w1, w2, และ h
4. ผลลัพธ์ คือ คำนวณพื้นที่ของรูปสี่เหลี่ยมคางหมู จากสูตร
Area = ½ x (w1 + w2) x h
ขั้นตอนการทำงาน
1. รับค่า w1, w2, h เข้ามาในโปรแกรม
2. คำนวณพื้นที่ของรูปสี่เหลี่ยมคางหมู
จากสูตร Area = ½ x (w1 + w2) x h
รูปที่ 5 โฟลวชาร์ตแสดงการหาพื้นที่ของรูปสี่เหลี่ยมคางหมู
ตัวอย่างที่ 3 จงคำนวณหาเกรดวิชาคอมพิวเตอร์ของนักเรียนชั้นมัธยมศึกษาปีที่ 3 จากแฟ้มข้อมูลคะแนน พร้อมทั้งแสดงเกรดของนักเรียนแต่ละคน โดยเกณฑ์ที่ใช้ในการตัดเกรด คือ
คะแนน
|
เกรด
|
ตั้งแต่ 80 ขึ้นไป
|
A
|
70 ถึง 79
|
B
|
60 ถึง 69
|
C
|
50 ถึง 59
|
D
|
น้อยกว่า 50
|
F
|
ชื่อ
|
คะแนน
|
สมพร
|
70
|
สมชัย
|
85
|
สมศักดิ์
|
45
|
สมชาย
|
73
|
สมศรี
|
66
|
1. ปัญหา คือ ต้องทำการคำนวณหาเกรดวิชาคอมพิวเตอร์ของนักเรียนชั้นมัธยมศึกษาปีที่ 3 จากช่วงคะแนนที่กำหนด เช่น นักเรียนได้ 77 คะแนน จะได้เกรด B เป็นต้น
2. ตัวแปรที่ใช้ คือ points ใช้เก็บคะแนนของนักเรียนชั้นมัธยมศึกษาปีที่ 3 grade ใช้เก็บเกรดของนักเรียนชั้นมัธยมศึกษาปีที่ 3
3. ข้อมูลนำเข้า คือ ค่าคะแนนของนักเรียน (ค่า points) โดยต้องนำเข้ามาจากแฟ้มข้อมูลคะแนน ซึ่งข้อมูลน้ำเข้านี้แตกต่างจากตัวอย่างที่ 1 เนื่องจากตัวอย่างที่ 1 จะรับค่าข้อมูลนำเข้ามาจากผู้ใช้งานโปรแกรมโดยตรง (ผู้ใช้ทำการป้อนข้อมูลเข้ามา) แต่สำหรับตัวอย่างนี้เป็นการนำข้อมูลคะแนนเข้ามาจากแฟ้มข้อมูล คือ มีข้อมูลเป็นจำนวนที่แน่นอนเก็บอยู่ในแฟ้มข้อมูลแล้ว เพียงแต่ดึงข้อมูลเหล่านี้ออกมาใช้ อย่างไรก็ตาม การดึงข้อมูลคะแนนออกมาใช้จะต้องคำนึงด้วยว่า ได้ดึงข้อมูลจากแฟ้มออกมาจนกระทั่งจบแฟ้มข้อมูลแล้วหรือยัง กล่าวง่าย ๆ คือ ต้องพิจารณาด้วยว่า ทำการอ่านคะแนนของนักเรียนครบทุกคนแล้วหรือยัง
• หากอ่านคะแนนของนักเรียนยังไม่ครบทุกคน (ยังไม่จบแฟ้มข้อมูล) ให้อ่านข้อมูลต่อไป
• หากอ่านคะแนนของนักเรียนครบทุกคนแล้ว (จบแฟ้มข้อมูลแล้ว) ให้หยุดการทำงาน
เนื่องจากข้อมูลของนักเรียนทุกคนได้รับการคำนวณเกรดหมดแล้ว
การพิจารณาว่าจบแฟ้มข้อมูลหรือยัง ให้ใช้ EOF (End Of File) ในการพิจารณาดังนี้
IF EOF THEN
STOP
ELSE
.....
END IF
4. ผลลัพธ์ คือ เกรดของนักเรียน ซึ่งได้จากการนำคะแนนของนักเรียนคนนั้นๆมาพิจารณาตามเกณฑ์ที่กำหนด
ตัวอย่างผลลัพธ์
ชื่อ
|
เกรด
|
สมพร
|
B
|
สมชัย
|
A
|
สมศักดิ์
|
F
|
สมชาย
|
B
|
สมศรี
|
C
|
1. อ่านชื่อนักเรียนและคะแนนของนักเรียนจากแฟ้มข้อมูล แล้วทำการตรวจสอบว่าจบไฟล์หรือยัง
• หากจบไฟล์ แสดงว่าไม่มีข้อมูลคะแนนของนักเรียนให้อ่านแล้ว ให้หยุดการทำงาน
• หากยังไม่จบไฟล์ สามารถไปทำขั้นตอนต่อไปได้
2. ตรวจสอบค่าคะแนนของนักเรียนว่าอยู่ในช่วงใด และได้เกรดเท่าไร
3. แสดงชื่อและเกรดของนักเรียนแต่ละคน
4. ทำรายการของนักเรียนคนต่อไป โดยวนกลับไปทำขั้นตอนที่ 1 ใหม่อีกครั้ง
รูปที่ 6 โฟลวชาร์ตแสดงการหาเกรดวิชาคอมพิวเตอร์ของนักเรียนชั้นมัธยมศึกษาปีที่ 3
ตัวอย่างที่ 4 จงเขียนโฟลวชาร์ตแสดงการหาผลบวกของเลขคู่ที่มีค่าอยู่ในช่วง 1 ถึง 100
วิเคราะห์ปัญหา
1.ปัญหา คือ ต้องทำการคำนวณหาผลบวกของเลขคู่ที่มีค่าอยู่ในช่วง 1 ถึง 100
2 + 4 + 6 + 8 + 10 + 12 + 14 +16 + 18 + ... = ?
เลขคู่ตัวแรกที่มีค่าอยู่ในช่วง 1 ถึง 100 คือ 2 และตัวถัดไปคือ 4, 6, 8, ...
เริ่มต้น กำหนดตัวบวก = 0 และผลบวก = 0
รอบที่
|
ค่าตัวบวก
|
ผลบวก
|
1
|
ตัวบวก = ตัวบวกเดิม + 2
= 0 + 2
= 2
|
ผลบวก = ผลบวกเดิม + ตัวบวก
= 0 + 2
= 2
|
2
|
ตัวบวก = ตัวบวกเดิม + 2
= 2 + 2
= 4
|
ผลบวก = ผลบวกเดิม + ตัวบวก
= 2 + 4
= 6
|
3
|
ตัวบวก = ตัวบวกเดิม + 2
= 4 + 2
= 6
|
ผลบวก = ผลบวกเดิม + ตัวบวก
= 6 + 6
= 12
|
4
|
ตัวบวก = ตัวบวกเดิม + 2
= 6 + 2
= 8
|
ผลบวก = ผลบวกเดิม + ตัวบวก
= 12 + 8
= 20
|
count ใช้เก็บค่าตัวบวก
sum ใช้เก็บผลบวก
เพราะฉะนั้น หากนำตัวแปรไปใช้กับปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 จะได้สูตร 2 สูตร ดังนี้
นั่นคือ ค่าของตัวบวกตัวใหม่ จะได้มาจากการนำค่าของตัวบวกเดิมมาบวกด้วย 2 (นำค่าของตัวแปร count มาบวก 2 แล้วเก็บผลลัพธ์ที่ได้ลงตัวแปร count เหมือนเดิม) ส่วนค่าของผลบวกใหม่ ก็จะได้มาจากการนำค่าของผลบวกเดิมมาบวกด้วยค่าตัวบวก (นำค่าของตัวแปร sum มาบวกกับค่าของตัวแปร count แล้วเก็บผลลัพธ์ที่ได้ลงตัวแปร sum เหมือนเดิม)
3.ข้อมูลนำเข้า ไม่มี
4.ผลลัพธ์ คือ ผลบวกของเลขคู่ทั้งหมดที่อยู่ในช่วง 1 ถึง 100
ขั้นตอนการทำงาน
1.กำหนดค่าเริ่มต้นให้กับตัวแปร count และ sum คือ count = 0, sum = 0
2.เพิ่มค่าตัวบวกเพื่อเป็นตัวบวกตัวถัดไป คือ count = count + 2
3.ตรวจสอบตัวแปร count ว่ามีค่ามากกว่า 100 หรือไม่
• หากมากกว่า 100 ให้จบการทำงาน
• หากไม่มากกว่า 100 ให้ทำขั้นตอนต่อไป
4.ทำการคำนวณหาผลบวกจากสูตร sum = sum + count แล้วกลับไปทำขั้นตอนที่ 2 ใหม่อีกครั้ง
รูปที่ 7 โฟลวชาร์ตแสดงการหาผลบวกของเลขคู่ที่มีค่าอยู่ในช่วง 1 ถึง 100
ตัวอย่างที่ 5 จงเขียนโฟลวชาร์ตแสดงการแปลงค่าจากคริสต์ศักราช (ค.ศ.) ไปเป็นพุทธศักราช (พ.ศ.) พร้อมทั้งแสดงผลลัพธ์ โดยให้แยกส่วนของการรับค่าข้อมูล ค.ศ. ออกจากส่วนของการแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ. (แนะนำ : ให้เขียนโฟลวชาร์ตแยกเป็นการทำงานของโปรแกรมย่อยที่เรียกว่า subprogram)
วิเคราะห์ปัญหา
1.ปัญหา คือ ต้องทำการแปลงค่าข้อมูลจาก ค.ศ. ไปเป็น พ.ศ. จากสูตร
พ.ศ. = ค.ศ. + 543
2.ตัวแปรที่ใช้ คือ
BE ใช้เก็บค่าปี พ.ศ.
CE ใช้เก็บค่าปี ค.ศ.
3.ข้อมูลนำเข้า คือ ค่าปี ค.ศ. โดยรับค่ามาเก็บไว้ในตัวแปร CE
4.ผลลัพธ์ คือ ค่าปี พ.ศ. ซึ่งได้จากการแปลงค่า ปี ค.ศ. โดยใช้สูตร
BE = CE + 543
หมายเหตุ โจทย์สั่งให้แยกส่วนของการรับค่าข้อมูล ค.ศ. ออกจากส่วนของการแปลงค่า ค.ศ. ไปเป็น พ.ศ. ดังนั้น ในที่นี้จะกำหนดให้การรับค่าข้อมูล ค.ศ. เป็นส่วนของโปรแกรมหลัก และกำหนดให้ส่วนของการแปลงข้อมูลจาก ค.ศ. ไปเป็น พ.ศ. เป็นส่วนของโปรแกรมย่อย หรือ subprogram
เริ่มต้นการทำงานจากส่วนของโปรแกรมหลักทำการรับค่าข้อมูล ค.ศ. เข้ามา จากนั้นโปรแกรมหลักก็จะไปเรียกส่วนของโปรแกรมย่อยขึ้นมาทำงาน เพื่อแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ.
ขั้นตอนการทำงาน
1.รับค่า CE เข้ามาในโปรแกรม
2.ทำการเรียกโปรแกรมย่อยขึ้นมาทำงาน
3.โปรแกรมย่อยทำการแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ. โดยใช้สูตร BE = CE + 543
4.กลับเข้าสู่การทำงานของโปรแกรมหลักอีกครั้ง โดยโปรแกรมหลักจะแสดงผลลัพธ์ที่โปรแกรมย่อยประมวลผลได้
รูปที่ 8 โฟลวชาร์ตแสดงการแปลงค่าจาก ค.ศ. ไปเป็น พ.ศ.
โดยอาศัยหลักการทำงานของโปรแกรมหลักร่วมกับการทำงานของโปรแกรมย่อย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น