1 / 30

คำสั่งทำซ้ำ ( 3 )

คำสั่งทำซ้ำ ( 3 ). ภาพรวมเนื้อหา. i f () break ; i f () continue ; Nested for แบบมีทางเลือก การติดตามการทำงานของโปรแกรมด้วยมือ. วงวนไม่รู้จบ. เช่น ลักษณะการทำงานของโปรแกรมที่ ทำซ้ำเช่นนี้ไปเรื่อยๆจนกว่าผู้ใช้จะเลิกการทำงานของโปรแกรมเอง

kami
Download Presentation

คำสั่งทำซ้ำ ( 3 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. คำสั่งทำซ้ำ (3)

  2. ภาพรวมเนื้อหา • if () break ; • if () continue ; • Nested for แบบมีทางเลือก • การติดตามการทำงานของโปรแกรมด้วยมือ

  3. วงวนไม่รู้จบ • เช่น ลักษณะการทำงานของโปรแกรมที่ ทำซ้ำเช่นนี้ไปเรื่อยๆจนกว่าผู้ใช้จะเลิกการทำงานของโปรแกรมเอง • วิธีการสร้างวงวน (loop) เพื่อให้ทำซ้ำคำสั่งไปเรื่อยๆไม่รู้จบ ทำได้ด้วยคำสั่ง while(1) ดังนี้ while (1) { //กลุ่มคำสั่งที่ต้องการทำซ้ำ } // เมื่อถึงบรรทัดนี้จะวนกลับไปทำใหม่ รับข้อมูล ประมวลผล แสดงผล

  4. ตัวอย่าง • เขียนโปรแกรมรับค่าข้อมูลไปเรื่อยๆ จากนั้นให้แสดงผลลัพธ์ของตัวเลขที่รับเข้ามาทางหน้าจอ เขียน code ได้ดังนี้ while(1) { Input x Print x }

  5. วงวนไม่รู้จบ • อาจสงสัยว่า แล้วโปรแกรมจะเลิกทำงานเมื่อไหร่ • โปรแกรมจะทำงานไม่เลิก ผู้ใช้ต้องหยุดการทำงานเองโดยกดปุ่ม Ctrl + c • การทำงานของวงวนเพื่อทำกลุ่มคำสั่งซ้ำๆ จะน่าสนใจมากขึ้น ถ้าเราสามารถหยุดการทำซ้ำ แล้วกระโดดออกจากวงวนไปทำอย่างอื่นต่อ

  6. การกระโดดออกจากวงวน • การกระโดดออกจากวงวนใช้คำสั่ง if ( เงื่อนไข) break; หมายความว่า ถ้าเงื่อนไขภายในวงเล็บเป็นจริง ให้กระโดดออกจากวงวนที่คำสั่งนี้อยู่ • ตัวอย่าง เช่น คำสั่งบรรทัดนี้จะทำให้โปรแกรมกระโดดออกจากวงวนเมื่อ x มีค่าเป็น 2 ผลลัพธ์โปรแกรม

  7. การกระโดดออกจากวงวน • การกระโดดออกจากวงวนใช้คำสั่ง if ( เงื่อนไข) break; • เราไม่สามารถใช้คำสั่ง break โดดๆโดยไม่มี if เพื่อกระโดดออกจากวงวน • แม้ทำได้ คำสั่งที่ตามหลัง break จะไม่ทำงานเลย (เราจะเขียนไปทำไม) เมื่อเข้ามาใน while โปรแกรมจะกระโดดออกไปบรรทัด 7 เลย

  8. if () … break; • เป็นคำสั่งที่ใช้ในการทดสอบเงื่อนไข เพื่อออกจากการทำงานของ loop • ถ้าเงื่อนไขในวงเล็บหลัง if เป็นเท็จ จะวนทำคำสั่งใน loop ไปเรื่อยๆ • เมื่อเงื่อนไขในวงเล็บหลัง if เป็นจริงจะหยุดการทำงานใน loop

  9. ตัวอย่าง : การทดสอบจำนวนเฉพาะ • จำนวนเฉพาะ (prime number) คือ จำนวนเต็มมากกว่า 1 ที่มีแค่ 1 และตัวมันเองเท่านั้นหารลงตัว • วิธีง่ายสุดในการทดสอบว่า จำนวนเต็ม n เป็นจำนวนเฉพาะหรือไม่ • ลองนำ 2, 3, 4,… จนถึง n-1 ไปหาร n • ถ้าไม่มีตัวใดหาร n ลงตัวเลย แสดงว่า n เป็นจำนวนเฉพาะ • จากแนวคิดข้างต้น เราจะใช้วงวนเพื่อทดสอบการหารลงตัวของ n÷kกัน • เริ่มค่า k ที่ 2 และเพิ่มค่าขึ้นรอบละ 1 และ กระโดดออกจากวงวนเมื่อ • k มีค่าเท่ากับ n หรือ พบ k ที่หาร n ลงตัว

  10. ตัวอย่าง : การทดสอบจำนวนเฉพาะ • วิเคราะห์โปรแกรม • คำสั่งในส่วนของ loopiเริ่มตั้งแต่ 2 จนถึง n - 1 • มีเงื่อนไขการกระโดดออกจาก loop เมื่อพบว่า iหาร n ลงตัว • หารลงตัว คือ เหลือเศษเป็น 0 • เนื่องจากหลุดออกจาก loop มี 2 วิธี ตอนจะตอบต้องมาทดสอบเงื่อนไขก่อน • ถ้า i == n แสดงว่าโปรแกรมนี้ทำงานใน loop จนครบ • ดังนั้น n เป็นจำนวนเฉพาะ • ถ้า i < n แสดงว่ามีการกระโดดออกจาก loop ระหว่างทาง • ดังนั้น n ไม่ใช่จำนวนเฉพาะ

  11. ตัวอย่าง : การทดสอบจำนวนเฉพาะ โปรแกรมทดสอบจำนวนเฉพาะ Input n // จำนวนที่ต้องการทดสอบว่าเป็นจำนวนเฉพาะหรือไม่ i = 2 // ลองหารด้วย 2, 3, … ไปเรื่อยๆจนถึง n-1 while (i < n) { วนทำการตรวจสอบตัวเลขไปเรื่อยๆ if( (n%i ) == 0) break; // ออกจาก loop เมื่อมีตัวเลขที่หาร n ลงตัว i++; } if( i ==n) print “เป็นจำนวนเฉพาะ” else print “เป็นตัวประกอบ” ตัวอย่างผลลัพธ์

  12. ตัวอย่าง : การทดสอบจำนวนเฉพาะ • หากต้องการทดสอบจำนวนเฉพาะได้หลายๆจำนวน จนกว่าผู้ใช้จะใส่ค่า n <= 1 ค่อยเลิกทำงาน เขียน code ได้ ดังนี้ โปรแกรมทดสอบจำนวนเฉพาะ while (1) { Input n // จำนวนที่ต้องการทดสอบว่าเป็นจำนวนเฉพาะหรือไม่ if (n <= 1) break; inti= 2; // ลองหารด้วย 2, 3, … ไปเรื่อยๆจนถึง n while (i < n) { if( (n%i ) == 0) break; // ออกจาก loop เมื่อมีตัวเลขที่หาร n ลงตัว i++; } if( k==n) { Print“เป็นจำนวนเฉพาะ” } else { Print“เป็นตัวประกอบ” } }

  13. ตัวอย่าง : การทดสอบจำนวนเฉพาะ • จากตัวอย่างในสไลด์ที่แล้ว พบว่า • เราสามารถใส่ loop ซ้อนกันได้ • การออกจาก loop ด้วย if … break จะออกจาก loop ที่คำสั่งอยู่เท่านั้น • if (n <= 1) break; ออกจาก loop นอก • if( (n% i) == 0) break; ออกจาก loop ใน while (1) { if (n <= 1) break; i = 2; while (i < n) { if( (n%i ) == 0) break; // ออกจาก loop เมื่อมีตัวเลขที่หาร n ลงตัว i++; } }

  14. if … continue • เราใช้ if … break เพื่อออกจาก loop ที่คำสั่งนี้อยู่ • แต่ในบางครั้ง ระหว่างการทำงานใน loop เราอาจต้องการกระโดดกลับไปทำบรรทัดแรกของ loop • if … continue คือ คำสั่งที่เมื่อเงื่อนไขหลัง if เป็นจริง continue จะทำให้วนกลับไปทำบรรทัดแรกของ loop ที่คำสั่งนี้อยู่ทันที

  15. ตัวอย่าง • ส่วนโปรแกรมต่อไปนี้ แสดงตัวอย่างการทำงานของ Continue inti = 0; while(1) { i++ if(i == 5) { break;} if(i == 3) { continue; } System.out.println(“This is round ” + i); } System.out.println(“Loop run ” + i + “round”); เมื่อ Compile และ รันโปรแกรม จะได้ผลลัพธ์ดังนี้ This is round 1 This is round 2 This is round 4 Loop run 5 rounds

  16. ตัวอย่าง : Nested if แบบมีทางเลือก

  17. ตัวอย่าง 1 • เขียนโปรแกรมรับค่า n จากนั้นแสดงผลทั้งหมด n บรรทัด • ถ้าเป็นบรรทัดแรก หรือ บรรทัดสุดท้าย แสดง * จำนวน n ตัว • บรรทัดอื่น ๆ แสดง A จำนวน n ตัว n จำนวนแถว (i) ขึ้นอยู่กับ จำนวนคอลัมน์ (j)ขึ้นอยู่กับ n

  18. ตัวอย่าง 1 n จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ for i from 1 to n for j from 1 to n if i = 1 or i = n print * else print A end if end for end for

  19. ตัวอย่าง 2 • เขียนโปรแกรมรับค่า n จากนั้นแสดงผลทั้งหมด n บรรทัด • ถ้าเป็นบรรทัดคี่ แสดง ^ จำนวน n ตัว • ถ้าเป็นบรรทัดคู่ แสดง v จำนวน n ตัว จำนวนแถว (i) ขึ้นอยู่กับ n n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ

  20. ตัวอย่าง 2 n จำนวนแถว (i) ขึ้นอยู่กับ จำนวนคอลัมน์ (j)ขึ้นอยู่กับ n for i from 1 to n for j from 1 to n if i is odd print ^ else print v end if end for end for

  21. ติดตามการทำงานของโปรแกรมด้วยมือติดตามการทำงานของโปรแกรมด้วยมือ • มีขั้นตอน ดังนี้ • เขียนชื่อตัวแปรที่ปรากฎในโปรแกรม • ตัวแปรไหนมีการกำหนดค่าเริ่มต้น กำหนดค่าลงไป • ทำงานทีละคำสั่งไปเรื่อยๆ

  22. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร เขียนชื่อตัวแปรทั้งหมด 2. กำหนดค่าแต่ละตัวแปรอ้างอิงตาม code

  23. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร 3. เริ่มทำงานทีละคำสั่งเรื่อย ๆ

  24. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร

  25. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร 9

  26. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร 172

  27. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร (No)

  28. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร 2 17 11

  29. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร (No) (No) (Yes)

  30. ตัวอย่าง • โปรแกรมต่อไปนี้แสดงผลลัพธ์อะไร (No) (No) 19 (Yes)

More Related