ใบความรู้ ที่ 1 หลักการเขียนโปรแกรม
DESCRIPTION
TRANSCRIPT
9
ใบงานที่ 1
หลักการเขียนโปรแกรมเบ้ืองต้น ขั้นตอนการเขียนโปรแกรม
1. การวิเคราะห์ปัญหา
ขั้นตอนการวิเคราะห์ปัญหา จ าเป็นต้องอ่านโจทย์อย่างระมัดระวัง โดยวิเคราะห์และตี
โจทย์ให้แตกเพื่อให้เข้าใจถึงแก่นแท้ของปัญหาให้จงได้ เพื่อให้ได้มาซึ่งความต้องการที่แท้จริง ถ้าหากไม่
สามารถตอบโจทย์ได้หรือตีความผิดพลาดไปก็ย่อมส่งผลต่อเนื่องกันเป็นทอดๆ ท าให้โปรแกรมที่เขียนขึ้นไม่
ตรงกับความต้องการในที่สุด ส าหรับขั้นตอนการวิเคราะห์ปัญหาน้ันจะมีการแบ่งส่วนประกอบออกเป็น 3
ส่วนหลัก ๆ ดังนี้
- ส่วนข้อมูลน าเข้า (Input)
- ส่วนการประมวลผล (Processing)
- ส่วนผลลัพธ์ (Output)
2. การออกแบบโปรแกรม
เมื่อปัญหาได้รับการวิเคราะห์เป็นที่เรียบร้อยแล้วต่อไปคือการออกแบบโปรแกรมโดย
อัลกอริทึมก็เป็นเคร่ืองมือหนึ่งที่สา มารถน ามาใช้เพื่อการออกแบบโปรแกรมได้ ซึ่งอัลกอริทึมเป็นขั้นตอนที่
ใช้อธิบายล าดับขั้นตอนการท างานของโปรแกรม และหากได้ปฏิบัติตามขั้นตอนในอัลกอริทึมแล้ว ก็จะ
ได้มาซึ่งผลลัพธ์ที่ถูกต้องตรงกับความต้องการ ส าหรับขั้นตอนการออกแบบโปรแกรมนั้นจะประกอบไปด้วย
กิจกรรมต่าง ๆ ดังนี้
- อัลการิทึม(Algorithm)
- ผังงาน(Flowchart)
- รหัสจ าลอง(Pseudo code)
- แผนภูมิโครงสร้าง(Structure chart)
10
2.1 อัลการิทึม(Algorithm)
เป็นเครื่องมือที่ช่วยในการออกแบบโปรแกรม โอยใช้ข้อความที่เป็นภาษาพูดในการอธิบาย
ท างานของโปรแกรมที่เป็นล าดับขั้นตอน จะข้ามมาไม่ได้นอกจากจะต้องเขียนสั่งได้ต่างหาก เพื่อให้เห็น
ภาพของอัลกอริทึมจากตัวอย่างของอัลกอริทึมง่าย ๆ ที่พบเห็นในชีวิตประจ าวันได้แก่ อัลกอริทึมการสระ
ผม จะต้องเริ่มจากการท าผมให้เปียกเมื่อเปียกแล้วจึงใส่แชมพูสระผมลงบนศีรษะ แล้วขยี้ให้มีฟองเกิดขึ้น
หลังจากนั้นก็ล้างออกด้วยน้ า แล้วเริ่มท าใหม่อีกครั้ง เป็นต้น
ในการเขียนอัลกอริทึมนี้แม้จะมีความชัดเจนอยู่แล้ว แต่มีจุดอ่อนอยู่ที่ข้อความอธิบายจะค่อนข้าง
เยิ่นเย้อและถ้าผู้เขียนใช้ส านวนที่อ่านยากก็อาจท าให้ผู้อ่านไม่เข้าใจตอนการท างานของโปรแกรมได้ ดังนั้น
จึงมีการคิดค้นเครื่องมืออ่ืน ที่ช่วยในการออกแบบโปรแกรมแทนอัลกอริทึม อันได้แก่ ผังงาน รหัสจ าลอง
แผนภูมิโครงสร้าง ฯลฯ
การเขียนขั้นตอนวิธี เป็นการเขียนเพื่ออธิบายการท างาน มีลักษณะเป็นขั้นเป็นตอน มีล าดับการ
ท างานที่ชัดเจน เป็นค าอธิบายเชิงบรรยาย
ตัวอย่าง การเขียนขั้นตอนวิธี
1) การลงทะเบียนล่วงหน้า
1. รับใบลงทะเบียนล่วงหน้าจาก อาจารย์ที่ปรึกษา และรับค าชี้ แจง
2. กรอกรายละเอียดต่าง ๆ
3. อาจารย์ที่ปรึกษาลงลายมือชื่อ
4. ยื่นเอกสารลงทะเบียนที่ธนาคาร เพื่อช าระเงิน
5. ยื่นเอกสารและใบเสร็จ ที่ส านักทะเบียน
2) การค านวณหาพื้นที่วงกลม
1. รับค่ารัศมีของวงกลม
2. ค านวณหา พื้นที่วงกลมจากสูตร
3. พื้นที่วงกลม = 3.1415 x รัศมี x รัศมี
4. แสดงค่า พื้นที่วงกลม
3) นับจ านวนชื่อที่ตรงกับชื่อที่มีอยู่ในรายการ
1. ก าหนดให้ตัวนับมีค่าเป็นศูนย์
2. รับชื่อที่ต้องการนับ
11
3. ท าซ้ างานต่อไปนี้ จนหมดรายการ
4. อ่านชื่อจากรายการถ้าชื่อที่รับมาตรงกับชื่อในรายการ ให้เพิ่มตัวนับอีก 1
5. แสดงจ านวน ตัวนับจะเห็นว่าการเขียนขั้นตอนวิธี เป็นการเขียนเชิงบรรยาย ที่ไม่มีกฎเกณฑ์ที่
แน่นอน หากผู้เขียนใช้ค าอธิบายที่ไม่ชัดเจน คลุมเครือ อาจก่อให้เกิดความเข้าใจผิด ท าให้ได้ผลลัพธ์ที่ไม่
ถูกต้อง ไม่ตรงกับวัตถุประสงค์ก็ได้
คุณสมบัติของอัลกอริทึม
1. เป็นกระบวนการที่สร้างขึ้นจากกฎเกณฑ์
2. กฎเกณฑ์ที่สร้างอัลกอรึทึมต้องไม่คลุมเครือ
3. การประมวลผลต้องเป็นล าดับขั้นตอน
4. กระบวนการต้องให้ผลตามที่ก าหนดในปัญหา
5. อัลกอริทึมต้องมีจุดสิ้นสุด
ประสิทธิภาพของอัลกอริทึม
1. ต้องใช้เวลาในการด าเนินการน้อยที่สุด
2. ต้องใช้หน่วยความจ าน้อยที่สุด
3. ต้องมีความยืดหยุ่น
4. ใช้เวลาในการพัฒนาน้อยที่สุด
5. ง่ายต่อความเข้าใจ
2.2 ผังงาน (Flowchart)
ผังงาน คือ แผนภาพที่มีการใช้สัญลักษณ์รูปภาพและลูกศรที่แสดงถึงขั้นตอนการท างาน
ของโปรแกรมหรือระบบทีละขั้นตอน รวมไปถึงทิศทางการไหลของข้อมูลต้ังแต่แรกจนได้ผลลัพธ์ตามที่
ต้องการหรือการแสดงขั้นตอนหรือรายละเอียดของการท างานในรูปของสัญลักษณ์ การเขียนผังงานจะช่วย
ให้การวิเคราะห์ระบบท าได้ง่ายขึ้น ผังงานจะเริ่มจากการน าเข้าข้อมูล การระบุอุปกรณ์ที่ใช้ การอธิบาย
ขั้นตอนการประมวลผลโดยใช้สัญลักษณ์แต่ละข้อความเพื่อแสดงขั้นตอนการท างานของโปรแกรม
สามารถแบ่งการท างานของผังงานได้เป็น 2 แบบ คือ
1. ผังงานระบบ (System flowchart)
2. ผังงานของโปรแกรม (Program flowchart)
12
ประโยชน์ของผังงาน
- ช่วยล าดับขั้นตอนการท างานของโปรแกรม และสามารถน าไปเขียนโปรแกรมได้โดยไม่สับสน
- ช่วยในการตรวจสอบ และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาด
- ช่วยให้การดัดแปลง แก้ไข ท าได้อย่างสะดวกและรวดเร็ว
- ช่วยให้ผู้อ่ืนสามารถศึกษาการท างานของโปรแกรมได้อย่างง่าย และรวดเร็วมากขึ้น
2.3 รหัสจ าลอง(Pseudo code)
จะมีการใช้ข้อความที่เป็นภาษาอังกฤษหรือภาษาไทยก็ได้ ในการแสดงขั้นตอนการ
แก้ปัญหา แต่จะมีการใช้ค าเฉพาะ(reserve words) ที่มีอยู่ในภาษาโปรแกรมมาช่วยในการเขียน โครงของ
รหัสจ าลองจึงมีส่วนที่คล้ายกับการเขียนโปรแกรมมาก ดังนั้นรหัสจ าลองจึงเป็นเครื่องมืออีกแบบที่นิยมใช้
กันมากในการออกแบบโปรแกรม
หลักการเขียนซูโดโค้ด
1. ถ้อยค าหรือค าสั่งอยู่ในรูปของภาษาอังกฤษอย่างง่าย
2. ในหนึ่งบรรทัดให้เขียนค าสั่งเพียงค าสั่งเดียว
3. ควรใช้การย่อหน้าเพื่อแยกค าเฉพาะรวมถึงจัดโครงสร้างการควบคุมให้เป็นสัดส่วน ซึ่งจะ
ท าให้อ่านได้ง่าย
4. ซึ่งแต่ละประโยคค าสั่งเขียนจากบนลงล่าง โดยมีทางเข้าทางเดียวและทางออกทางเดียว
5. กลุ่มประโยคค าสั่งต่าง ๆ อาจจัดเข้าไว้ในรูปของโมดูล
2.4 แผนภูมิโครงสร้าง(Structure chart)
จะเป็นการแบ่งงานใหญ่ออกเป็นโมดูย่อยๆ ซึ่งเรียกว่า การออกแบบจากบนลงล่าง (Top-
Down Design) และแต่ละโมดูย่อยก็ยังสามารถแตกออกได้อีกจนถึงระดับที่ล่างสุด ที่สามารถเขียน
โปรแกรมได้อย่างง่าย
3. การเขียนโปรแกรม
หลังจากที่ผ่านขั้นตอนที่สองคือการออกแบบโปรแกรมแล้ว ขั้นต่อไปคือการเขียนโปรแกรมด้วย
ภาษาคอมพิวเตอร์ ในขั้นตอนนี้จะเป็นการน าเครื่องมือที่ถูกสร้างขึ้นจากขั้นตอนการออกแบบมาแปลให้
13
เป็นโปรแกรมคอมพิวเตอร์นั่นเอง ซึ่งในการสร้างโปรแกรมคอมพิวเตอร์นั้น เราสามารถเลือกใช้ภาษาได้
หลายภาษา ต้ังแต่ภาษาระดับต่ า เช่น ภาษาแอสเซมบลี จนถึงภาษาระดับสูง เช่น ภาษาเบสิก(BASIC)
ภาษาโคบอล(COBOL) ภาษาปาสดาล(PASCAL) ภาษาฟอร์แทรน(FORTRAN) ภาษาซี(C) ฯลฯ แต่ละ
ภาษาก็จะมีรูปแบบ โครงสร้าง หรือไวยากรณ์ของภาษาที่แตกต่างกันออกไป
ดังนั้นการเขียนโปรแกรมที่ดีนั้น ควรจะต้องท าตามขั้นตอนคือเริ่มต้ังแต่วิเคราะห์ปัญหาให้ได้ก่อน
แล้วท าการออกแบบโปรแกรมจึงจะเริ่มเขียนโปรแกรม ซึ่งในการเขียนโปรแกรมนั้นส าหรับผู้ที่ยังไม่มี
ประสบการณ์การเขียนโปรแกรมเพียงพอ ก็ควรจะทดลองเขียนลงในกระดาษก่อน แล้วตรวจสอบจนแน่ใจ
ว่าสามารถท างานได้แล้วจึงท าการป้อนเข้าสู่เครื่องคอมพิวเตอร์ เพื่อเป็นการประหยัดเวลาและท าให้
สามารถท างานได้เร็วขึ้น
4. การทดสอบโปรแกรม
หลังจากเขียนโปรแกรมเรียบร้อยแล้ว ขั้นต่อไปคือการน าโปรแกรมมาแปล เพื่อทดสอบความ
ถูกต้องตัวแปลภาษาคอมพิวเตอร์มี 2 ชนิดคือ
1) คอมไพเลอร์ (compiler) เช่น ภาษาซี ภาษาปาสคาล จะแปลทั้งโปรแกรม ซึ่งหากมี
ข้อผิดพลาด ก็จะต้องแก้ไขให้ถูกต้อง และแปลใหม่จนกระทั่งไม่พบข้อผิดพลาด โปรแกรมจึงจะสามารถ
ท างานได้
2) อินเตอร์พรีเตอร์ (Interpreter) จะแปลทีละค าสั่งในแต่ละบรรทัดโดยโปรแกรมยังสามารถ
ท างานต่อไปได้ถึงแม้ว่าจะมีข้อผิดพลาดในโปรแกรมก็ตาม ตราบใดที่ตัวแปลยังไม่ผ่านบรรทัดค าสั่งที่เขียน
ผิดขั้นตอนการทดสอบโปรแกรมเรียกอีกอย่างหนึ่งว่า “การดีบั๊กโปรแกรม (Debugging)”
การทดสอบด้วยการแปลชุดค าสั่ง เป็นการตรวจสอบข้อผิดพลาดของชุดค าสั่ง (Syntax Error) เป็น
ส าคัญ เช่น กรณีพิมพ์ค าสั่งผิด เช่น Print แทนที่จะเป็น printf ซึ่งตัวแปลจะไม่รู้จักค าสั่งดังกล่าว ก็จะ
แสดงข้อผิดพลาดออกมา แต่ถ้าผลลัพธ์ของโปรแกรมผิดพลาดจากการใช้สูตรค านวณที่ผิด (Logic Error)
เช่น ตั้งสูตรค านวณภาษีผิด
บางครั้งโปรแกรมอาจผ่านการแปล โดยไม่มีข้อผิดพลาดใดๆ แจ้งออกมา แต่เมื่อน าโปรแกรมนั้นไป
ใช้งานปรากฏว่าได้ผลลัพธ์ที่ไม่เป็นจริง เนื่องจากอาจเกิดข้อผิดพลาดแบบ Logical Error ขึ้นได้ ดังนั้นจึง
ควรจะต้องมีขั้นตอนการทดสอบความถูกต้องของโปรแกรมอีกทีด้วย
14
ในการทดสอบความถูกต้องของข้อมูลจะมีอยู่หลายวิธีดังต่อไปนี้
4.1 การใส่ข้อมูลที่ถูกต้อง(valid case)
เป็นการทดสอบโดยเมื่อมีการรันโปรแกรม ให้ท าการใส่ข้อมูลที่ถูกต้องลงไปในโปรแกรม
และดูว่าผลลัพธ์ที่ได้จากโปรแกรมถูกต้องตามความเป็นจริงหรือตรงกับที่ต้องการหรือไม่
4.2 การใช้ของเขตและความถูกต้องของข้อมูล(Range check and Completeness check)
เป็นการทดสอบโดยตรวจสอบขอบเขตของข้อมูลที่ป้อนเข้าสู่โปรแกรม เช่น ถ้าโปรแกรม
ให้มีการป้อนวันที่ ก็จะต้องตรวจสอบว่าวันที่ที่ป้อนจะไม่เกินวันที่ 31 ถ้าผู้ใช้ป้อนวันที่ที่เป็นเลข 32
โปรแกรมจะต้องไม่ยอมให้ป้อนวันที่นี้ได้ หรือ การตรวจสอบความสมบูรณ์ของข้อมูล เช่น การรับข้อมูลที่
เป็นวัน/เดือน/ปี ก็จะต้องใส่เป็นตัวเลข 6 ตัวในลักษณะ dd/mm/yy ถ้าใส่น้อยกว่า 6 ตัวจะไม่รับเป็นต้น
4.3 การใช้ความสมเหตุสมผล (Consistency Check)
ตัวอย่างเช่น ถ้าโปรแกรมมีการออกแบบให้ผู้ใช้ป้อนข้อมูลลงไปในฟอร์ม (Form) ที่มีฟิลด ์
ข้อมูลที่เป็นเพศ (หญิง หรือ ชาย) และรายละเอียดส่วนตัวของคน ๆ นั้น
เพศ วันลาคลอด
ชาย ต้องไม่มี(ห้ามใส่)
หญิง อาจมีหรือไม่มีก็ได้
4.4 ข้อมูลที่เป็นตัวเลขและตัวอักษร (Correct No. and Type character check)
เป็นการตรวจสอบว่าถ้าโปรแกรมให้ผู้ป้อนข้อมูลในฟิลด์ที่ต้องรับข้อมูลที่เป็นตัวเลข
อย่างเช่น ฟิลด์ที่เป็นจ านวนเงิน ก็ควรจะยอมให้ผู้ใช้ป้อนข้อมูลได้เฉพาะตัวเลขเท่านั้น ไม่อนุญาตให้ใส่
ตัวอักษรในฟิลด์นั้นได้ หรือถ้าเป็นฟิลด์ที่รับข้อมูลที่เป็นตัวอักษรเช่น ฟิลด์ชื่อ-นามสกุล ก็จะป้อนได้
เฉพาะตัวอักษรเท่านั้น จะป้อนตัวเลขไม่ได้เป็นต้น
5.5 ข้อมูลเป็นไปตามข้อก าหนด (Existence Check)
ข้อมูลที่ป้อนในฟิลด์ต้องเป็นไปตามที่ก าหนดไว้แน่นอนแล้วเท่านั้น เช่นก าหนดให้ฟิลด์นี้
ป้อนขอมูลได้เฉพาะตัวเลขที่อยู่ในกลุ่ม 1,2,5,7 ได้เท่านั้น จะป้อนเป็นตัวเลขอื่นที่ไม่อยู่ในกลุ่มนี้ไม่ได้
การน าโปรแกรมเข้าเครื่องคอมพิวเตอร์พร้อมข้อมูลจริง
ขั้นตอนต่อมาหลังจากที่ได้ท าการทดสอบโปรแกรมจนมีความมั่นใจว่าโปรแกรมสามารถท างานได้
จริงและตรงกับความต้องการของผู้ใช้โปรแกรม จากนั้นเราจึงท าการน าโปรแกรมเข้าเครื่องคอมพิวเตอร์
พร้อมข้อมูลจริง ในขั้นตอนนี้จะเป็นการน าข้อมูลที่แท้จริง มาป้อนให้กับโปรแกรมเพื่อท างานและน าผลลัพธ์
ไปใช้ประโยชน์ต่อไป
15
5. การจัดท าเอกสารประกอบโปรแกรม
5.1 เอกสารประกอบโปรแกรมส าหรับผู้ใช้ (User Documentation)
เหมาะส าหรับผู้ใช้ที่ไม่ต้องเกี่ยวข้องกับการพัฒนาโปรแกรม แต่เป็นผู้ที่ใช้งานโปรแกรม
อย่างเดียว จะเน้นการอธิบายเกี่ยวกับการใช้งานโปรแกรมเป็นหลัก ตัวอย่างเช่น
- โปรแกรมนี้ท าอะไร ใช้งานในด้านไหน
- ข้อมูลเข้ามีลักษณะอย่างไร
- ข้อมูลออกหรือผลลัพธ์มีลักษณะอย่างไร
- การเรียกใช้โปรแกรมท าอย่างไร
- ค าสั่ง หรือข้อมูล ที่จ าเป็นให้โปรแกรมเริ่มงานมีอะไรบ้าง
- อธิบายเก่ียวกับประสิทธิภาพ และความสามารถของโปรแกรม
5.2 เอกสารประกอบโปรแกรมส าหรับผู้เขียนโปรแกรม (Technical Documentation)
จะแบ่งได้เป็น 2 ส่วน
- ส่วนที่เป็นค าอธิบายหรือหมายเหตุในโปรแกรมหรือเรียกอีกอย่างหนึ่งว่าคอมเมนท์
(Comment) ซึ่งส่วนใหญ่มักจะเขียนแทรกอยู่ในโปรแกรมอธิบายการท างานของโปรแกรมเป็นส่วน ๆ
- ส่วนอธิบายด้านเทคนิค ซึ่งส่วนนี้มักจะท าเป็นเอกสารแยกต่างหากจากโปรแกรม จะอธิบาย
ในรายละเอียดที่มากขึ้น เช่น ชื่อโปรแกรมย่อยต่าง ๆ มีอะไรบ้าง แต่ละโปรแกรมย่อยท าหน้าที่อะไร และ
ค าอธิบายย่อ ๆ เกี่ยวกับวัตถุประสงค์ของโปรแกรม เป็นต้น
16
รูปแบบการเขียนโปรแกรม
การเขียนโปรแกรมเชิงโครงสร้าง (Structured Programming)
โปรแกรมที่มีคุณภาพ คือโปรแกรมที่ง่ายต่อการอ่านและง่ายต่อการปรับปรุงแก้ไขในอนาคต โดย
รูปแบบการเขียนโปรแกรมเชิงโครงสร้างนั้น เป็นรูปแบบที่ง่ายต่อการอ่านและการปรับปรุงประกอบด้วย
- ชุดค าสั่งภายในโปรแกรม จะเป็นล าดับขั้นตอน (Sequence)
- มีทางเลือกในการตัดสินใจทางใดทางหนึ่ง (Decision)
- มีชุดค าสั่งการท าซ้ า (Repetition)
N N
Y Y
ก. ล าดับขั้นตอน ข. ตัดสินใจ ค.ลูปท าซ้ า
รูปท่ี 1 ผังงานแสดงรูปแบบการเขียนโปรแกรมเชิงโครงสร้าง
การเขียนโปรแกรมแบบบนลงล่าง (Top-Down Programming) ซึ่งจะเป็นการน าโปรแกรมมา
แบ่งเป็นส่วนย่อย ๆ เพื่อลดความซ้ าซ้อนโดยมีโปรแกรมหลักอยู่ระดับบน จะเรียกใช้โมดูลย่อยต่าง ๆซึ่งแต่
ละโมดูลจะท าหน้าที่ของตนเองที่แตกต่างออกไป เช่น
โมดูลที่ 1 : อ่านข้อมูลคะแนนนักเรียน
โมดูลที่ 2 : ค านวณเกรด
โมดูลที่ 3 : จ าแนกนกัเรียนที่สอบผ่านและสอบไม่ผ่าน
โมดูลที่ 4 : พิมพ์รายงาน
ดังนั้นภายในโปรแกรมจึงประกอบไปด้วยหลาย ๆ โมดูลที่ท างานร่วมกันเพื่อแก้ไขปัญหา ซึ่งจะ
ช่วยให้ง่ายต่อการอ่านและง่ายต่อการแก้ไขโปรแกรม ตัวอย่าง หากต้องการเปลี่ยนแปลงช่วงคะแนนการคิด
ยืนขึ้น
หันขวา
เดินไปข้างหน้า
มองไปนอกบ้าน
น าร่มไปด้วย
ใส่แว่นกันแดด ฝนตก?
ท างาน
ออกไปทานข้าว
พักเที่ยง?
17
เกรด เช่นจากเดิม 80 คะแนนขึ้นไปจะได้เกรด 4 แก้ไขมาเป็น 85 คะแนนขึ้นไปถึงจะได้เกรด 4 ก็จะแก้ไข
เฉพาะโมดูลที่ 2 เท่านั้น ส่วนโมดูลอ่ืน ๆ ก็ไม่มีผลกระทบใด ๆ
รูปท่ี 2 รูปแบบการเขียนโปรแกรมแบบบนลงล่าง หรือแบบโมดูล
ข้อดีของการเขียนโปรแกรมแบบโครงสร้าง
1. เพื่อสร้างโปรแกรมให้มีคุณภาพ และสามารถท านายได้ว่าจะเกิดอะไรขึ้นในโปรแกรม
2. เพื่อสร้างโปรแกรมที่ง่ายต่อการปรับปรุงแก้ไข
3. เพื่อให้การพัฒนาโปรแกรมมีระบบระเบียบยิ่งขึ้น
4. เพื่อให้การพัฒนาระบบเป็นไปอย่างรวดเร็วประหยัดต้นทุน
โปรแกรมคิดเกรดนักเรียน
(โปรแกรมหลัก)
อ่านข้อมูล
คะแนนนักเรียน ค านวณเกรด
จ านวนนกัเรียนท่ี
สอบผ่าน/ไม่ผ่าน พิมพ์รายงาน
18
การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming )
การเขียนโปรแกรมเชิงวัตถุ ต้ังอยู่บนพื้นฐานของการแจกแจงรายละเอียดของปัญหาด้วยการ
มุ่งเน้นเกี่ยวกับวัตถุในโลกความเป็นจริง โปรแกรมเชิงวัตถุนั้นจะมองวัตถุต่าง ๆ เป็นแหล่งรวมข้อมูลและ
กระบวนการเข้าด้วยกันโดยจะมีคลาส ( Class)เป็นตัวก าหนดคุณสมบัติของวัตถุ และคลาสจะสืบทอด
คุณสมบัติ(Inheritance) ไปยังคลาสย่อยต่าง ๆ ที่เรียกว่า SubClass คุณสมบัติดังกล่าวท าให้เกิดการน า
มาใช้ใหม่ (Reusable) ที่ท าให้ลดขั้นตอนการพัฒนาโปรแกรมลงได้ โดยเฉพาะขนาดที่ใหญ่และซับซ้อนสูง
รูปแบบการเขียนซูโดโค้ด(Pseudo Code)
รูปแบบการเขียนซโูดโค๊ด เพื่อใช้ในการเขียนโปรแกรม
1. การก าหนดค่า และการค านวณ
รูปแบบ
Name = expression
Name คือ ชื่อตัวแปรท่ีใช้ส าหรับเก็บค่า
Expression คือ ค่าข้อมูลหรือนิพจน์
ตัวอย่างเช่น
Salary = 10000
Overtime = 2500
Tax = 125
Income = salary + overtime – tax
หมายความว่า ได้มีการก าหนดค่าเริ่มต้นให้กับตัวแปร salary, overtime และ tax จากนั้น
ก็ก าหนดให้ income = salary + overtime - tax
2. การอ่าน/รับข้อมูล
รูปแบบ
READ variable_1, variable_2,variable_n
INPUT variable_1, variable_2,variable_n
GET variable_1, variable_2,variable_n
การอ่านข้อมูลสามารถใช้ค าสั่ง READ , INPUT หรือ GET ก็ได้ทั้ง 3 ค าสั่งจะถูกน าไปใช้
ในกรณีดังต่อไปนี้
19
READ น าไปใช้ส าหรับการอ่านค่าที่มีอยู่แล้วมาเก็บไว้ในตัวแปร เช่น อ่านข้อมูลจากไฟล์
ในสื่อบันทึกต่าง ๆ
INPUT และ GET น าไปใช้ส าหรับการรับข้อมูลจากแป้นพิมพ ์
ส าหรับ variable คือตัวแปรที่ใช้ในการเก็บข้อมูลที่อ่านหรือรับเข้ามา ซึ่งสามารถก าหนด
ได้หลายตัวตามจ านวนตัวแปรท่ีต้องการโดยใช้เครื่องหมาย “ , ” ค่ันระหว่างชื่อตัวแปร
ตัวอย่างเช่น
INPUT a, b, c
Answer = a + b + c
หมายความว่า ให้รับค่าตัวแปร a ,b ,c ผ่านทางแป้นพิมพ์และก าหนดให้ตัวแปร answer เก็บค่า
ผลรวมของตัวแปรทั้ง 3
GET current_date
Expire_date = current_date + 120
หมายความว่า ให้รับค่าวันที่ปัจจุบัน แล้วเก็บไว้ในตัวแปรชื่อ current date จากนั้นก าหนดให้ตัว
แปรวันหมดอายุชื่อ expire_date มีค่าเท่ากับวันที่ปัจจุบันบวกเพิ่มไปอีก 120 วัน
OPEN student_file
READ id, name, address, sex
หมายความว่า ให้เปิดไฟล์ชื่อ student_file ไว้ แล้วอ่านค่าเรคอร์ด จากไฟล์ดังกล่าวซึ่ง
ประกอบด้วย ฟิลด์ id, name, address, sex
3. การแสดงผลของข้อมูล
รูปแบบ
PRINT variable_1, variable_2,variable_n
PROMPT variable_1, variable_2,variable_n
WRITE variable_1, variable_2,variable_n
ส าหรับการแสดงผลข้อมูลสามารถใช้ค าสั่ง PRINT, PROMPT, WRITE ใช้ในกรณีต่าง ๆ ต่อไปนี้
- PRINT และ PROMPT น าไปใช้ส าหรับการพิมพ์ค่าข้อมูล หรือข้อความ
20
- WRITE น าไปใช้ส าหรับการบันทึกข้อมูลลงในแฟ้มข้อมูล
ตัวอย่างเช่น
PROMPT “Enter 3 Value ==> ”
INPUT value1,value2,value3
Sum = value1 + value2 + value3
PRINT sum
หมายความว่าแสดงข้อความให้พิมพ์ค่าจ านวนตัวเลขจ านวน 3 ค่า จากนั้นให้รับค่าตัวเลขทั้ง
สามโดยจัดเก็บไว้ที่ตัวแปรที่ชื่อ value1 ,value2 , value3 และก าหนดให้ sum มีค่าเท่ากับผลรวมของตัว
แปรท้ังสาม แล้วพิมพ์ค่า sum
OPEN student_file
INPUT id, name, address, sex
WRITE id, name ,address , sex
หมายความว่า ให้เปิดไฟล์ที่ชื่อ Student_file ขึ้นมา จากนั้นรับค่า id ,name ,address และ
sex แล้วบันทึกค่าดังกล่าวลงในแฟ้มข้อมูล
4. การก าหนดเงื่อนไข
รูปแบบ
IF <condition> THEN
Activity 1
ELSE
Activity2
ENDIF
โดยที่ <condition> คือเงื่อนไขที่ก าหนด ซึ่งหากเงื่อนไขเป็นจริง ก็จะท ากิจกรรมหลัง THEN แต่ถ้า
เงื่อนไขนั้นเป็นเท็จ ก็จะท ากิจกรรมหลัง ELSE
21
ตัวอย่างเช่น
IF score >= 80 THEN
Grade = “4”
ELSE
Grade = “3”
ENDIF
นอกจากการใช้เงื่อนไข IF … THEN แล้ว ก็ยังมีค าสั่ง CASE …. OF ซึ่งสามารถตรวจสอบ
เงื่อนไขหลายเงื่อนไขได้ด้วย เช่น
CASE score OF
Score>= 80 : grade = “4”
Score>= 70 : grade = “3”
Score>= 60 : grade = “2”
Score>= 50 : grade = “1”
END CASE
5. การท างานเป็นรอบ(Loop)
5.1 การท างานเป็นรอบด้วย WHILE
รูปแบบ
WHILE <condition>
Activity1
Activity2
Activity3
END WHILE
การท างานของลูป WHILE จะมีการตรวจสอบเงื่อนไขก่อนหากเงื่อนไขเป็นจริงก็จะท า
กิจกรรมที่อยู่ภายในไปเรื่อย ๆ จนกระทั่งเงื่อนไขนั้นเป็นเท็จและก็จะออกจากลูปนั้นไป
22
ตัวอย่าง
WHILE num <=20
PRINT num
Num = num + 1
END WHILE
PROMPT “STOP”
จากตัวอย่าง num จะมีค่าเริ่มต้นเป็น 1 และจะวนภายในลูปจ านวน 20 รอบ พร้อมกับพิมพ์ค่า
ของ num โดยเพิ่มทีละ 1 ไปเรื่อย ๆ จนกระทั่ง ค่า num มากกว่า 20 แล้วก็ออกจากลูป พร้อมกับพิมพ์
ข้อความว่า STOP ออกมา
5.2 การท างานเป็นรอบด้วยลูป DO…UNTIL
รูปแบบ
DO
Activity1
Activity2
Activity3
UNTIL <condition>
การท าลูป DO…UNTIL จะเป็นการตรวจสอบเงื่อนไขภายหลังซึ่งจะวนรอบไปเรื่อย ๆ และท า
กิจกรรมภายในลูป
ตัวอย่างเช่น
DO
PRINT “Hello World”
Num = num +1
UNTIL num > 20
จากตัวอย่างโปรแกรมก็จะพิมพ์ข้อความ “Hello World” ไปเรื่อย ๆ โดยจะมีการนับค่า
num เพิ่มขึ้นทีละ 1 และจะตรวจสอบว่า num มีค่ามากกว่า 20 เมื่อไรก็จะหลุดออกจากลูปทันที
23
5.3 การท าเป็นรอบแบบ FOR…NEXT
รูปแบบ
FOR n = 1 to 10
Activity 1
Activity 2
Activity 3
NEXT
การท างานของลูป FOR…NEXT จะมีการวนซ้ าเพื่อท างานภายในลูปที่ก าหนดว้าอย่างแน่นอน
เช่น ก าหนดไว้ 10 รอบ ก็จ าท ากิจกรรมภายในลูป 10 รอบ ตัวอย่างเช่น ให้พิมพ์ค าว่า
GOOD Bye จ านวน 10 ข้อความ
FOR n=1 to 10
PRINT “GOOD Bye”
NEXT
6. โปรแกรมย่อย (Procedure)
ในกรณีที่โปรแกรมมีความซับซ้อน และมีขั้นตอนมากมายอาจจะมีความจ าเป็นต้องแบ่งโปรแกรม
ออกเป็นโปรแกรมย่อย ๆ หรือเรียกว่าโพรซีเยอร์( PROCEDURE) โดยแต่และโพรซีเยอร์จะต้องมี ชื่อก ากับ
พร้อมชุดค าสั่งภายในโปรแกรมย่อย นั้นๆ ส่วนการเรียกใช้จะใช้ค าสั่ง CALL แล้วตามด้วยชื่อ โพรซีเยอร์
รูปแบบ
PROCEDURE name
24
ตัวอย่างเช่น
PROGRAM grades
BEGIN
READ score
CALL grade
PRINT grade
PROCEDURE grade
IF score >=80 THEN
Grade= “4”
ELSE
Grade = “3”
END IF
END
25
แบบทดสอบ ตอนที่ 1 จงท าเครื่องหมาย บนตัวเลือกที่ถูกที่สุดเพียงข้อเดียว
1. ข้อใดไม่ใช่ขั้นตอนการเขียนโปรแกรม
ก. การสร้างปัญหา ข. การเขียนอัลกอริทึม
ค. การเขียนโปรแกรม ง. การทดสอบโปรแกรม
2. ตัวแปรภาษาชนิดใดที่จะท าการแปลทั้งโปรแกรม หากมีข้อผิดพลาด จะต้องแก้ไขให้ถูกต้องก่อน
โปรแกรมจึงจะท างานได้
ก. อินเตอร์พรีเตอร์ ข.คอมไพเลอร์
ค. ดีบีกเกอร์ ง. ถูกทุกข้อ
3. ข้อใดต่อเป็นนี้เป็นข้อผิดพลาดชนิด Logic Error
ก. ผลการตัดสินเกรดนักเรียนผิดพลาด ข. พิมพ์ค าสั่งบางค าสั่งผิด
ค. โปรแกรมไม่มีข้อมูล ง. ถูกทุกข้อ
4. ข้อใดต่อไปนี้เป็นการเขียนโปรแกรมเชิงโครงสร้าง
ก. ชุดค าสั่งเป็นล าดับขั้นตอน ข. มีทางเลือกในการตัดสินใจทางใดทางหนึ่ง
ค. มีกระบวนการท าซ้ า ง. ถูกทุกข้อ
5. ข้อใดต่อไปนี้ถือว่าเป็นกระบวนการท าซ้ า
ก. ต่ืนนอน ล้างหน้า แปรงฟัน ไปโรงเรียน
ข. เรียนหนังสือ ง่วงนอน แบบหลับ
ค. เรียนหนังสือ จนถึงเวลา 11.30 น แล้วไปทานข้าว
ง. ถ้าหิว ไปทานข้าวก่อน แล้วมาเรียน
6. ข้อใดต่อไปนี้เก่ียวข้องกับการเขียนโปรแกรมแบบโมดูล
ก. การสร้างโปรแกรมแบบโครงสร้าง ข. การแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ
ค. การแตกปัญหาออกเป็นส่วน ๆ ง. ถูกทุกข้อ
7. ข้อใดต่อไปนี้ ไม่ใช่ เกี่ยวข้องกับการเขียนโปรแกรมเชิงวัตถุ
ก. การสร้างคลาส ข. การสืบทอดคุณสมบัติ
ค. การสร้างโพรซีเยอร์ ง. การน ากลับมาใช้ใหม่
26
8. ข้อใดไม่ใช่วัตถุประสงค์ของการเขียนโปรแกรมเชิงโครงสร้าง
ก. สร้างก าลังใจให้กับทีมงาน ข. สร้างโปรแกรมที่ปรับปรุงได้ง่าย
ค. ท านายได้ว่าจะเกิดเหตุการณ์ใดในโปรแกรม ง. ประหยัดต้นทุนในการเขียนโปรแกรม
9: ข้อใดต่อไปนี้เป็น อัลกอริทึม
ก. หลักการค านวณสูตรคูณแม่ 12 ข. จงหาผลรวมของเลขคู่
ค. ค านวณค่าลวงเวลาของพนักงานทั้งหมด ง. ถูกทุกข้อ
10. ประสิทธิภาพของอัลกอริทึมสามารถดูได้จากข้อใดต่อไปนี้
ก. ต้องการหน่วยความจ ามาก ข. ใช้เวลาในการพัฒนานานมาก
ค. ง่ายต่อการท าความเข้าใจ ง. ถูกทุกข้อ
11. ข้อใดต่อไปนี้ไม่เกี่ยวข้องกับ “ซูโดโค้ด”
ก. เป็นชุดค าสั่งภาษาคอมพิวเตอร์
ข. เป็นค าสั่งจ าลองที่ไม่ขึ้นกับภาษาคอมพิวเตอร์
ค. เป็นรูปแบบโครงสร้างภาษาอังกฤษคล้ายกับภาษาระดับสูง
ง. ถูกทุกข้อ
12. ประโยคค าสั่งของซูโดโค้ดที่มาใช้ในการอ่านข้อมูลจากดิสก์ ควรใช้ประโยคค าสั่งใด
ก. READ ข. INPUT DISKET
ค. GET FROM DISKET ง. PROMPT
13. การรับข้อมูลจากคีย์บอร์ดควรใช้ประโยคค าสั่งใด
ก. READ ข. GET, INPUT
ค. WRITE ,PROPT ง. KEYBOARD
14. กรณีต้องการตรวจสอบเงื่อนไขควรใช้ค าสั่งใด
ก. IF…THEN…ELSE ข. CASE
ค. DO…UNTIL ง. ข้อ ก. และ ข. ถูก
15. ลูปในข้อใดต่อไปนี้จะไม่สามารถประมวลผลค าสั่งภายในได้
ก. LOOP….ENDLOOP ข. WHILE…ENDWHILE
ค. DO…UNTIL ง. FOR…NEXT