ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยSanun Kasemsarn ได้เปลี่ยน 9 ปีที่แล้ว
1
Week 6 For loop, break and continue (Control Structure 3)
2
Outline ส่วนประกอบของการทำซ้ำ ( ทบทวน ) for statement break และ continue statements 2
3
Review the 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, … 3
4
Reviewing increment and decrement Increment และ Decrement Operators (++, --) Increment operator (++) ใช้เพิ่มค่าให้กับตัวแปรขึ้นที ละ 1 เหมือนกับ +=1 Decrement operator (--) ใช้ลดค่าตัวแปรลงทีละ 1 เหมือนกับ -=1 ดังนั้น ++x; มีค่าเหมือนกัน x+=1; และ x=x+1; สามารถวาง operator ไว้ได้ทั้งก่อนหน้า (prefix) หรือ ด้านหลัง (suffix) ตัวแปร y=++x; หรือ y=--x; (prefix) : เพิ่มหรือลดค่า x ก่อนกำหนดค่า x ให้ y y=x++; หรือ y=x--; (suffix) : กำหนดค่า x ให้ y ก่อนเพิ่มหรือ ลดค่า x 4
5
for statement นิยมใช้งานเมื่อทราบจำนวนรอบของการทำซ้ำล่วงหน้า สามารถใช้ทดแทน while และ do-while statement ได้ init - กำหนดค่าเริ่มต้นให้กับตัวแปรควบคุม cond - การทดสอบเงื่อนไขการทำซ้ำ update - การเปลี่ยนแปลงค่าตัวแปรควบคุม 5 for (init; cond; update) { statement1; statement2;... } next-statement; cond Statement 1 Statement 2 Entry True False Exit update init
6
for statement for มีลักษณะการทำงานคล้ายคลึง while เพียงแต่... มีการกำหนดค่าเริ่มต้น เงื่อนไข และการปรับปรุงค่าตัวแปร ควบคุม รวมอยู่ด้วยกัน ในขณะที่ while จะมีการ... แยกเอาส่วนกำหนดค่าเริ่มต้นไว้ก่อนเข้าลูป กำหนดส่วนปรับปรุงค่าตัวแปรควบคุม (increment หรือ decrement) ไว้ภายในลูป 6 for (init; cond; update) { statement1; statement2;... } next-statement; cond Statement 1 Statement 2 Entry True False Exit update init
7
Example: for statement Example 6.1: แสดงเลข 1 ถึง N 7 Initialization: i=1; Testing: i<=n; Update: i+=1; whilefor
8
Example: for statement Example 6.2: แสดงสูตรคูณแม่ N 8 Initialization: i=1; Testing: i<13; Update: i++; whilefor Note: ประกาศตัวแปร ควบคุม i และกำหนดค่า เริ่มต้น ภายใน for statement
9
Example: for statement Example 6.3: หาค่าผลบวกกำลังสอง ของเลข คี่ระหว่าง 0 ถึง N 9 Initialization: cin >> n; Testing: n > 0; Update: n--; while for Note: ประกาศตัวแปร ควบคุม n และกำหนดค่า เริ่มต้น ภายนอก for statement
10
Example: for statement Example 6.4: หาค่าผลรวมของจำนวนที่อยู่ระหว่าง M ถึง N ซึ่งหารด้วย X ลงตัว 10 Initialization: i=m; Testing: i<=n; Update: i++; น้อย => มาก !!!
11
Example: for statement Example 6.5: หาค่าเฉลี่ย (average) ของข้อมูล N ตัว จบการทำงานเมื่อง N<=0 11 Outer while-loop Initialization: n; Testing: n>0; Update: cin>>n; Inner for-loop Initialization: i=0; Testing: i<n; Update: i++; ควรจบการทำงานของ โปรแกรม ? รับข้อมูลจากผูัใช้กี่ตัว ?
12
Example: for statement Example 6.6: การใช้งานลูปซ้อนกัน (nested loop) 12 Outer for-loop Initialization: i=0; Testing: i<n; Update: i++; Inner for-loop Initialization: j=0; Testing: j<n; Update: j++; Row counting - นับจำนวน แถว Column counting - นับ จำนวนคอลัมภ์ ทุกๆ 1 รอบการทำงานของ outer loop จะมีการทำงาน ของ inner loop จำนวน n รอบ
13
break statement break เป็นคำสั่งที่ใช้บอกให้ โปรแกรมจบการทำงานใน 2 กรณี คือ จบการทำงานของ case ในคำสั่ง switch ( ดังที่ได้กล่าวถึงไปแล้ว ) เมื่อใช้กับส่วนทำซ้ำ จะจบการ ทำงานของส่วนทำซ้ำทันที แล้ว ไปทำงานต่อในส่วนของ next- statement หากมีส่วนทำซ้ำซ้อนกัน (nested loop) คำสั่ง break จะหยุดการ ทำงานเฉพาะของลูปที่มีคำสั่ง break อยู่เท่านั้น นิยมใช้เมื่อต้องการให้จบการ ทำงานของลูปเมื่อพบเงื่อนไขที่ ต้องการ 13 รูปจาก http://www.tutorialspoint.com/cplusplus/cpp_break_statement.htm
14
Example: break statement Example 6.7: 14 Initialization: a=10; Testing: a<20; Update: a=a+1; Break: a>15 Note: จำนวนรอบในการเข้าไป ทำงานในลูป ? ค่าของ a เมื่อจบการทำงาน ของลูป ?
15
Example: break statement Example 6.8: การใช้งานลูปซ้อนกัน (nested loop) พร้อมคำสั่ง break 15 Outer for-loop Initialization: i=0; Testing: i<n; Update: i++; Inner for-loop Initialization: j=0; Testing: j<n; Update: j++; Break: i==j Row counting - นับจำนวน แถว Column counting - นับ จำนวนคอลัมภ์
16
Infinity loop with break statement บางครั้งอาจตั้งใจใช้งาน infinity loop ร่วมกับ คำสั่ง break 16 ในความเป็นจริง ส่วนใหญ่เราสามารถแปลงเอา cond มาใช้เป็นเงื่อนไข สำหรับใชักับ while, do-while และ for ได้เช่นกัน
17
continue statement 17 continue เป็นคำสั่งที่ใช้บอก ให้โปรแกรมจบการทำงานใน ลูป ลักษณะการใช้งานคล้ายกับ break เมื่อใชักับส่วนทำซ้ำ จบการ ทำงานในรอบนั้นของส่วน ทำซ้ำทันที แล้วโปรแกรมจะ วนไปตรวจสอบ condition สำหรับ รอบการทำงานถัดไป นิยมใช้เมื่อต้องการยกเว้น (skip) การทำงานในบางกรณี รูปจาก http://www.tutorialspoint.com/cplusplus/cpp_break_statement.htm
18
Example: continue statement Example 6.9: 18 Initialization: a=10; Testing: a<20; Update: a=a+1; Continue(skip): a==15 Note: จำนวนรอบในการเข้าไป ทำงานในลูป ? ค่าของ a เมื่อจบการทำงาน ของลูป ? ทำไมต้องมี a = a+1; สอง แห่งในลูป ?
19
Example: continue statement Example 6.10: การใช้งานลูปซ้อนกัน (nested loop) พร้อมคำสั่ง continue 19 Outer for-loop Initialization: i=0; Testing: i<n; Update: i++; Inner for-loop Initialization: j=0; Testing: j<n; Update: j++; Continue(skip): i==j Row counting - นับจำนวน แถว Column counting - นับ จำนวนคอลัมภ์
20
Example: break and continue Example 6.11: การใช้งานลูปซ้อนกัน (nested loop) 20 Outer for-loop Initialization: i=0; Testing: i<n; Update: i++; Continue(skip): even Inner for-loop Initialization: j=0; Testing: j<n; Update: j++; Break: i==j Row counting - นับจำนวน แถว Column counting - นับ จำนวนคอลัมภ์
21
Summary สามารถใช้งานแทน while และ do-while ได้ นิยมใช้ for เมื่อทราบจำนวนรอบของการทำซ้ำ ล่วงหน้า รวมเอาส่วน กำหนดค่าเริ่มต้น เงื่อนไขการทำซ้ำ และ การปรับปรุงค่าตัวแปรควบคุม ไว้ด้วยกัน เราสามารถใช้คำสั่งในการทำซ้ำแบบซ้อนๆกันได้ (nested-loop) ลูปใน (inner loop) จะจบการทำงานก่อน ลูปนอก (outer loop) จะจบการทำงานทีหลัง 21
22
Summary เมื่อใช้คำสั่ง break กับการทำซ้ำ จะทำให้ โปรแกรมจบการทำงาน ของลูปทันที แล้วโปรแกรมจะข้ามไปทำ next- statement เมื่อใช้คำสั่ง continue กับการทำซ้ำ จะทำให้ โปรแกรมจบการทำงานลูปในรอบนั้นๆทันที แล้ว โปรแกรมจะวนกลับไปตรวจสอบ condition สำหรับ การทำงานในรอบถัดไป เมื่อใช้คำสั่ง break หรือ continue กับการทำซ้ำแบบ ซ้อนๆกัน (nest-loop) คำสั่งเหล่านี้จะมีผลเฉพาะ กับลูปที่มีคำสั่งเท่านั้น 22
23
Lab Lab 6.1 – เขียนโปรแกรมเพื่อหาค่าต่อไปนี้ จาก ข้อมูล N จำนวน ผลรวม (summation) ค่าเฉลี่ย (average) ค่าสูงสุด (maximum) และ ค่าต่ำสุด (minimum) Lab 6.2 – เขียนโปรแกรมเพื่อรับค่าผลรวม เป้าหมาย (target summation) จากผู้ใช้ แล้วให้โปรแกรมทำการวนรับค่าจากผู้ใช้ทีละ ค่า และเมื่อผลรวมของค่าที่ป้อนทั้งหมด มากกว่าหรือเท่ากับค่าผลรวมเป้าหมาย ให้ โปรแกรมแสดงค่าต่อไปนี้ ผลรวม (summation) จำนวนข้อมูลที่ได้รับ ( รวมข้อมูลค่าสุดท้ายที่ทำให้ เกิน target) ค่าเฉลี่ย (average) ค่าสูงสุด (maximum) ค่าต่ำสุด (minimum) 23
24
Lab Lab 6.3 – เขียนโปรแกรมเพื่อรับค่าต่อไปนี้จากผู้ใช้ จำนวนเต็มบวก - สำหรับกำหนดจำนวนบรรทัด และคอลัมภ์ ในการแสดงผลลัพธ์ อักขระ - สำหรับประกอบการแสดงผล จากนั้นให้โปรแกรมแสดงผลในรูปแบบดังตัวอย่าง ต่อไปนี้ 24
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.