งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Week 5 While and Do-While loop (Control Structure 2)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Week 5 While and Do-While loop (Control Structure 2)"— ใบสำเนางานนำเสนอ:

1 Week 5 While and Do-While loop (Control Structure 2)

2 Outline การทำซ้ำ (Iteration) while statement do-while statement 2

3 Iteration การทำซ้ำ (Iteration) หรือการประมวลผลซ้ำ หลายครั้งในการเขียนโปรแกรม ที่เราต้องการทำงาน ตามคำสั่ง (statement) หรือกลุ่มคำสั่ง (compound statement) ซำ้ๆมากกว่าหนึ่งครั้ง การประมวลผลซ้ำจะช่วยให้เราสามารถทำซ้ำๆได้อย่าง ต้องการ โดยที่ไม่จำเป็นต้องเขียน คำสั่งหรือกลุ่มคำสั่ง ที่ต้องการซ้ำไปมาในโปรแกรม อาจเรียกอีกอย่างว่า การวนลูป (Loop) ในการทำซ้ำลักษณะนี้จะอาศัยเงื่อนไข (condition) เป็นตัวกำหนด True - โปรแกรมจะวนทำคำสั่ง หรือชุดคำสั่งที่อยู่ ภายในลูปซ้ำอีก False - โปรแกรมจะออกจากลูป แล้วทำงานคำสั่ง ถัดไป (next-statement) 3

4 Components of Iteration ส่วนประกอบของการทำซ้ำ มี 3 อย่าง ได้แก่ การกำหนดค่าเริ่มต้น (Initialization) กำหนดค่าตั้งต้นให้กับตัวแปร ซึ่งจะใช้เป็นเงื่อนไขในการ ทำงาน เช่น x = 0, y = 100, … การทดสอบเงื่อนไข (Condition Testing) ทดสอบเงื่อนไขในการทำซ้ำ ว่ายังเป็นจริงหรือไม่ จะมีการวนเข้าไปทำซ้ำในคำสั่งหรือกลุ่มคำสั่งที่กำหนด ตราบใดที่เงื่อนไขยังเป็น true จะจบการทำซ้ำ เมื่อผลการทดสอบเงื่อนไขเป็น false เช่น x -5, x <= 99, … การปรับปรุงค่า (Increment / Decrement) การเพิ่มค่า (increment) หรือลดค่า (decrement) ตัวแปรซึ่ง ใช้เป็นเงื่อนไขในการทำงาน เช่น x=x+1, x+=10, x++, x--, ++x, --x, x*=2, … 4

5 Type of Iterations ประเภทของคำสั่งในการทำซ้ำ ในวิชานี้จะสนใจเพียง 4 รูปแบบ ได้แก่ while statement do-while statement for statement break and continue statements 5

6 while statement เริ่มต้นด้วยการตรวจสอบ เงื่อนไข (condition) หากเงื่อนไขเป็น true โปรแกรม จะเข้าลูปไปทำคำสั่ง หรือกลุ่ม คำสั่งที่กำหนดไว้ เมื่อทำงานในลูปเสร็จสิ้น โปรแกรมจะวนกลับไป ตรวจสอบเงื่อนไขอีก ดังนั้นโปรแกรมจะวนทำงานใน ลูป ตราบเท่าที่เงื่อนไขยังเป็น true เมื่อเงื่อนไขเป็น false โปรแกรม จะออกจาก ลูป แล้วจึงทำ next- statement 6 while (condition) { statement1; statement2;... statementN; } next-statement; Cond Statement 1 Statement 2 Entry True False Exit

7 while statement อีกรูปแบบของ Flowchart 7 Cond Statement 1 Statement 2 Entry True False Exit while (condition) { statement1; statement2;... statementN; } next-statement; Cond Statement 1 Statement 2 Entry True False Exit

8 Example: while statement Example 5.1: แสดงเลข 1 ถึง N 8 จะเกิดอะไรขึ้น ? ถ้าหาก... เปลี่ยนจาก i++ เป็น ++i หรือสามารถลดรูปลงได้เป็น Initialization: i=1; Testing: i<=n; Update: i+=1;

9 Example: while statement Example 5.2: แสดงสูตรคูณแม่ N 9 Initialization: i=1; Testing: i<13; Update: i++; ต้องแก้ไขอย่างไร หากต้องการให้แสดง ผลลัพธ์เพียงบรรทัดละ 5 ตัว ?

10 Example: while statement Example 5.3: หาค่าผลบวกกำลังสอง ของเลข คี่ระหว่าง 0 ถึง N 10 Initialization: cin>>n; Testing: n>0; Update: n--; Initialization: i=1; Testing: i<=n; Update: i++; มาก => น้อย !!! น้อย => มาก !!!

11 Example: while statement Example 5.4: หาค่าผลรวมของจำนวนที่อยู่ระหว่าง M ถึง N ซึ่งหารด้วย X ลงตัว 11 Initialization: i=m; Testing: i<=n; Update: i++; น้อย => มาก !!!

12 do-while statement 12 เริ่มต้นด้วยการเข้าลูปไปทำ คำสั่ง หรือกลุ่มคำสั่งที่กำหนด ไว้ก่อน เมื่อทำงานในลูปเสร็จสิ้น โปรแกรมจึงจะตรวจสอบ เงื่อนไขการทำซ้ำ หากเงื่อนไขเป็น true โปรแกรม จะวนกลับเข้าลูปไปทำอีก และ จะวนทำตราบใดที่เงื่อนไขยัง เป็น true เมื่อเงื่อนไขเป็น false โปรแกรม จึงจะออกจากลูป แล้วทำ next- statement โปรแกรมจะทำในลูปอย่างน้อย 1 ครั้งเสมอ do { statement1; statement2;... statementN; } while (condition); next-statement; exp r Statement 1 Statement 2 Entry True False Exit

13 Example: do-while statement Example 5.1: แสดงเลข 1 ถึง N 13 Initialization: i=1; Testing: i<=n; Update: i+=1; whiledo-while การทำงานต่างกันหรือไม่ หากป้อนค่า n=0 ???

14 Example: do-while statement Example 5.2: แสดงสูตรคูณแม่ N 14 Initialization: i=1; Testing: i<13; Update: i++; whiledo-while

15 Example: do-while statement Example 5.3: หาค่าผลบวกกำลังสอง ของเลข คี่ระหว่าง 0 ถึง N 15 Initialization: cin >> n; Testing: n > 0; Update: n--; whiledo-while การทำงานต่างกันหรือไม่ หากป้อนค่า n=0

16 What could go wrong? ปัญหาที่พบบ่อยครั้งจากการทำซ้ำ โปรแกรมวนทำซ้ำโดยไม่ออกจากลูป (infinity loop) x=1, while (x<10), x-- โปรแกรมไม่เข้าไปทำงานในลูปเลย x=1, while (x>10) แนวทางการแก้ไข ตรวจสอบเงื่อนไข (condition) การทำซ้ำว่าเป็น true หรือ false เสมอหรือไม่ ตรวจสอบตัวแปรที่จะใช้ทดสอบ ว่ามีการปรับปรุงค่า หรือไม่ ตรวจสอบว่าตัวแปรสามารถจะมีค่าที่จะทำให้เงื่อนไข เป็นได้ทั้ง true และ false หรือไม่ 16

17 Summary การทำซ้ำ (iteration) หรือการวนลูป จะช่วยให้เรา ทำงานคำสั่งหรือกลุ่มคำสั่งที่ต้องการได้หลายครั้ง โดย ไม่จำเป็นต้องเขียนคำสั่งซ้ำไปมา ต้องมีการตรวจสอบเงื่อนไข (condition) ก่อนการ ทำงานในแต่ละรอบการวนลูป โปรแกรมจะเข้าไปทำงานในลูป เมื่อผลการทดสอบเงื่อนไข เป็น true เท่านั้น โปรแกรมจะจบการทำงานในลูป เมื่อผลการทดสอบเงื่อนไข เป็น false ส่วนประกอบในการทำซ้ำ ได้แก่ การกำหนดค่าเริ่มต้น (initialization) ให้กับตัวแปรที่ จะใช้ทดสอบ การทดสอบเงื่อนไข (condition testing) กับตัวแปร การเพิ่มค่าหรือลดค่า (increment/decrement) ตัว แปรที่ใช้ทดสอบ 17

18 Summary สามารถใช้ while และ do-while ทดแทนกันได้ มักใช้ในกรณีที่ไม่สามารถระบุจำนวนรอบในการทำงานล่วงหน้า ได้ เช่น continue (y/n)?, จำนวนข้อมูลที่หาร x ได้ลงตัว, … do-while loop จะมีการทำงานภายในลูปอย่างน้อย 1 รอบ การทำงาน ในกรณีที่ทราบล่วงหน้าว่าถึงจำนวนรอบการทำงานที่ แน่นอน มักจะนิยมใช้ for ซึ่งจะกล่าวถึงในหัวข้อถัดไป เมื่อพบปัญหาในการทำซ้ำ ให้พิจารณาและตรวจสอบที่ การกำหนดค่าเริ่มต้น การทดสอบเงื่อนไข และการ ปรับปรุงค่าตัวแปร การวนทำซ้ำโดยไม่ออกจากลูป การไม่เข้าไปทำในลูป 18

19 Lab Lab หาค่าผลรวม (summation) ของจำนวนที่อยู่ระหว่าง M และ N ซึ่งหารด้วย X ลงตัว กำหนดให้ใช้ do-while ในการวนลูป แสดงผลจำนวนที่หารด้วย X ลงตัว จากมากไปหาน้อย Lab จาก lab 5.1 ให้ นศ. เพิ่มความสามารถให้โปรแกรม สามารถหาค่าเฉลี่ย (average) ของจำนวนทั้งหมดที่หารด้วย X ลงตัวด้วย สร้างตัวแปรใช้นับจำนวน (counter) ข้อมูลที่หารด้วย X ลงตัว สร้างตัวแปรที่ใช้เก็บค่าเฉลี่ย (average) และแสดงผลทาง หน้าจอ 19

20 Lab Lab หาค่าของ n! (n factorial) โดยกำหนดให้ เมื่อ n < 0 : เมื่อ n = 0 : เมื่อ n = 1 : เมื่อ n > 1 : 20

21 Lab Lab จาก lab 5.3 จงแก้ไขให้โปรแกรมสอบถาม ผู้ใช้ก่อนจบโปรแกรมว่า ต้องการทำงานต่อ (continue) หรือไม่ (y/n) y - ต้องการทำงานต่อ ให้โปรแกรมวนรับค่า n เพื่อคำนวณ n! อีกรอบ n หรือคำตอบอื่นๆ - ไม่ต้องการทำงานต่อ ให้จบการทำงาน 21


ดาวน์โหลด ppt Week 5 While and Do-While loop (Control Structure 2)

งานนำเสนอที่คล้ายกัน


Ads by Google