Professional Documents
Culture Documents
บทที่ 2 การออกแบบอังกอริทึม
บทที่ 2 การออกแบบอังกอริทึม
ปัญหาที่อธิบายในรูปแบบขั้นตอนการทางานที่ชัดเจน เครื่องมือที่ใช้ในการออกแบบอัลกอริทึมที่นิยมใช้คือ
ผังงาน หรือ โฟลชาร์ต (Flowchart) และโค้ดรหัสเทียม หรือ ซูโดโค้ด (Pseudo Code)
อัลกอริทมึ (Algorithm)
อัลกอริทึม หรือขั้นตอนวิธี เป็นการแสดงขั้นตอนการแก้ไขปัญหางานด้วยการใช้วิธีการเขียนโปรแกรม
คอมพิวเตอร์มาเป็นเครื่องมือ ในการแก้ไขปัญหา อังกอริทึมเป็นเครื่องมือที่สามารถนามาช่วยในการเขียน
กระบวนการแก้ไขปัญหาที่สามารถอธิบายเป็นขั้นตอน และเข้าใจได้ง่าย
คุณสมบัติของการออกแบบอัลกอริทึมมีกระบวนการดังนี้
1. วิเคราะห์ปัญหา (Problem Analysis) มีลาดับดังนี้
วิเคราะห์ปัญหาในภาพรวมทั่งหมดตามโจทย์ต้องการ
วิเคราะห์เอาท์พุตที่โจทย์ต้องการ และกาหนดตัวแปรที่จะใช้เป็นข้อมูลเอาท์พุตในการ
ออกแบบ
วิเคราะห์ ข้อมูล อิน พุตที่ต้องนามาใช้ ในการแก้ไขปัญหาเพื่อให้ ได้เอาท์ พุต ตามโจทย์
ต้องการ และกาหนดตัวแปรอินพุตที่จะใช้เป็นข้อมูลในการออกแบ
เลือกภาษาโปรแกรมคอมพิวเตอร์ที่ใช้ในการพัฒนาโปรแกรม
2. การออกแบบอังกอริทึม (Algorithm Design) มีลาดับดังนี้
ออกแบบผังงาน หรือโฟลชาร์ต อธิบายขั้นตอนการทางานในการแก้ไขปัญหาตามโจทย์
ด้วยการใช้สัญลักษณ์รูปภาพในการแสดงลาดับขั้นตอนความคิด และลาดับขั้นตอนการ
ทางานเพื่อแก้ไขปัญหาตามโจทย์
อธิบายขั้นตอนการประมวลผลด้วยการใช้โค้ดรหัสเทียม หรือซูโดโค้ด ด้วยการใช้คาหรือ
ประโยชน์คาสั่งภาษาคอมพิวเตอร์ที่ไม่อ้างภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งในการ
แก้ไขปัญหา ด้วยการใช้ภาษาเขียนที่เข้าใจได้ง่ายตามโครงสร้างการพัฒนาโปรแกรม
การเขียนโปรแกรมคอมพิวเตอร์ 1 การออกแบบอัลกอริทึม
การเขียนผังงาน
ผั งงาน (Flowchart) คือ แผนภาพที่ใช้สั ญลั ก ษณ์รู ปภาพ และลู กศรมาเชื่ อ มต่ อกั นเพื่ อ แสดงถึ ง
ขั้นตอนการทางานของการแก้ไขปัญหาด้วยการเขียนโปรแกรมเป็นลาดับขั้นตอนทีละขั้น ตอน รวมไปถึงแสดง
ทิศทางการไหลของข้อมูลตั้งแต่เริ่มต้นจนได้ผลลัพธ์ตามที่ต้องการ
ประโยชน์ของผังงาน
การใช้ผังงานในการออกแบบลาดับขั้นตอนในการแก้ไขปัญหามีประโยชน์ดังนี้
ผั ง งานสามารถช่ ว ยล าดั บ ขั้ น ตอนการท างานไม่ ใ ห้ สั บ สนในการแก้ ไ ขปั ญ หาด้ ว ยการเขี ยน
โปรแกรมคอมพิวเตอร์
สามารถตรวจสอบล าดั บ การท างานในการแก้ ไ ขปั ญ หา และถ้ า ตรวจสอบผั ง งานแล้ ว พบ
ข้อผิดพลาดในขั้นตอนในการออกแบบก็สามารถแก้ไขปัญหาได้ง่ายกว่าการแก้ไขโค้ดโปรแกรม
คอมพิวเตอร์ที่ไม่ได้ออกแบบผังงานก่อนเขียนโปรแกรมคอมพิวเตอร์
เป็นเครื่องมือที่ช่วยให้ผู้ที่ต้องนาโปรแกรมคอมพิวเตอร์ที่พัฒนาเสร็จแล้วไปศึกษาเพื่อแก้ไขหรือ
เพิ่มเติมการทางานโปรแกรมคอมพิวเตอร์ สามารถทาความเข้าใจลาดับการทางานของโปรแกรม
คอมพิวเตอร์ ได้ง่าย และรวดเร็วจากการศึกษาตามผังงานที่ออกแบบไว้เพื่อใช้ในการพัฒ นา
โปรแกรมคอมพิวเตอร์
วิธีการเขียนผังงานที่ดี
การออกแบบผังงานเพื่อแก้ไขปัญหาตามโจทย์กาหนดเพื่อให้การออกแบบขั้นตอนการทางานเป็น
มาตรฐานต้องปฏิบัติตามนี้
ใช้สัญลักษณ์ในการเขียนผังงานตามรูปแบบสัญลักษณ์มาตรฐานผังงานตามที่กาหนด
ผังงานต้องมีจุดเริ่มต้น และจุดสิ้นสุดในการออกแบบผังงาน
ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง จากซ้ายไปขวา หรือจากขวาไปซ้าย
คาอธิบายภายในสัญลักษณ์ควรสั้น กะทัดรัด และเข้าใจง่าย
ทุกสัญลักษณ์ที่เขียนในแผนภาพต้องมีลูกศรแสดงทิศทางเข้า – ออก
ไม่ควรใช้เส้นเชื่อมโยงระหว่างสัญลักษณ์ที่อยู่ไกลมากๆ หรืออยู่ต่างหน้าการออกแบบ ควรใช้
ตัวเลขกากับเส้นเชื่อมโยงแทนการลากเส้นเชื่อมโยงยาวๆ
ผังงานควรมีการทบทวนความถูกต้องของลาดับการทางานก่อนนาไปใช้เป็นต้นแบบในการเขียน
โปรแกรมคอมพิวเตอร์
การออกแบบอัลกอริทึม 2 การเขียนโปรแกรมคอมพิวเตอร์
สัญลักษณ์ที่ใช้ในการออกแบบผังงาน
สัญลักษณ์มาตรฐานที่ใช้ในการออกแบบผังงานมีดังแสดงในตารางที่ 2-1
ตารางที่ 2-1 สัญลักษณ์ที่ใช้ในการออกแบบผังงาน
สัญลักษณ์ ความหมายในการใช้งาน
ใช้สาหรับแสดงจุดเริ่มต้น หรือจุดสิ้นสุดการทางานของผังงาน เช่น
จุดเริ่มต้น / สิ้นสุด Start End เริ่ม จบ
เส้นเชื่อมโยงสัญลักษณ์ต้องมีลูกศรกากับทุกเส้น เชื่อมโยงเพื่อใช้สาหรับ
เส้นเชื่อมโยง บอกทิศทางการไหลของข้อมูล
ในกรณีที่มีหลายเส้นเชื่อมโยงที่ต้องมารวมกันในจุดเดียวกัน ต้องใช้
สัญลักษณ์นี้ทาหน้าทีเ่ ป็นตัวรวมเส้นเชื่อมโยง เช่น
จุดเชื่อมต่อในหน้าเดียวกัน
การเขียนโปรแกรมคอมพิวเตอร์ 3 การออกแบบอัลกอริทึม
โค้ดรหัสเทียม หรือซูโดโค้ด
โค้ดรหัสเทียม หรือซูโดโค้ด (Pseudo Code) เป็นสิ่งที่จาลองแนวคิดในการพัฒนาโปรแกรมที่ใช้คาสั่ง
โปรแกรมคอมพิวเตอร์รวมกับประโยคภาษาอังกฤษ หรือภาษาไทย เพื่ออธิบายลาดับการทางานของโปรแกรม
คอมพิวเตอร์ที่จะทาการพัฒนาเพื่อแก้ไขปัญหา แต่โค้ดรหัสเทียมไม่ใช่คาสั่งภาษาโปรแกรมคอมพิวเตอร์จึงไม่
สามารถนาโค้ดรหัสเทียมไปทางานผ่านโปรแกรม IDE ได้ โค้ดรหัสเทียมเป็นเพียงแบบจาลองคาสั่งโปรแกรม
คอมพิวเตอร์แบบย่อๆ เพื่อเป็นต้นแบบในการนาไปใช้ในเขียนโปรแกรมภาษาคอมพิวเตอร์ต่อไป
ประโยชน์ของโค้ดรหัสเทียม
โค้ดรหัสเทียมเป็นเครื่องมือในการกาหนดโครงร่างกระบวนการทางานของโปรแกรมคอมพิวเตอร์ เป็น
ต้นแบบในการตรวจสอบ ปรับเปลี่ยนการทางานของโปรแกรมเมอร์ และนักวิเคราะห์ระบบก่อนทาการพัฒนา
โปรแกรมจริงๆ
หลักการเขียนโค้ดรหัสเทียม
ใช้คาหรื อประโยคภาษาอังกฤษ หรือภาษาไทยที่เข้า ใจได้ง่ายในการเขียนขั้นตอนการทางาน
เพื่อให้ผู้พัฒนาโปรแกรม หรือผู้ที่ต้องนาไปใช้งานต่อเข้าใจกระบวนการออกแบบได้ง่าย
หนึ่งบรรทัดในโค้ดรหัสเทียม ต้องทางานเพียงหนึ่งคาสั่งในการทางานเท่านั้น
ใช้วิธีการย่อหน้า ในการแบ่งแยกขอบเขตการทางานของกลุ่มคาสั่ง
เขียนลาดับคาสั่งจากบนลงล่าง และต้องมีเอาท์พุตเพียงข้อมูลเดียว หรือชุดข้อมูลเพียงชุดเดียว
คาสั่งที่ต้องทางานในลักษณะของกลุ่มคาสั่งเพื่อแก้ปัญหาใดปัญหาหนึ่งควรเขียนให้อยู่ในรูปแบบ
ของโมดูล หรือฟังก์ชั่นทาหน้าที่แก้ไขปัญหานั้นๆ เพียงปัญหาเดียว
รูปแบบการเขียนโค้ดรหัสเทียม
คาสั่งที่ใช้เขียนโค้ดรหัสเทียมแบ่งออกเป็นกลุ่มได้ดังนี้
การอ่านข้อมูล
การอ่านข้อมูลในการเขียนโค้ดรหัสเทียมใช้คาสั่งดังนี้ READ, INPUT หรือ GET ดังแสดงโครงสร้าง
การใช้งานในตัวอย่างที่ 2-1
ตัวอย่างที่ 2-1 โครงสร้างการใช้คาสั่งอ่านข้อมูลในโค้ดรหัสเทียม
READ variable1, variable2
INPUT variable3, variable4
GET variable5, variable6
การออกแบบอัลกอริทึม 4 การเขียนโปรแกรมคอมพิวเตอร์
คาอธิบาย
READ ใช้สาหรับการอ่านค่าที่มีอยู่แล้วมาเก็บไว้ในตัวแปร
INPUT และ GET ใช้สาหรับการรับค่าข้อมูลผ่านทางแป้นพิมพ์
variablexxx ตัวแปรที่ใช้สาหรับเก็บข้อมูลรับเข้ามา สามารถประกาศพร้อมกันหลายตัวแปรก็ได้
แต่ต้องคันด้วย “,” ระหว่างตัวแปรที่ต้องการเก็บข้อมูล
การแสดงข้อมูล
การแสดงข้อมูลในการเขียนโค้ดรหัสเทียมใช้คาสั่งดังนี้ DISPLAY, PRINT, PROMPT หรือ WRITE ดัง
แสดงโครงสร้างการใช้งานในตัวอย่างที่ 2-2
ตัวอย่างที่ 2-2 โครงสร้างการใช้คาสั่งแสดงข้อมูลในโค้ดรหัสเทียม
DISPLAY variable1, variable2
WRITE variable3, variable4
PRINT variable5, variable6
PROMPT variable7, variable8
คาอธิบาย
DISPLAY ใช้สาหรับการแสดงผลที่หน้าจอคอมพิวเตอร์
PRINT และ PROMPT ใช้สาหรับการพิมพ์ข้อความไปยังเครื่องพิมพ์
WRITE ใช้สาหรับบันทึกข้อมูลลงในไฟล์เอกสาร
การคานวณทางคณิตศาสตร์
การคานวณทางคณิตศาสตร์ในโค้ดรหัสเทียมใช้เครื่องหมาย +, -, *, /, % ในการแสดงรูปแบบการ
ประมวลผลได้เหมือนกับการใช้งานทั่วไป
การเปรียบเทียบค่า
การเปรียบเทียบค่าสองค่าเพื่อใช้สาหรับตรวจสอบเงื่อนไขในการทางานในโค้ดรหัสเทียมใช้สัญลักษณ์
ในการเปรียบเทียบดังแสดงในตารางที่ 2-2
ตารางที่ 2-2 แสดงสัญลักษณ์ในการเปรียบเทียบค่าในโค้ดรหัสเทียม
สัญลักษณ์ คาอธิบาย
== ตรวจสอบสองข้อมูลเท่ากันหรือไม่ เช่น
IF A == B THEN ถ้า A = 9 และ B = 9 แสดงว่าเงื่อนไขถูกต้อง
IF A == B THEN ถ้า A = 9 และ B = 8 แสดงว่าเงื่อนไขไม่ถูกต้อง
!= ตรวจสอบสองข้อมูลไม่เท่ากันหรือไม่ เช่น
IF A != B THEN ถ้า A = 9 และ B = 9 แสดงว่าเงื่อนไขไม่ถูกต้อง
IF A != B THEN ถ้า A = 9 และ B = 8 แสดงว่าเงื่อนไขถูกต้อง
การเขียนโปรแกรมคอมพิวเตอร์ 5 การออกแบบอัลกอริทึม
สัญลักษณ์ คาอธิบาย
< ตรวจสอบข้อมูลแรกน้อยกว่าข้อมูลที่สองหรือไม่ เช่น
IF A < B THEN ถ้า A = 9 และ B = 10 แสดงว่าเงื่อนไขถูกต้อง
IF A < B THEN ถ้า A = 9 และ B = 9 แสดงว่าเงื่อนไขไม่ถูกต้อง
IF A < B THEN ถ้า A = 9 และ B = 8 แสดงว่าเงื่อนไขไม่ถูกต้อง
<= ตรวจสอบข้อมูลแรกน้อยกว่าหรือเท่ากับข้อมูลที่สองหรือไม่ เช่น
IF A <= B THEN ถ้า A = 9 และ B = 10 แสดงว่าเงื่อนไขถูกต้อง
IF A <= B THEN ถ้า A = 9 และ B = 9 แสดงว่าเงื่อนไขถูกต้อง
IF A <= B THEN ถ้า A = 9 และ B = 8 แสดงว่าเงื่อนไขไม่ถูกต้อง
> ตรวจสอบข้อมูลแรกมากกว่าข้อมูลที่สองหรือไม่ เช่น
IF A > B THEN ถ้า A = 9 และ B = 8 แสดงว่าเงื่อนไขถูกต้อง
IF A > B THEN ถ้า A = 9 และ B = 9 แสดงว่าเงื่อนไขไม่ถูกต้อง
IF A > B THEN ถ้า A = 9 และ B = 10 แสดงว่าเงื่อนไขถูกต้อง
>= ตรวจสอบข้อมูลแรกมากกว่าหรือเท่ากับข้อมูลที่สองหรือไม่ เช่น
IF A >= B THEN ถ้า A = 9 และ B = 8 แสดงว่าเงื่อนไขถูกต้อง
IF A >= B THEN ถ้า A = 9 และ B = 9 แสดงว่าเงื่อนไขถูกต้อง
IF A >= B THEN ถ้า A = 9 และ B = 10 แสดงว่าเงื่อนไขไม่ถูกต้อง
การเปรียบเทียบในรูปแบบตรรกะ
การเปรี ย บเที ย บในรู ป แบบตรรกะเป็ น การตรวจสอบผลของเงื่ อ นไขว่ า มี ค่ า ตรงกั บ รู ปแบบการ
ตรวจสอบตรรกะที่กาหนดหรือไม่ ในโค้ดรหัสเทียมใช้สัญลักษณ์ในการเปรียบเทียบในรูปแบบตรรกะดังแสดง
ในตารางที่ 2-3
ตารางที่ 2-3 แสดงสัญลักษณ์ในการเปรียบเทียบเงื่อนไขแบบตรรกะในโค้ดรหัสเทียม
สัญลักษณ์ คาอธิบาย
AND ต้องการตรวจสอบทั้งสองเงื่อนไขถูกต้องหรือไม่
IF (A == B) AND (B == C) THEN ถ้า A = 9, B = 9 และ C = 9
ดังนั้น (A == B) เงื่อนไขถูกต้อง และ (B == C) เงื่อนไขถูกต้อง แสดงว่าทาใน
ขั้นตอนถัดไปได้ เนื่องจากทุกเงื่อนไขถูกต้อง
IF (A == B) AND (B == C) THEN ถ้า A = 9, B = 9 และ C = 8
ดังนั้น (A == B) เงื่อนไขถูกต้อง แต่ (B == C) เงื่อนไขไม่ถูกต้อง แสดงว่าไม่ทา
ในขั้นตอนถัดไป เนื่องจากมีเงื่อนไขใดเงื่อนไขหนึ่งไม่ถูกต้อง
การออกแบบอัลกอริทึม 6 การเขียนโปรแกรมคอมพิวเตอร์
สัญลักษณ์ คาอธิบาย
OR ต้องการตรวจสอบว่าเงื่อนไขใดเงื่อนไขหนึ่งถูกต้องหรือไม่
IF (A == B) OR (B == C) THEN ถ้า A = 9, B = 9 และ C = 9
ดังนั้น (A == B) เงื่อนไขถูกต้อง และ (B == C) เงื่อนไขถูกต้อง แสดงว่าทาใน
ขั้นตอนถัดไปได้ เนื่องจากทั้งสองเงื่อนไขถูกต้อง
IF (A == B) OR (B == C) THEN ถ้า A = 9, B = 9 และ C = 8
ดังนั้น (A == B) เงื่อนไขถูกต้อง แต่ (B == C) เงื่อนไขไม่ถูกต้อง แสดงว่าทาใน
ขั้นตอนถัดไปได้ เนื่องจากมีเงื่อนไขใดเงื่อนไงหนึ่งถูกต้อง
IF (A == B) OR (B == C) THEN ถ้า A = 8, B = 9 และ C = 8
ดังนั้น (A == B) เงื่อนไขไม่ถูกต้อง และ (B == C) เงื่อนไขไม่ถูกต้อง แสดงว่าไม่
ทาในขั้นตอนถัดไป เนื่องจากไม่มีเงื่อนไขใดเงื่อนไขหนึ่งถูกต้อง
NOT เปลี่ยนการตรวจสอบเงื่อนไข
IF NOT(A == B) THEN มีความหมายคือ ถ้า A ไม่เท่ากับ B เงื่อนไขถูกต้อง
IF NOT(A != B) THEN มีความหมายคือ ถ้า A เท่ากับ B เงื่อนไขถูกต้อง
การกาหนดเงื่อนไขในการตัดสินใจ
การกาหนดการตรวจสอบเงื่ อนไขเพื่ อ ใช้ ในการตั ดสิ น ใจในการทางานในโค้ด รหั ส เที ยมใช้ ค าสั่ ง
IF … THEN … ELSE IF ….. ELSE … ENDIF ดังแสดงโครงสร้างการใช้งานในตัวอย่างที่ 2-3
ตัวอย่างที่ 2-3 โครงสร้างการใช้คาสั่งตรวจสอบเงื่อนไขในโค้ดรหัสเทียม
IF <เงื่อนไขตรวจสอบที่ 1> THEN
สิ่งที่ทาเมื่อเงื่อนไขที่ 1 ถูกต้อง
ELSE IF <เงื่อนไขตรวจสอบที่ 2> THEN
สิ่งที่ทาเมื่อเงื่อนไขที่ 2 ถูกต้อง
ELSE
สิ่งที่ทาเมื่อเงื่อนไขที่ 1 และ 2 ไม่ถูกต้อง
ENDIF
คาอธิบาย
IF … THEN กาหนดการตรวจสอบเงื่อนไข และถ้าการตรวจสอบเงื่อนไขถูกต้องจะทาในส่วนที่
อยู่หลัง THEN
<เงื่อนไขตรวจสอบ> เงื่อนไขที่ใช้สาหรับการตัดสินในการทางาน
ELSE IF … THEN กาหนดการตรวจสอบเงื่อนไขในลาดับถัดมา ถ้าเงื่อนไขก่อนหน้าไม่ถูกต้อง
การเขียนโปรแกรมคอมพิวเตอร์ 7 การออกแบบอัลกอริทึม
ELSE กาหนดให้ทางานในกรณีการตรวจสอบเงื่อนไขก่อนหน้าทุกเงื่อนไขไม่ถูกต้อง จะทา
คาสั่งในส่วนนี้
ENDIF กาหนดให้เป็นจุดสิ้นสุดการตรวจสอบเงื่อนไข
ตัวอย่างการใช้ IF … THEN …. ELSE IF … ELSE … ENDIF ในการตรวจสอบแสดงผลเกรดจากคะแนน
ที่ป้อนเข้ามา ดังแสดงการออกแบบโค้ดรหัสเทียมในตัวอย่างที่ 2-4
ตัวอย่างที่ 2-4 การใช้งาน IF … THEN …. ELSE IF … ELSE … ENDIF ในรูปแบบโค้ดรหัสเทียม
1 INPUT SCORE
2 IF (SCORE >= 80)
3 DISPLAY “A”
4 ELSE IF (SCORE >= 75)
5 DISPLAY “B+”
6 ELSE IF (SCORE >= 70)
7 DISPLAY “B”
8 ELSE IF (SCORE >= 65)
9 DISPLAY “C+”
10 ELSE IF (SCORE >= 60)
11 DISPLAY “C”
12 ELSE IF (SCORE >= 55)
13 DISPLAY “D+”
14 ELSE IF (SCORE >= 50)
15 DISPLAY “D”
16 ELSE DISPLAY “F”
17 ENDIF
การทางานแบบวนซาแบบตรวจสอบเงื่อนไขหลังจากทางานภายในลูปคาสั่งแล้ว
การกาหนดให้มีการทางานแบบวนซ้าแล้ว ตรวจสอบเงื่อนไขภายหลังการทางานในโค้ดรหัสเทียมใช้
คาสั่ง REPEAT … UNTIL ในการทางานแบบวนซ้าและตรวจสอบเงื่อนไขภายหลัง ดังแสดงโครงสร้างการใช้
งานในตัวอย่างที่ 2-5
ตัวอย่างที่ 2-5 โครงสร้างการใช้คาสั่งแบบวนซ้าตรวจสอบเงื่อนไขภายหลังในรูปแบบโค้ดรหัสเทียม
REPEAT
สิ่งที่ทาในการวนซ้า
UNTIL <เงื่อนไขตรวจสอบ>
การออกแบบอัลกอริทึม 8 การเขียนโปรแกรมคอมพิวเตอร์
คาอธิบาย
REPEAT กาหนดขอบเขตเริ่มต้นในการทางานแบบวนซ้า
UNITL <เงื่อนไขตรวจสอบ> กาหนดจุดสิ้น สุดในการวนซ้าพร้อมทั้งตรวจสอบเงื่อนไขว่ายังถูกต้ อง
หรือไม่ ถ้ายังถูกต้องให้วนกลับไปทางานในส่วน REPEAT ซ้าอีกครั้ง แต่
ถ้าเงื่อนไขไม่ถูกจะทาการจบการทางานแบบวนซ้า
ตัวอย่างในการทาวนซ้าการทางานจาก 0 ถึง 10 ด้วย REPERT .. UNITL ดังแสดงในรูปที่ 2-6
ตัวอย่างที่ 2-6 การใช้งาน REPEAT … UNITL ในรูปแบบโค้ดรหัสเทียม
1 count = 0
2 REPEAT
3 DISPLAY count
4 count = count + 1
5 UNITL (count != 10)
การทางานแบบวนซาแบบตรวจสอบเงื่อนไขก่อนทางานภายในลูปคาสั่ง
การทางานแบบวนซ้าแบบตรวจสอบเงื่อนไขก่อนทางานภายในลูปคาสั่ง ในโค้ดรหัสเทียมใช้ คาสั่ ง
WHILE … ENDWHILE ดังแสดงโครงสร้างการใช้งานในตัวอย่างที่ 2-7
ตั วอย่า งที่ 2-7 โครงสร้ างการทางานแบบวนซ้าแบบตรวจสอบเงื่ อนไขก่อนทางานภายในลู ป ในรู ป แบบ
โค้ดรหัสเทียม
WHILE <เงื่อนไขตรวจสอบ>
สิ่งที่ทาในการวนซ้า
ENDWHILE
คาอธิบาย
WHILE <เงื่อนไขตรวจสอบ> กาหนดขอบเขตเริ่มต้นในการทางานแบบวนซ้า และตรวจสอบเงื่อนไขว่า
ถูกต้องหรือไม่ ถ้าเงื่อนไขถูกต้องให้ทาคาสั่งภายในลูป WHILE
ENDWHILE กาหนดขอบเขตสิ้นสุดในการทางานแบบวนซ้าในรูปแบบ WHILE เมื่อถึง
คาสั่ งนี้ แล้ ว จะกลั บไปทางานในคาสั่ง WHILE อีกครั้งเพื่อตรวจสอบว่า
เงื่อนไขยังถูกต้องอยู่หรือไม่ ถ้าถูกต้องจะทาในลูป WHILE ต่อ
การเขียนโปรแกรมคอมพิวเตอร์ 9 การออกแบบอัลกอริทึม
ตัวอย่างในการทาวนซ้าการทางานจาก 0 ถึง 10 ด้วย WHILE … ENDWHILE ดังแสดงในรูปที่ 2-8
ตัวอย่างที่ 2-8 การใช้งาน WHILE … ENDWHILE ในรูปแบบโค้ดรหัสเทียม
1 count = 0
2 WHILE (count != 10)
3 DISPLAY count
4 count = count + 1
5 ENDWHILE
การท างานแบบวงซาแบบกาหนดการเพิ่ ม หรื อ ลดข้ อมู ล ส าหรั บ ใช้ ใ นการตรวจสอบ และ
ตรวจสอบเงื่อนไขภายในคาสั่งการวนซา
การทางานแบบวนซ้าแบบกาหนดขอบเขตการเพิ่มหรือลดข้อมูล สาหรับใช้ในการตรวจสอบ และ
ตรวจสอบเงื่อนไขภายในคาสั่งวนซ้า ในโค้ดรหัสเทียมใช้คาสั่ง FOR … ENDFOR
การท างานในรู ป แบบนี้ จ ะก าหนดค่ า เริ่ ม ต้ น ก่ อ นเริ่ ม วนลู ป ในการท างาน เช่ น count = 0 คื อ
กาหนดให้ตัวแปร count เป็นตัวแปรทาหน้าที่เก็บค่าในการตรวจสอบในการวนซ้าพร้อมทั้งกาหนดค่าเริ่มต้น
ให้ตัวแปรนี้คือ 0 แล้วต้องกาหนดค่าสุดท้ายในการทางาน เช่น 10 หมายความว่าตัวแปร count จะต้องถูก
เพิ่มขึ้นไปเลื่อยๆ จนถึงค่า 10 แล้วลูปการทางานแบบวนซ้าจะหยุดการทางาน ดังแสดงโครงสร้างการใช้งานใน
ตัวอย่างที่ 2-9
ตัวอย่างที่ 2-9 โครงสร้างการใช้คาสั่งแบบวนซ้า FOR … ENDFOR ในรูปแบบโค้ดรหัสเทียม
FOR <variable> = ค่าเริ่มต้น to ค่าสุดท้าย
สิ่งที่ทาในการวนซ้า
ENDFOR
คาอธิบาย
FOR กาหนดขอบเขตเริ่มต้นในการทางานแบบวนซ้า
<variable> ตัวแปรที่ใช้สาหรับการตรวจสอบในการวนซ้าในการทางาน
ค่าเริ่มต้น ค่าเริ่มต้นในการทางานในวนซ้า
ค่าสุดท้าย ค่าสุดท้ายที่ใช้สาหรับตรวจสอบเพื่อหยุดการวนซ้า
ตัวอย่างในการทาวนซ้าการทางานจาก 0 ถึง 10 ด้วย FOR … ENDFOR ดังแสดงในรูปที่ 2-10
ตัวอย่างที่ 2-10 การใช้งาน FOR … ENDFOR ในรูปแบบโค้ดรหัสเทียม
1 FOR (count = 1 to 10)
2 DISPLAY count
3 ENDFOR
การออกแบบอัลกอริทึม 10 การเขียนโปรแกรมคอมพิวเตอร์
ตัวอย่างการใช้งานการออกแบบอัลกอริทมึ
รูปแบบการออกแบบอัลกอริทึมไม่จาเป็น ต้องใช้เพื่อการออกแบบโปรแกรมคอมพิวเตอร์ เพียงอย่าง
เดียวสามารถนาไปใช้ในการออกแบบลาดับขั้นตอนในชีวิตประจาวันก็ได้ ในหัวข้อนี้จะยกตัวอย่างการใช้งาน
การออกแบบอัลกอริทึมทั้งในรูปแบบชีวิตประจาวัน การออกแบบลาดับขั้นตอนในการพัฒนาโปรแกรม และ
การออกแบบโปรแกรมเพื่อควบคุมการทางานฮาร์ดแวร์ด้วยการเขียนโปรแกรมคอมพิวเตอร์
การออกแบบอัลกอริทึมในชีวิตประจาวัน
การท างานหลายอย่ า งในชี วิ ต ประจ าวั น จะมี ลั ก ษณะที่ เ ป็ น ล าดั บ ขั้ น ตอน เพื่ อ เป็ น การสร้ า ง
ความคุ้ น เคยกั บ สั ญ ลั ก ษณ์ รู ป ภาพต่ า งๆ ที่ ใ ช้ ส าหรั บ การออกแบบผั ง งาน จึ ง ล าดั บ ขั้ น ตอนในการใช้
ชีวิตประจาวันมาเป็นตัวอย่างในการออกแบบผังงาน ดังแสดงตัวอย่างเกี่ยวกับการส่งจดหมายดังนี้
ตัวอย่างที่ 2-11 ผังงานแสดงขั้นตอนการส่งจดหมาย
การเขียนโปรแกรมคอมพิวเตอร์ 11 การออกแบบอัลกอริทึม
ตัวอย่างที่ 2-12 ผังงานและโค้ดรหัสเทียมตรวจสอบเงื่อนไขเกี่ยวกับแสดงปริมาณการรับประทานยาตามอายุ
มีข้อกาหนดังนี้
อายุมากกว่า 10 ปี รับประทานครั้งละ 2 ช้อนชา
อายุมากกว่า 3 ปี ถึง 10 ปี รับประทานครั้งละ 1 ช้อนชา
อายุมากกว่า 1 ปี ถึง 3 ปี รับประทานครั้งละ 1/2 ช้อนชา
แรกเกิดถึง 1 ปี ห้ามรับประทาน
เริ่มต้น
จบ
รูปที่ 2-2 แสดงผังงานแสดงปริมาณการับประทานยาตามอายุ
1 INPUT Age
2 IF (Age > 10) THEN
3 DISPLAY “รับประทานครั้งละ 2 ซ้อนชา”
4 ELSE IF (Age > 3) THEN
5 DISPLAY “รับประทานครั้งละ 1 ซ้อนขา”
6 ELSE IF (Age > 1) THEN
7 DISPLAY “รับประทานครั้งละ 1/2 ซ้อนชา”
8 ELSE DISPLAY “ห้ามรับประทาน”
9 ENDIF
รูปที่ 2-3 แสดงโค้ดรหัสเทียมแสดงปริมาณการรับประทายยาตามอายุ
การออกแบบอัลกอริทึม 12 การเขียนโปรแกรมคอมพิวเตอร์
ตั ว อย่ า งที่ 2-14 ผั ง งานและโค้ ด รหั ส เที ย มอ่ า นค่ า ข้ อ มู ล เข้ า มาเก็ บ ไว้ ใ นตั ว แปร A และ B แล้ ว ท าการ
เปรียบเทียบข้อมูลในตัวแปรทั้งสอง โดยมีเงื่อนไขดังนี้
ถ้าข้อมูลใน A มากกว่า B ให้คานวณหาค่า result = A - B
ถ้าข้อมูลใน B มากกว่าหรือเท่ากับ A ให้คานวณหาค่า result = A + B
การเขียนโปรแกรมคอมพิวเตอร์ 13 การออกแบบอัลกอริทึม
ตัวอย่าง 2-15 ผังงานและโค้ดรหัสเทียมการทางานาแบบวนซ้าในการบวกเลขตั้งแต่ 0 ถึง 99 จึงหยุดการบวก
1 count = 0, result = 0
2 WHILE (count < 100)
3 result = result + 1
4 DISPLAY result
5 count = count + 1
6 ENDWHILE
รูปที่ 2-8 แสดงโค้ดรหัสเทียมวนซ้าในการบวกเลขตั้งแต่ 0 ถึง 99
การออกแบบอัลกอริทึม 14 การเขียนโปรแกรมคอมพิวเตอร์
ตัวอย่าง 2-16 ผังงานและโค้ดรหัสเทียมตรวจสอบอุณหภูมิในโรงเรือนแล้วปิดพัดลม มีเงื่อนไขดังนี้
อุณหภูมิน้อยกว่า 32 องศาเซลเซียส (°C) ให้พัดลมหยุดการทางาน
อุณหภูมิอยู่ในช่วง 32 – 35 องศาเซลเซียสให้พัดลมเปิด 5 นาที แล้วปิด 5 นาทีสลับไปเลยๆ
อุณหภูมิเกินกว่า 35 องศาเซลเซียสให้เปิดพัดลมตลอดเวลา
การเขียนโปรแกรมคอมพิวเตอร์ 15 การออกแบบอัลกอริทึม
1 INPUT Temp
2 IF Temp < 32 THEN
3 Fan = OFF
4 ELSE IF (Temp >= 32) AND (Temp <= 35) THEN
5 IF (Time == 5) THEN
6 IF (Fan == ON) THEN
7 Fan = OFF
8 ELSE Fan = ON
9 Time = 0
10 ENDIF
11 ELSE Time = Time + 1
12 ENDIF
13 ELSE Fan = ON
14 ENDIF
15 DISPLAY Fan
รูปที่ 2-10 แสดงโค้ดรหัสเทียมควบคุมการทางานพัฒนาตามค่าอุณหภูมิ
สรุปบทที่ 2
บทนี้ ไ ด้ ก ล่ า วเกี่ ย วกั บ เครื่ อ งมื อ ที่ ใ ช้ใ นการออกแบบอั ล กอริทึ ม คื อ ผั ง งาน หรื อ โฟลชาร์ ต และ
โค้ดรหัสเทียม หรือซูโดโค้ด ทั้งสองเป็นเครื่องมือที่ช่วยในการแสดงลาดับขั้นตอน และวิธีการแก้ไขปัญหา
ก่อนที่พัฒนาโปรแกรมคอมพิวเตอร์
ผังงานเป็นการออกแบบด้วยการใช้สัญลักษณ์รูปภาพ และลูกศร มาเป็นเครื่องมือในการออกแบบ
ลาดับขั้นตอนการทางานในการแก้ไขปัญหา ผังงานสามารถตรวจสอบ และแก้ไขข้อผิดพลาดได้ง่าย
โค้ดรหัสเทียมเป็นเครื่องมือที่ใช้ประโยคภาษาอังกฤษ หรือภาษาอื่นมารวมกับคาสั่งภาษาคอมพิวเตอร์
โดยไม่อ้างอิงภาษาคอมพิวเตอร์ภาษาใดในการออกแบบลาดับขั้นตอนการทางานของโปรแกรม ทาให้ผู้ที่
พัฒนาโปรแกรม หรือผู้ที่ศึกษาโค้ดโปรแกรมทาความเข้าใจหลักการทางานของโปรแกรมได้ง่ายกว่า การศึ กษา
โค้ดโปรแกรมคอมพิวเตอร์ที่พัฒนาเสร็จแล้วในกรณีต้องกลับมาศึกษากระบวนการทางานของโปรแกรม และ
โค้ดรหัสเทียงยังใช้เป็นเครื่องมือช่วยในการพัฒนาโปรแกรมได้
การพัฒนาโปรแกรมที่ดีต้องมีการออกแบบอังกอริทึมก่อนการพัฒนาโปรแกรมเพื่อให้ การพัฒ นา
โปรแกรมทางานได้เร็วกว่า และสามารถวางแผนการพัฒนาโปรแกรมคอมพิวเตอร์ได้อย่างเป็นระบบ
การออกแบบอัลกอริทึม 16 การเขียนโปรแกรมคอมพิวเตอร์
แบบฝึกหัดบทที่ 2
1. ให้เขียนผังงานและโค้ดรหัสเทียมรับค่าสองค่าแล้วให้ทาการเปรียบเทียบว่าค่าไหนมีค่าน้อยที่สุด แล้วให้
แสดงค่าที่น้อยที่สุดออกมาที่หน้าจอ
2. ให้เขียนผังงานและโค้ดรหัสเทียมเปลี่ยนสีของความต้านทานให้เป็นค่าตัวเลขของค่าความต้านทาน โดยให้
รับเพียง 1 ค่าสีเพื่อทาการเปลี่ยนให้เป็นค่าตัวเลขของค่าความต้านทาน
3. ให้เขียนผังงานและโค้ดรหัสเทียมรับค่าจานวน 10 จานวน แล้วนาข้อมูลมาทาการจัดเรียงจากน้อยไปหา
มาก
4. ให้เขียนผังงานและโค้ดรหัสเทียมเปลี่ยนค่าตัวเลขจานวนเต็มที่รับเข้ามา (หน่วยนาที) ให้เป็นเวลาหน่วย
ชั่วโมง และนาที
5. ให้เขียนผังงานและโค้ดรหัสเทียมคานวณการทอนเงิน ให้รับข้อมูลตัวเลขเข้ามา 2 จานวนคือ ยอดเงินที่
ลูกค้าซื้อ และจานวนเงินที่ลูกค้าจ่าย แล้วให้คานวณว่าต้องถอนแบงก์ 1000, 500, 100, 50, 20 เหรียญ
10, 5, 2, 1, 0.50 และ 0.25 บาท จานวนอย่างละเท่าไร
6. ให้เขียนผังงานและโค้ดรหัสเทียมบังคับรถให้เดินตามเส้นสีดาด้วยการใช้เซ็นเซอร์จะมีตัวรับและตัวส่ง โดย
ถ้าเป็นพื้นที่ขาวตัวรับจะสามารถรับแสงจากตัวส่งได้เสมอเนื่องจากแสงจากตัวส่งสามารถสะท้อนกลับมาได้
แต่ถ้าเป็นพื้นสีดาตัวรับจะไม่ได้รับสัญญาณจากตัวส่ง เนื่องจากแสงไม่สามารถสะท้อนกลับมาได้ ดังนั้นจะ
ใช้เซ็นเซอร์ 2 ตัวติดอยู่ด้านข้างของรถ โดยมีเงื่อนไขดังนี้
ถ้าเซ็นเซอร์ทั้งสองตัวรับค่าสะท้อนกลับได้ให้มอเตอร์ทั้งซ้ายและขวาทางาน
ถ้าเซ็นเซอร์ซ้ายได้รับสัญญาณสะท้อนกลับ และเซ็นเซอร์ขวาไม่ได้รับสัญญาณสะท้อนกลับ ให้รถ
หันซ้ายด้วยการให้เฉพาะมอเตอร์ขวาทางาน
ถ้าเซ็นเซอร์ซ้ายไม่ได้รั บสัญญาณสะท้อนกลับ และเซ็นเซอร์ขวาได้รับสัญญาณสะท้อนกลับให้รถ
หันขวาด้วยการให้เฉพาะมอเตอร์ซ้ายทางาน
ถ้าเซ็นเซอร์ทั้งสองตัวไม่ได้รับสัญญาณสะท้อนให้รถหยุดเดินด้วยการกาหนดให้มอเตอร์ซ้าย และ
ขวาหยุดทางาน
การเขียนโปรแกรมคอมพิวเตอร์ 17 การออกแบบอัลกอริทึม