การแสดงขั้นตอนวิธีด้วยการบรรยายของโปรแกรมแบบลำดับ(Sequence)และทางเลือก(Selection) 1204102 Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์ อ. สำรวน เวียงสมุทร อ.ณภัทร สักทอง อ.อุมาภรณ์ สายแสงจันทร์
Sequential vs. Selection โปรแกรมแบบลำดับ: โปรแกรมทำงานโดยประมวลผลคำสั่งตามลำดับแบบบนลงล่าง โปรแกรมจะเริ่มทำงานหลังคำสั่ง Start แล้วดำเนินการต่อไปเรื่อยๆจนกว่าจะพบคำสั่ง End/Exit หรือReturn โปรแกรมแบบทางเลือก: โปรแกรมจะใช้ชุดคำสั่ง If/then/else เพื่อกำหนดการทำของโปรแกรม โดยโปรแกรมจะบอกกับคอมพิวเตอร์ว่า หากเงื่อนไขหลัง if เป็นจริง ให้ทำการประมวลผลชุดคำสั่งหลัง then มิเช่นนั้น ให้ทำการประมวลผลชุดคำสั่งหลัง else 1204102 Problem Solving
Program Design : Algorithm อัลกอริทึม หมายถึง ขั้นตอนวิธี ซึ่งจะอธิบายว่างาน ๆ นั้นทำอย่างไร โดยประกอบด้วยชุดลำดับเป็นขั้นเป็นตอนที่ชัดเจน และรับประกันได้ว่าเมื่อได้ปฎิบัติอย่างถูกต้องตามขั้นตอนจนจบ ก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ รูปแบบการนำเสนออัลกอริทึม มีดังนี้ นำเสนอด้วยภาพ/แผนภาพ บรรยาย รหัสเทียม (Pseudo-code) ผังงาน (Flowchart) 1204102 Problem Solving
คุณสมบัติของอัลกอริทึม เป็นกระบวนวิธีการที่สร้างขึ้นจากกฏเกณฑ์ กระบวนวิธีการ คือ กลุ่มของขั้นตอนที่อยู่รวมกันเพื่อใช้แก้ปัญหาต่าง ๆ เพื่อให้ได้มาซึ่งผลลัพธ์ กฏเกณฑ์ที่สร้างอัลกอริทึมต้องไม่คลุมเครือ มีระบบ ระเบียบ อ่านแล้วไม่สับสน 1204102 Problem Solving
คุณสมบัติของอัลกอริทึม การประมวลผลต้องเป็นลำดับขั้นตอน การประมวลผลต้องเป็นลำดับตามขั้นตอนที่แน่นอน กระบวนวิธีการต้องให้ผลลัพธ์ตามที่กำหนดในปัญหา อัลกอริทึมต้องมีจุดสิ้นสุด เนื่องจากคอมพิวเตอร์จะไม่สามารถประมวลผลแบบไม่สิ้นสุดได้ 1204102 Problem Solving
เกณฑ์การพิจารณา ประสิทธิภาพอัลกอริทึม อัลกอริทึมต้องใช้เวลาในการดำเนินการน้อยที่สุด อัลกอริทึมต้องใช้หน่วยความจำน้อยที่สุด อัลกอริทึมต้องมีความยืดหยุ่น อัลกอริทึมต้องใช้เวลาในการพัมนาน้อยที่สุด อัลกอริทึมต้องง่ายต่อความเข้าใจ 1204102 Problem Solving
รูปแบบการนำเสนออัลกอริทึม การบรรยาย (Narrative Description) เป็นการใช้คำพูดบรรยายออกมาเป็นตัวอักษร การเขียนผังงาน (Flowchart) เป็นการนำเสนอในรูปแผนภาพ ซึ่งประกอบไปด้วยสัญลักษณ์ต่าง ๆ ที่ได้มีการกำหนดไว้เป็นมาตรฐาน การเขียนรหัสจำลอง (Pseudo Code) เป็นการใช้ชุดรหัสคำสั่งเพื่อเลียนแบบคำสั่งโปรแกรมคอมพิวเตอร์อย่างย่อ ๆ 1204102 Problem Solving
การแสดง Algorithm : นำเสนอด้วยภาพ 1204102 Problem Solving
การแสดง Algorithm : บรรยาย (1) การล้างรถ ฉีดน้ำล้างรถให้ทั่วเพื่อขจัดฝุ่น และเศษดินทรายต่างๆ ออก ผสมแชมพูล้างรถ 1 ฝาต่อน้ำครึ่งถัง นำฟองน้ำชุบน้ำที่ผสมแชมพู เช็ดทำความสะอาดให้ทั่ว ฉีดน้ำล้างให้สะอาด ใช้ผ้านุ่มเช็ดให้แห้ง 1204102 Problem Solving
ตัวอย่างการแสดง Algorithm : บรรยาย (2) ขั้นตอนการลงทะเบียน ในการลงทะเบียนเรียนภาคการศึกษาปกติจะสามารถทำการลงทะเบียนเรียนได้ไม่เกินกว่า 21 หน่วยกิต คอมพิวเตอร์จะต้องทำการสะสมค่าหน่วยกิตของแต่ละรายวิชาที่นักศึกษาลงทะเบียนเรียน หากมีการลงทะเบียนเรียนเกินกว่านั้นก็จะต้องแสดงข้อความเตือน ส่วนการลงทะเบียนเรียนภาคฤดูร้อนก็เป็นไปในลักษณะเดียวกันแต่จำนวนหน่วยกิตสูงสุดที่สามารถลงทะเบียนได้คือ 9 หน่วยกิต 1204102 Problem Solving
การแสดง Algorithm : การเขียนโปรแกรมแบบบรรยาย (3) กำหนดตัวแปรสำหรับค่า ค่าเริ่มต้น (Initialization) ข้อมูลรับเข้า (Input) ข้อมูลแสดงผล (Output) ค่าที่ใช้ในการคำนวณ (Computation) แสดงขั้นตอนการทำงานแบบบรรยาย รับค่าจาก Input แสดงวิธี/สูตรที่ใช้ในการคำนวณ แสดงผลลัพธ์ที่ได้ 1204102 Problem Solving
Example 3.1 : Algorithm แสดงการหาผลรวมตัวเลข 3 จำนวน Input Process Output ตัวเลขตัวที่ 1 ตัวเลขตัวที่ 2 ตัวเลขตัวที่ 3 อ่านตัวเลขทั้ง 3 จำนวนเข้ามา บวกตัวเลขทั้ง 3 จำนวน พิมพ์ผลรวม ผลรวมของตัวเลข 3 จำนวน กำหนดตัวแปร Input num1, num2, num3 Output sum กำหนดขั้นตอนการทำงาน อ่าน num1, num2, num3 คำนวณค่า sum = num1+num2+num3 พิมพ์ผลรวม sum 1204102 Problem Solving
Example 3.2 : Algorithm แสดงตัวเลขมากสุดจากตัวเลข 2 จำนวน (แบบที่ 1) Input Process Output ตัวเลขตัวที่ 1 ตัวเลขตัวที่ 2 อ่านตัวเลขทั้ง 2 จำนวนเข้ามา เปรียบเทียบตัวเลขทั้ง 2 จำนวน พิมพ์ตัวเลขมากที่สุด ผลของตัวเลขมากที่สุด กำหนดตัวแปร Input num1, num2 Output max กำหนดขั้นตอนการทำงาน (ไม่ใช้ตัวแปร max) อ่าน num1, num2 เปรียบเทียบตัวเลขทั้ง 2 ถ้า num1 > num2 ให้พิมพ์ num1 ถ้า num1 < num2 ให้พิมพ์ num2 ถ้า num1 = num2 ให้พิมพ์ “ค่าทั้งสองเท่ากัน” ไม่ใช้ max ก็ได้ 1204102 Problem Solving
Example 3.2 : Algorithm แสดงตัวเลขมากสุดจากตัวเลข 2 จำนวน (แบบที่ 2) กำหนดตัวแปร Input num1, num2 Output max กำหนดขั้นตอนการทำงาน อ่าน num1, num2 เปรียบเทียบตัวเลขทั้ง 2 ถ้า num1 >= num2 ให้ max = num1 ถ้า num1 < num2 ให้ max = num2 พิมพ์ค่า max 1204102 Problem Solving
Example 3.3 : Algorithm แสดงการหาผลรวมตัวเลข 1-5 Input Process Output ตัวเลข 1 ตัวเลข 2 … ตัวเลข 5 อ่านค่า 1-5 เข้ามา บวกตัวเลขตั้งแต่ 1-5 พิมพ์ผลรวม ผลรวมของตัวเลข 1-5 กำหนดตัวแปร Input num Output sum กำหนดขั้นตอนการทำงาน กำหนด sum = 0, num = 1 sum = sum + num ตรวจสอบค่า num ถ้า num < 5 ให้ num = num + 1 และกลับไปทำขั้นตอนที่ 2 ถ้า num >= 5 ให้ พิมพ์ค่า sum และหยุดการทำงาน อาจเปลี่ยนแปลงได้เช่น 1.num <= 4 คู่กับ num > 4 2.num <> 5 คู่กับ num = 5 1204102 Problem Solving
การตรวจสอบความถูกต้องของอัลกอริทึม (Testing by Hand/ Debugging by Hand) สร้างกระดาษทด ให้เปรียบเสมือนว่าเป็นหน่วยความจำ กำหนดตารางค่าตัวแปรต่างๆ ที่กำหนดขึ้น ดำเนินการตามขั้นตอนของอัลกอริทึมทีละขั้นตอน เปลี่ยนแปลงค่าตัวแปรต่างๆ ในแต่ละคำสั่งการทำงานของอัลกอริทึม ตรวจสอบผลลัพธ์จากค่าตัวแปรต่างๆ ในแต่ละครั้ง ถ้ามีจำนวนรอบในการทำงานมาก ให้กำหนดจำนวนรอบเพื่อทดสอบการทำงานของอัลกอริทึม อย่างน้อย 3-5 รอบ ลองคำนวณจากสูตรด้วยมือเพื่อหาคำตอบที่ถูกต้องก่อนเริ่มดำเนินการจำลองการทำงานในกระดาษทด 1204102 Problem Solving
Example 3.4 : ตรวจสอบอัลกอริทึมการหาผลรวมตัวเลข 1-5 (แบบที่ 1) กำหนดขั้นตอนการทำงาน กำหนด sum = 0, num = 1 sum = sum + num ตรวจสอบค่า num ถ้า num < 5 ให้ num = num + 1 และกลับไปทำขั้นตอนที่ 2 ถ้า num >= 5 ให้ พิมพ์ค่า sum และหยุดการทำงาน ทดลองบวกเลข 1 ถึง 5 ด้วยมือก่อน sum = 1+2+3+4+5 = 15 ทดสอบอัลกอริทึม รอบ sum num เริ่มต้น 1 0+1=1 1+1=2 2 1+2=3 2+1=3 3 3+3=6 3+1=4 4 6+4=10 4+1=5 5 10+5=15 5+1=6 1204102 Problem Solving
Example 3.4 : ตรวจสอบอัลกอริทึมแสดงการหาผลรวม ตัวเลข 1-5 (แบบที่ 2) รอบ sum num เริ่มต้น 1 2 3 4 5 ลองหาผลรวมของตัวเลข 1-5 แบบอื่น พร้อมทดสอบผลลัพธ์ที่ได้ว่าอัลกอริทึมผิดพลาดหรือไม่ เช่น กำหนดขั้นตอนการทำงาน กำหนด sum = 0, num = 1 ตรวจสอบค่า num ถ้า num < 5 ให้ sum = sum + num num = num + 1 และกลับไปทำขั้นตอนที่ 2.1 ถ้า num >= 5 ให้ พิมพ์ค่า sum และหยุดการทำงาน แก้ไขโดยกำหนดค่า num <= 5 หรือ num <6 เป็นต้น ถ้าผิดพลาดจะแก้ไขได้อย่างไรบ้างเพื่อให้ผลลัพธ์ถูกต้อง 1204102 Problem Solving
Example 3.4 : ตรวจสอบอัลกอริทึมแสดงการหาผลรวม ตัวเลข 1-5 (แบบที่ 1) กำหนด num = 0 sum = sum + num ตรวจสอบค่า num ถ้า num < 5 ให้ num = num + 1 และกลับไปทำขั้นตอนที่ 2 ถ้า num >= 5 ให้ พิมพ์ค่า sum และหยุดการทำงาน รอบ sum num เริ่มต้น 1 2 3 4 5 ถ้า sum ไม่กำหนดค่าเริ่มต้นจะเกิดอะไรขึ้น 1204102 Problem Solving
Example 3.5 : Algorithm แสดงตัวเลขมากสุดจากตัวเลข 2 กำหนดขั้นตอนการทำงาน อ่าน num1, num2 เปรียบเทียบตัวเลขทั้ง 2 ถ้า num1 >= num2 ให้ max = num1 ถ้า num1 < num2 ให้ max = num2 พิมพ์ค่า max num1 num2 max 1204102 Problem Solving
Example 3.6 : ทดสอบอัลกอริทึมแสดงเลขคู่จาก เลขจำนวนเต็ม 1 ถึง 10 กำหนดตัวแปร Input : num Output : ans อัลกอริทึม กำหนดให้ num มีค่าเท่ากับ 1 กำหนดให้ ans = num MOD 2 // MOD คือการหารเอาเศษ ถ้าคำตอบของ ans = 0 ให้แสดงค่า num ออกทางหน้าจอ ตรวจสอบค่า num ถ้า num <> 10 ให้ num = num + 1 กลับไปทำขั้นตอนที่ 2 ถ้า num = 10 ให้ จบการทำงาน รอบ num ans เริ่มต้น 1 2 3 4 5 6 7 8 9 10 1204102 Problem Solving
Example 3.7 : เขียนอัลกอริทึมจาก Exercise 1.2 Output พื้นที่สีเหลี่ยมผืนผ้า = AREA กำหนดตัวแปร Input ความกว้าง = WIDTH ความยาว = LENGTH อัลกอริทึมแบบที่ 1 (ไม่ใช้ตัวแปร) เริ่มต้น อ่านค่าความกว้าง และค่าความยาว คำนวณพื้นที่สี่เหลี่ยมผืนผ้า พื้นที่= กว้าง * ยาว พิมพ์ค่าพื้นที่สี่เหลี่ยมผืนผ้า จบการทำงาน อัลกอริทึมแบบที่ 2 (ใช้ตัวแปร) เริ่มต้น อ่านค่า WIDTH และ LENGTH คำนวณพื้นที่สี่เหลี่ยมผืนผ้า AREA = WIDTH * LENGTH พิมพ์ผลลัพธ์ AREA จบการทำงาน ให้นิสิตลองทดสอบอัลกอริทึม 1204102 Problem Solving
Exercise 3.1 : Operator & Precedence จงเขียนนิพจน์ทางคณิตศาสตร์ต่อไปนี้ให้อยู่ในรูปของการทำงานของคอมพิวเตอร์ที่มีลำดับถูกต้อง และหาผลลัพธ์ที่ได้ จงเขียนนิพจน์การเปรียบเทียบและตรรกะต่อไปนี้ในรูปการทำงานของคอมพิวเตอร์และลำดับที่ถูกต้อง และหาผลลัพธ์ที่ได้ ถ้า x = 0, y = 5 not (y >= 4) or (x < 3) ถ้า a = 0, b = 5, c = 5 (a<>b) or (b=c) and (c=5) ถ้า a = 0, b = 5, c = 5 not (a<b) and (b<c) or not (a>c) เฉลย-math 1.(6-2)+(3*4) 2.4+(2/(1-3)) 3.3*((12/(4-2))+(2**5)) 4.(3-(5*4))/6 เฉลย-relational&logical 1.(not(y>=4)) or (x<3) 2.(a<>b) or ((b=c) and (c=5)) 3.((not(a<b) and (b<c)) or (not (a>c)) 1204102 Problem Solving
Exercise 3.2 : Problem Solving & Algorithm จงออกแบบโปรแกรม โดยแสดงขั้นตอนการวิเคราะห์ปัญหา แสดงอัลกอริทึม และตรวจสอบอัลกอริทึมในการทำงานของโจทย์ต่อไปนี้ จงหาเส้นรอบวงของวงกลม กำหนดให้รับค่ารัศมี (R) เข้ามา จงหาเลขคี่จาก เลขจำนวนเต็ม 1 ถึง 10 จงหาค่าที่มากที่สุดจากตัวเลข 3 จำนวน โดยกำหนดให้รับตัวเลขเข้ามาเป็น num1, num2, num3 จงหาค่าที่น้อยที่สุดจากตัวเลข 3 จำนวน โดยกำหนดให้รับตัวเลขเข้ามาเป็น num1, num2, num3 จงหาค่าที่น้อยที่สุด และมากที่สุดจากตัวเลข 10 จำนวน จงเปรียบเทียบค่าข้อมูลที่เก็บอยู่ในตัวแปร X โดยมีเงื่อนไขดังนี้ ถ้า X > 0 ให้พิมพ์คำว่า “POSITIVE NUMBER” ถ้า X < 0 ให้พิมพ์คำว่า “NEGATIVE NUMBER” ถ้า X = 0 ให้พิมพ์คำว่า “ZERO NUMBER จงหาเลขคู่จาก เลขจำนวนเต็ม 1 ถึง N เมื่อกำหนดให้รับค่า N เข้ามา จงหาผลรวมของเลข 1, 2, 3, …, N เมื่อกำหนดให้รับค่า N เข้ามา จงหาผลรวมของตัวเลขจำนวนเต็ม 20 ตัว 1204102 Problem Solving
Exercise 3.3 ตัวอย่างการวิเคราะห์งาน บริษัทแห่งหนึ่งต้องการทำบัญชีเงินเดือนของพนักงาน โดยหักภาษีไว้ด้วย และมีเงื่อนไขในการคำนวณภาษีเป็นดังนี้ รายได้น้อยกว่าหรือเท่ากับ 2,000 บาท ยกเว้นไม่ต้องเสียภาษี รายได้มากกว่า 2,000 บาทขึ้นไปเสียภาษี 4% ของรายได้ จงหาจำนวนเงินที่พนักงานแต่ละคนจะได้รับ และเงินรวมทั้งหมดที่จะต้องจ่ายให้แก่พนักงาน
Exercise 3.4 การวิเคราะห์งาน จงทำการวิเคราะห์งาน การรับข้อมูลรหัสสินค้าชุดหนึ่ง แล้วคำนวณหาจำนวนตัวรหัสสินค้าที่รับเข้ามานั้น โดยกำหนดให้ข้อมูลตัวสุดท้ายมีค่าเป็น ‘xxx’ สมมติข้อมูลนำเข้ามีดังนี้ A123 A145 B219 C518 xxx จากตัวอย่าง จะนับจำนวนข้อมูลได้ 4 ตัว
Thank You See you next time.