การทำงานแบบมีเงื่อนไข (if, if-else, if-else-if, Nested-if) 226111 Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 10 การทำงานแบบมีเงื่อนไข (if, if-else, if-else-if, Nested-if)
Outline 1 Problem Reviews 2 p if 3 if-else 4 if-else if 5 Nested-if
Objectives เพื่อให้นิสิตรู้และเข้าใจกระบวนการในการวิเคราะห์โจทย์ปัญหาแบบมีเงื่อนไข if if-else if-else if Nested if เพื่อเตรียมความพร้อมให้นิสิตสามารถวิเคราะห์และแก้ปัญหาโจทย์การทำงานแบบมีเงื่อนไขอันเป็นพื้นฐานในการประมวลผลเบื้องต้นของภาษาคอมพิวเตอร์ได้
Outline 1 Problem Reviews 2 p if 3 if-else 4 if-else if 5 Nested-if
Review #1 1. บริษัทรถโดยสารแห่งหนึ่งต้องการโปรแกรมสำหรับคิด ค่าบริการยอดรวม (ยอดเงินรวม) ในแต่ละเที่ยวการ เดินทางจากต้นทางคือกรุงเทพและปลายทางคือแม่สาย (เชียงราย) จำนวนที่นั่งของรถแต่ละคันมีทั้งหมด 32 ที่นั่ง และรถโดยสารมีกำหนดออกเดินทางชั่วโมงละคัน ซึ่งผู้โดยสาร อาจจะเต็มหรือไม่ก็ได้ โดยมีอัตราค่าโดยสารดังนี้ เด็กเล็กความสูงไม่เกิน 100 cm สามารถติดตามผู้ปกครองได้โดยไม่ เสียค่าใช้จ่าย เด็กที่มีความสูงอยู่ในช่วง 100-130 cm คิดอัตราค่าโดยสารคนละ 350 บาท เด็กที่มีความสูง 130 cm ขึ้นไปคิดอัตราค่าโดยสาร 750 บาท ผู้ใหญ่คิดอัตราค่าโดยสาร 750 บาท
T== ‘C’ m1 +1 T==‘B’ m2 +1 i +1 T==‘A’ m3 +1 T== ‘E’ START for i =1 to 32 first, last, seat, type m1, m2,m3, money T== ‘C’ m1 +1 T==‘B’ first, last, seat m2 +1 i +1 T==‘A’ m3 +1 first, last, seat T== ‘E’ 1 2
2 Money = m1*350+m2*750 +m3*750 money END
Review #2 2. ร้านวิสุทธ์พาณิชย์ต้องการโปรแกรมเพื่อคิดราคายอดรวมสินค้าของลูกค้าแต่ละราย ซึ่งลูกค้าสามารถซื้อสินค้าได้มากกว่าหนึ่งชิ้นและไม่จำเป็นต้องซื้อทุกรายการ โดยสินค้ามีรายละเอียดดังต่อไปนี้ สบู่เหลว Shokubutsu 500 ml ราคา 350 บาท -> A แชมพู Tsubaki 500 ml ราคา 499 บาท -> B ยาสีฟัน Oral B 160 g ราคา 170 บาท -> C โฟมล้างหน้า Shokubutsu 100 g ราคา 120 บาท -> D น้ำยาบ้วนปาก Listerine 250 ml ราคา 125 บาท -> E ครีมบำรุงผิว Vasseline 600 ml ราคา 220 บาท -> F ภาษีมูลค่าเพิ่มคิด 7 % ของราคาสินค้า
T== ‘A’ T==‘B’ i +1 T==‘C’ T== ‘F’ START for i =1 to 6 first, last, id, m1, ...,m5,m6 vat, money, total money T== ‘A’ m1 T==‘B’ first, last, id m2 i +1 A T==‘C’ . m3 first, last, id T== ‘F’ m6 F 1 2
2 Money = (m1*350)+(m2*499)+(m3*170)+(m4*120)+(m5*125)+(m6*220) Vat = money*0.07 Total money = money+vat Total money END
Review #3 3. จงคำนวณหาหาระยะทางสูงสุดที่ลูกบอลลอยขึ้นไปได้สำหรับการเคลื่อนที่ในแนวโพรเจ็คไทล์ โดยลูกบอลถูกขว้างออกไปด้วยความเร็วเท่ากับ 115. 67 m/s ทำมุม 30 องศา กับแนวระดับ (cos =30. , sin =30. ) กำหนดให้ความเร่งสู่ศูนย์ถ่วงของโลก (g) เท่ากับ 9.8 m/s2 และสมการเคลื่อนที่ในแนวโปรเจ็คไทล์มีดังนี้ สมการการเคลื่อนที่ในแนวดิ่ง สมการการเคลื่อนที่ในแนวราบ
1 START U, Zeta, seat, g Sx, Sy U, Zeta U, Zeta U, Zeta 1 END
Review #4 4. จงวิเคราะห์โปรแกรมเพื่อรับอักษรตัวเล็กมา 100 ตัว แล้วตรวจสอบว่ามีอักษรที่เป็นสระกี่ตัว และไม่ใช่สระกี่ตัว
START vowel=0,alphabet=0, count,letter count = 0 False True count ++ END vowel=0,alphabet=0, count,letter count = 0 letter letter is vowel vowel++ alphabet++ count ++ Count<=100 vowel alphabet True false False
Outline 1 Problem Reviews 2 p if 3 if-else 4 if-else if 5 Nested-if
if Condition Control Statement (1) True False if (Boolean expression) statement; if (expression) statement; if (Condition) statement;
if Condition Control Statement (2) True False Statement-2; if (Boolean expression) { statement-1; statement-2; ... statement-n; }
if Condition Control Statement (3) IF (Condition) THEN BEGIN Statement 1 ; Statement 2 ; END;
if Condition Control Statement (4) ในการเปรียบเทียบเงื่อนไขแบบ IF – THEN นิยมให้ทำงานตามคำสั่งเมื่อเงื่อนไขมีค่าเป็นจริง ไม่นิยมให้ทำงามตามคำสั่งเป็นเท็จ Condition Statement-1; Statement T F Statement-2; Condition Statement-1; 1 Statement-2; Statement;
if and Boolean Expression Condition int a = 5 ; int b = 4 ; if (a > b) { statement 1; statement 2; statement n; } printf(); a > b True False statement 1; statement 2; statement 3;
Example 3 จงเขียนผังงานและโปรแกรมรับชื่อนามสกุล รหัสนักศึกษา คะแนนสอบรวม และคะแนนเต็ม หากนักศึกษาสอบได้มากกว่า 60% ให้แสดงผลชื่อ นามสกุล รหัสนักศึกษา คะแนน และผลสอบว่าผ่าน Input Analysis ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม Output Analysis แสดงผลชื่อ-สกุล รหัสนักศึกษา คะแนนสอบ ผลสอบ Process Analysis โปรแกรมรอรับชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม ตรวจสอบว่าคะแนนมากกว่าหรือเท่ากับ 60 % หรือไม่ ถ้าจริง แสดงผลชื่อ-สกุล รหัสนักศึกษา คะแนน และแสดงว่าสอบผ่าน
Example 3 (cont.) Variable Define first : ตัวแปรชนิดข้อความสำหรับเก็บชื่อขนาด 20 last : ตัวแปรชนิดข้อความสำหรับเก็บนามสกุลขนาด 20 id : ตัวแปรชนิดข้อความสำหรับเก็บรหัสนักศึกษาขนาด 9 point : ตัวแปรชนิดจำนวนทศนิยมสำหรับเก็บคะแนนรวม full : ตัวแปรชนิดจำนวนทศนิยมสำหรับเก็บคะแนนเต็ม
Process Description 4. แสดงผล คะแนนสอบและคะแนนเต็ม 6. จบการทำงาน 1. เริ่มต้นการทำงาน 2. รับค่า ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม 3. แสดงผล ชื่อ / นามสกุล / รหัสนักศึกษา 4. แสดงผล คะแนนสอบและคะแนนเต็ม 5. ตัดสินใจเพื่อทำคำสั่งควบคุมการทำงานแบบมีเงื่อนไข โดยถ้านักศึกษาสอบได้มากกว่า 60% แล้วให้แสดง ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ และผลสอบ 6. จบการทำงาน
Pseudo Code 4. Show Point / Full Point 1. Begin 2. Read Name / Surname / ID / Point / Full Point 3. Show Name / Surname / ID 4. Show Point / Full Point 5. if (Point > = 60 %) Show Name / Surname / ID / Point / Passed 6. End
Flowchart START first, last, id, point/full >= 0.6 point, full 1 START point/full >= 0.6 first, last, id, point, full False first, last, id True "passed" point, full 1 END
Outline 1 Problem Reviews 2 p if 3 if-else 4 if-else if 5 Nested-if
if-else Condition Control Statement (1) if (Boolean expression) statement-1; else statement-2; การทำงานขึ้นอยู่กับเงื่อนไข ถ้าเป็นจริงไปทำงานด้านหนึ่ง ถ้าเป็นเท็จก็จะไปทำงานอีกอย่างหนึ่ง
If-else Condition Control Statement (2) ……… T F Statement-2.1; Statement-2.2; if (expression) { statement-1.1; statement-1.2; ... statement-1.n; } else statement-2.1; statement-2.2; statement-2.n;
If-else Condition Control Statement (3) ถ้า sex =1 เงื่อนไขเป็นจริง จะเพิ่มค่าตัวแปร Male ขึ้นอีก 1 ถ้า sex !=1 เงื่อนไขเป็นเท็จ จะเพิ่มค่าตัวแปร Female ขึ้นอีก 1 False Sex = 1 True Female = Female + 1 Male = Male +1
If-else Condition Control Statement (4) เริ่มต้น START STOP read age age > 60 “You are old” True False “You are young” รับค่าใส่ตัวแปร age เปรีบเทียบค่า age มากกว่า 60 ทำตามคำสั่งของทางเลือก ให้ตรงกับเงื่อนไข จบการทำงาน
If-else Condition Control Statement (5) เริ่ม เริ่มการทำงาน พิมพ์ Do you like Pascal แสดงข้อความ Do you like Pascal รับค่า ans รับค่าใส่ตัวแปร answer False True ans = ‘y’ OR ans=‘Y’ เปรียบเทียบค่า ans เท่ากับ y หรือ Y - ถ้าเป็นจริง พิมพ์ Thank you ถ้าเป็นเท็จ พิมพ์ I’m sorry to hear that พิมพ์ I’m sorry to hear that พิมพ์ Thank You พิมพ์ Good Bye พิมพ์คำว่า Goodbye จบการทำงาน จบ
if –else Condition Control Example (1) จงเขียนผังงานและโปรแกรมหารเลข 2 จำนวน โดยโปรแกรมต้องตรวจสอบได้ว่าตัวหารเป็น "0" หรือไม่ จงวิเคราะห์โจทย์ เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียน Flowchart
if –else Condition Control Example (2) START 1 num1, num2 num2 != 0 False num1 "Error" True num1/num2 num2 1 END
Outline 1 Problem Reviews 2 p if 3 if-else 4 if-else if 5 Nested-if
if-else-if condition control statement (1) if (expression-1) statement-1; else if (expression-2) statement-2; ... else if (expression-m) statement-m; else statement-m+1;
if-else-if condition control statement (2) if (expression-1) { statement-1.1; ... statement-1.n; } else if (expression-2) statement-2.1; statement-2.n; ... else if (expression-m) { statement-m.1; statement-m.n; } else statement-m+1.1; statement-m+1.n;
if-else-if condition control statement (3) เป็นรูปแบบการเลือกการทำงานที่มีทางเลือกมากกว่า 2 ทางขึ้นไป Condition กรณี 1 กรณี 2 กรณี 3 กรณี 4 Statement 1; Statement 2; Statement 3; Statement 4;
if-else-if condition control statement (4) Score = mid + final score 80..100 70..79 60..69 50..59 0..49 Grade = ‘A’ Grade = ‘B’ Grade = ‘C’ Grade = ‘D’ Grade = ‘F’
if-else-if condition control Example (1) จงเขียนผังงานและโปรแกรมสำหรับรับ ชื่อ นามสกุล รหัสนักศึกษา และคะแนนวิชา Computers and Programming เพื่อตรวจสอบว่านักศึกษาได้เกรดระดับใด โดยใช้เกณฑ์ดังนี้ คะแนน 90 – 100 ได้เกรด A คะแนน 80 – 89.99 ได้เกรด B คะแนน 70 – 79.99 ได้เกรด C คะแนน 60 – 69.99 ได้เกรด D คะแนน 0 – 59.99 ได้เกรด F แล้วแสดงผลลัพธ์ ชื่อ สกุล รหัสนักศึกษา คะแนน และเกรด
if-else-if condition control Example (2) Output Analysis แสดงชื่อ นามสกุล รหัสนักศึกษา คะแนน และเกรดที่ได้ Input Analysis ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนน Process Analysis โปรแกรมรอรับชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ แสดงผลชื่อ-สกุล รหัสนักศึกษา และคะแนน
if-else-if condition control Example (3) Process Analysis (ต่อ) การตรวจสอบคะแนนสอบ ถ้ามากกว่าหรือเท่ากับ 90 แสดงผลว่าได้เกรด A ถ้ามากกว่าหรือเท่ากับ 80 แสดงผลว่าได้เกรด B ถ้ามากกว่าหรือเท่ากับ 70 แสดงผลว่าได้เกรด C ถ้ามากกว่าหรือเท่ากับ 60 แสดงผลว่าได้เกรด D ถ้าไม่ตรงเงื่อนไขที่ผ่านมาทั้งหมด แสดงผลว่าได้เกรด F
if-else-if condition control Example (4) Variable Define first : ตัวแปรชนิดข้อความสำหรับเก็บชื่อขนาด 20 last : ตัวแปรชนิดข้อความสำหรับเก็บนามสกุลขนาด 20 id : ตัวแปรชนิดข้อความสำหรับเก็บรหัสนักศึกษาขนาด 9 point : ตัวแปรชนิดจำนวนเต็มสำหรับเก็บคะแนน
if-else-if condition control Example (5) first, last, id, point first, last, id, point "Grade A" START a b True False Point >= 90
if-else-if condition control Example (6) "Grade C" True "Grade D" False END "Grade F" Point >= 60 Point >= 70 Point >= 80 "Grade B" a b
Outline 1 Problem Reviews 2 p if 3 if-else 4 if-else if 5 Nested-if
Nested if Condition Control Statement (1) if (expression-1) statement-1; else if (expression-2) statement-2; if (expression-3) statement-3; statement-4;
statements to be executed if test expression is true; else if(test expression 1) statements to be executed if test expressions 1 is true; if (test expression 2) . statements to be executed if all test expressions are false;
Nested if Condition Control Statement (2) True False Condition 2 Statement 2; Condition 3 Statement 3; Statement 4; เป็นรูปแบบการเลือกการทำงานที่มีทางเลือกมากกว่า 2 ทางขึ้นไป
Nested if Condition Control Statement (3) Score = mid + final False Score >=80 True False Score >=70 True Grade = ‘A’ False Score >=60 True Grade = ‘B’ False Score >=50 True Grade = ‘C’ Grade = ‘F’ Grade = ‘D’
Nested if Condition Control Example (2)
Assignment #1: if-else-if condition control จงเขียนโค้ดโปรแกรมสำหรับรับ ชื่อ นามสกุล รหัสนักศึกษา และคะแนนวิชา Computers and Programming เพื่อตรวจสอบว่านักศึกษาได้เกรดระดับใด โดยใช้เกณฑ์ดังนี้ คะแนน 90 – 100 ได้เกรด A คะแนน 80 – 89.99 ได้เกรด B คะแนน 70 – 79.99 ได้เกรด C คะแนน 60 – 69.99 ได้เกรด D คะแนน 0 – 59.99 ได้เกรด F แล้วแสดงผลลัพธ์ ชื่อ สกุล รหัสนักศึกษา คะแนน และเกรด
Assignment #2: Midterm Examination จงวิเคราะห์โจทย์ (Problem Analysis) วิเคราะห์ขั้นตอนการทำงาน (Process Description) เขียนรหัสเทียม (Pseudo Code) พร้อมทั้งเขียนผังงาน (Flowchart) สำหรับข้อสอบกลางภาคที่ผ่านมา