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

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

Nested loop and its applications.. หลักการทำงานของ for loop.

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


งานนำเสนอเรื่อง: "Nested loop and its applications.. หลักการทำงานของ for loop."— ใบสำเนางานนำเสนอ:

1 Nested loop and its applications.

2 หลักการทำงานของ for loop

3 for loop mechanism int i = 0; for(i = 0; i < 5; println("in step : "+(++i))) println("in loop : "+i); println("out of loop i == " + i); in loop : 0 in step : 1 in loop : 1 in step : 2 in loop : 2 in step : 3 in loop : 3 in step : 4 in loop : 4 in step : 5 out of loop i == 5 0 i = 12345

4 Nested for loop

5 for(int i=0; i<4; i++) { for(int j=0; j<2; j++) { print("["+i+""+j+"]"); } println(); } [00] [10] [20] [30] [01] [11] [21] [31] 4 บรรทัด 2 คอลัมน์ i = 0 j = 0 j = 1 i = 1 j = 2 i = 2 i = 3 i = 4

7 การประยุกต์ใช้ for loop สร้างเป็นรูปต่างๆ

8 พื้นฐานของ output 2 มิติ int row = 5; int column = 10; for(int i = 0; i

9 int row = 5; int column = 10; for(int i = 0; i

10 ตัวอย่างการใช้งาน

11 สี่เหลี่ยมมุมฉาก จากอักขระ * ขนาด กว้าง 5 สูง 5 : for(int i=0; i<5; i++) { for(int j=0; j<5; j++) { print("*"); } println(); } ***** ขนาด กว้าง 10 สูง 5 : for(int i=0; i<5; i++) { for(int j=0; j<10; j++) { print("*"); } println(); } **********

12 สามเหลี่ยม จากอักขระ * for(int i=0; i<5; i++) { for(int j=0; j0; i--) { for(int j=i; j>0;j--) { print("*"); } println(); } * ** *** **** *** ** *

13 การประยุกต์ใช้ for loop สร้างเป็นรูปต่างๆ : กรณีศึกษา “ ข้าวหลามตัด ”

14 n = 3 * *** ***** *** * n = 4 * *** ***** ******* ***** *** * n = 5 * *** ***** ******* ********* ******* ***** *** *

15 n = 5 * *** ***** ******* ********* ******* ***** *** * n = 5 ####* ###*** ##***** #******* ********* #******* ##***** ###*** ####* สังเกต : จำนวนบรรทัด, จำนวนเว้นวรรค และ จำนวน *

16 ####* ###*** ##***** #******* ********* #******* ##***** ###*** ####* 0: 1: 2: 3: 4: 5: 6: 7: 8: ที่ n = 5 แต่ละบรรทัด มีอะไรกันบ้าง ??

17 ####* ###*** ##***** #******* ********* #******* ##***** ###*** ####* 0: 1: 2: 3: 4: 5: 6: 7: 8: lineSpace countAsterisk count จากตาราง จะได้ว่า 1. จำนวนบรรทัด = 2n-1 ( ในที่นี้คือ 9 บรรทัด จาก 2*5- 1) 2. จำนวนเว้นวรรค = |n-i-1| ( ใน for loop i เริ่มที่ 0 จึงต้อง -1 ออก ) 3. จำนวน * = จำนวนบรรทัด - จำนวนเว้นวรรคใน บรรทัดนั้นๆ = (2n-1) - |n-i-1|

18 นำมาเขียนเป็นโปรแกรมได้ดังนี้ : for(int i = 0; i < 2*n-1; i++) { for(int j=0; j < Math.abs(n-i-1);j++) print(" "); for(int j=0; j < (2*n-1) - 2*Math.abs(n-i-1);j++) print("*"); println(); } นอกจากนี้ ยังอาจสามารถสร้างได้โดยใช้วิธีคิดแบบอื่นๆ อีกมากมาย ซึ่งก็ขึ้นอยู่กับความถนัดและประสบการณ์หรือ ความเคยชินของแต่ละคน หากผลลัพธ์ออกมาเหมือนกัน ( ในที่นี้จะยังไม่สนใจถึงเรื่องประสิทธิภาพของโปรแกรม )

19 ลองมองมุมกลับ แล้วก็ปรับ มุมมอง...

20 ข้าวหลามตัด : แบ่งส่วน

21 ####* ###*** ##***** #******* ********* #******* ##***** ###*** ####* 0: 1: 2: 3: 4: 5: 6: 7: 8: lineSpace countAsterisk count มองลำบากหรือไม่ ?? ลองแบ่งปัญหาข้าวหลามตัด ออกเป็นปัญหาย่อย ๆ ดูสิ !

22 ####* ###*** ##***** #******* ********* #******* ##***** ###*** ####* 0: 1: 2: 3: 4: 5: 6: 7: 8: lineSpace countAsterisk count มองลำบากหรือไม่ ?? ลองแบ่งปัญหาข้าวหลามตัด ออกเป็นปัญหาย่อย ๆ ดูสิ ! - เหลือปัญหาสามเหลี่ยมหงาย และสามเหลี่ยม คว่ำ และไส้กลาง

23 int n = 5; int i = 0; อันดับแรก - ประกาศตัวแปรที่จะใช้งานก่อน : ถัดมา - สามเหลี่ยมบน : for(i=0;i0;j--) print(" "); // เว้นวรรค เหมือนเดิมทุกประการ for(int j=0;j<2*i+1;j++) // จำนวน * เริ่มที่ 1 ในบรรทัดแรก และเพิ่มขึ้นทีละ 2 ใน แต่ละบรรทัด print("*"); println(); } วนตั้งแต่ i = 0 ถึง i = 3 หลังจากจบการทำงานลูปนี้ i = 4 ( จากการหลุดเงื่อนไข i

24 // ไส้กลางมีจำนวน * เท่ากับ 2n-1 for(int mid=0; mid<2*n-1;mid++) print("*"); println(); องค์ประกอบสำคัญ - ไส้กลาง : สุดท้าย - สามเหลี่ยมล่าง : จากสามเหลี่ยมบน วนจาก 0 ถึง 3 ดังนั้น สามเหลี่ยม ล่างต้องวนจาก 3 ไปสู่ 0 3 จากเดิม i = 4 จึงต้องลดค่าลงไป 1 ให้เหลือ 3 i--; for(;i>=0;i--) // ข้างในเหมือนสามเหลี่ยมบนเป๊ะๆ { for(int j=n-i-1; j>0;j--) print(" "); for(int j=0;j<2*i+1;j++) print("*"); println(); }

25 Code ฉบับเต็ม

26 public void run() { int n=5; int i = 0; for(i=0;i0;j--) print(" "); // เว้นวรรค เหมือนเดิมทุกประการ for(int j=0;j<2*i+1;j++) // จำนวน * เริ่มที่ 1 ในบรรทัดแรก และเพิ่มขึ้นทีละ 2 ในแต่ ละบรรทัด print("*"); println(); } // ไส้กลางมีจำนวน * เท่ากับ 2n-1 for(int mid=0; mid<2*n-1;mid++) print("*"); println(); i--; for(;i>=0;i--) { // ข้างในเหมือนสามเหลี่ยมบนเป๊ะๆ for(int j=n-i-1; j>0;j--) print(" "); for(int j=0;j<2*i+1;j++) print("*"); println(); }


ดาวน์โหลด ppt Nested loop and its applications.. หลักการทำงานของ for loop.

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


Ads by Google