Nested loop
Nested Loop ในบทก่อนหน้านี้เราได้เรียนการเขียนโปรแกรมแบบที่ใช้ if ซ้อนกัน ในทำนองเดียวกันในงานที่ซับซ้อน การทำซ้ำก็อาจจะต้อง implement ในรูปแบบของ loop ซ้อนกัน การประมวลผลในลักษณะที่เป็นตาราง loop ซ้อน มันจะเกิดขึ้นโดยธรรมชาติ Loop นอกเป็นตัวควบคุม แถว ทั้งหมด Loop ในเป็นตัวควบคุม คอลัมน์ ในแต่ละแถว
โจทย์ จงเขียนโปรแกรมรับค่า m และ n แล้วแสดงผลลัพธ์ ดังตัวอย่าง Input 3 2 Output ** Input 2 5 Output *****
มองผลลัพธ์ในลักษณะของตาราง จงเขียนโปรแกรมรับค่า m และ n แล้วแสดงผลลัพธ์ ดังตัวอย่าง Input1 Input2 3 2 2 5 * *
Nested loop การเขียน loop ซ้อน จะง่ายขึ้นถ้าเรามองผลลัพธ์ของโปรแกรมในลักษณะตาราง จำนวนแถว ใช้ loop นอกเป็นตัวกำหนด จำนวนคอลัมน์ ใช้ loop ในเป็นตัวกำหนด for(int i = 1 ; i < row ; i++) { for(int j = 1 ; j < col ; j++ ) { //คำสั่งในการทำซ้ำ }
โจทย์ จงเขียนโปรแกรมรับค่า m และ n แล้วแสดงผลลัพธ์ ดังตัวอย่าง Input 3 2 Output ** จำนวนแถว = 3 จำนวนคอลัมน์ = 2 Loop นอกวนให้ครบ 3 รอบ Loop ในวนให้ครบ 2 รอบ แต่ละรอบวนปริ้น “*” จำนวนแถว และ จำนวนคอลัมน์ ขึ้นอยู่กับตัวแปร m และ n for(int i = 0 ; i < 3 ; i++) { for(int j = 0 ; j < 2 ; j++ ) { System.out.print(“*”); } System.out.println(); }
ตัวอย่าง : การแสดงผลสัญลักษณ์ต่าง ๆ ตามรูปแบบที่กำหนด
ตัวอย่าง 1 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ n for(int i = 1 ;i <= n ;i++){ for(int j=1 ; j <= n; j++){ System.out.print(“A”); } System.out.println();
ตัวอย่าง 2 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i for(int i = 1 ;i <= n ;i++){ for(int j=1 ; j <= i; j++){ System.out.print(“A”); } System.out.println();
กิจกรรมที่ 1 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i
ตัวอย่าง : การแสดงผลค่าของตัวแปร
ตัวอย่าง 3 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i for(int i = 1 ;i <= n ;i++){ for(int j=1 ; j <= i; j++){ System.out.print(j); }System.out.println(); }
กิจกรรมที่ 2 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i
ตัวอย่าง 4 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i for(int i = n ;i >= 1 ;i++){ for(int j=1 ; j <= i; j++){ System.out.print(i); }System.out.println(); }
กิจกรรมที่ 3 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i
กิจกรรมที่ 4 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ จำนวนแถว (i) ขึ้นอยู่กับ n จำนวนคอลัมน์ (j)ขึ้นอยู่กับ n
ตัวอย่าง : การแสดงผลค่าของสัญลักษณ์แบบมีทางเลือก
ตัวอย่าง 5 เขียนโปรแกรมรับค่า n จากนั้นแสดงผลทั้งหมด n บรรทัด บรรทัดอื่น ๆ แสดง A จำนวน n ตัว 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 n จำนวนแถว (i) ขึ้นอยู่กับ จำนวนคอลัมน์ (j)ขึ้นอยู่กับ n
ตัวอย่าง 6 เขียนโปรแกรมรับค่า n จากนั้นแสดงผลทั้งหมด n บรรทัด ถ้าเป็นบรรทัดคู่ แสดง v จำนวน 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 n จำนวนแถว (i) ขึ้นอยู่กับ จำนวนคอลัมน์ (j)ขึ้นอยู่กับ n
กิจกรรมที่ 5 เขียนโปรแกรมรับค่า n จากนั้นแสดงผลทั้งหมด n บรรทัด ถ้าเป็นบรรทัดคี่ แสดง [] จำนวนเท่ากับ หมายเลขบรรทัด ถ้าเป็นบรรทัดคู่ แสดง () จำนวนเท่ากับ หมายเลขบรรทัด n จำนวนแถว (i) ขึ้นอยู่กับ จำนวนคอลัมน์ (j)ขึ้นอยู่กับ i
ตัวอย่าง : การใช้หลายๆ loop ซ้อน
ตัวอย่าง 7 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ i ช่องว่าง ตัวเลข 1 3 2 4 for(int i = 1 ;i <= n ;i++){ for(int j=1;j<=n -i;j++){ System.out.print(“ “); } for( ; j <=n ; j++){ System.out.print(i); System.out.println();
ตัวอย่าง 8 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้ i ช่องว่าง ตัวเลข 4 1 3 2 for(int i = 0 ;i < n ;i++){ for(int j=0;j<i;j++){ System.out.print(“ “); } for(j=i ; j <n ; j++){ System.out.print(n-i); System.out.println();
กิจกรรมที่ 6 เขียนโปรแกรมรับค่า n และแสดงผลลัพธ์ ดังนี้
โจทย์ เขียนโปรแกรมรับจำนวนเต็มบวก 1 จำนวนและแสดงรูปดังตัวอย่างต่อไปนี้ Input 4 Output * * *** ***** ******* ช่องว่าง ดอกจัน ดอกจัน ช่องว่าง
โจทย์ ช่องว่าง แถวที่ 1 ช่องว่าง 3 ดอกจัน 1 แถวที่ 2 ช่องว่าง 2 ดอกจัน 2 แถวที่ 3 ช่องว่าง 1 ดอกจัน 3 แถวที่ 4 ช่องว่าง 0 ดอกจัน 4 * หมายเลขแถวส่งผลต่อจำนวนดอกจัน จำนวนช่องว่าง = n - จำนวนดอกจัน
โจทย์ ช่องว่าง แถวที่ 1 ช่องว่าง 3 ดอกจัน 1 for(int I =1 ; i<=n ; i++) { for(int j = 1; j<=n-i;j++) { System.out.print(“ ”); } for(; j<=n; j++) { System.out.print(“*”); ช่องว่าง แถวที่ 1 ช่องว่าง 3 ดอกจัน 1 แถวที่ 2 ช่องว่าง 2 ดอกจัน 2 แถวที่ 3 ช่องว่าง 1 ดอกจัน 3 แถวที่ 4 ช่องว่าง 0 ดอกจัน 4 จำนวนดอกจัน = หมายเลขแถว จำนวนช่องว่าง = n - จำนวนดอกจัน
โจทย์ * ดอกจัน (กลุ่มสุดท้าย) แถวที่ 1 ดอกจัน 0 แถวที่ 2 ดอกจัน 1 แถวที่ 3 ดอกจัน 2 แถวที่ 4 ดอกจัน 3 จำนวนดอกจัน = หมายเลขแถว - 1 for(j = 1; j<=i-1 ; j++){ System.out.print(“*”); } *
โจทย์ * for(int i =1 ; i<= n ; i++){ for(j=1 ; j <=n-i; j++){ System.out.print(" "); } for( ; j <=n ; j++){ System.out.print("*"); for(j=1 ; j<=i-1;j++){ System.out.println(); *