การทำงานแบบวนซ้ำ (Iteration)
การทำงานกับ loop มากกว่า 1 loop (ต่อ)
- - - - - แถวที่ 1 จะพิมพ์ “+. 5 ครั้ง - - - - - แถวที่ 1 จะพิมพ์ “+. 5 ครั้ง แถวที่ 2 จะพิมพ์ “-” 5 ครั้ง แถวที่ 3 จะพิมพ์ “-” 5 ครั้ง การทำจะทำแถวที่ 1 ก่อนแล้วจึงทำแถวที่ 2 และแถวที่ 3 ตามลำดับ
ให้ i คือ ตัวนับแถว int i=1, while(i<=5) print + i=i+1 end while i=1 new line while(i<=5) print + i=i+1 end while i=1 new line while(i<=5) print + i=i+1 end while i=1 new line
* * * i<=5 false i<=5 i<=5 false false ture ture ture i=++ \n \n
public static void main(String s[ ]){ int i=1; while(i<=5){ class TestLoop1{ public static void main(String s[ ]){ int i=1; while(i<=5){ System.out.print("*"); i++; } i =1; System.out.println(""); System.out.print(“-"); }
การทำงานกับ loop มากกว่า 1 loop (ต่อ) ในกรณีที่เป็น loop ซ้อน loop จะทำโดยผ่านทาง outer loop แล้วจึงทำ inner loop จนเงื่อนไขของ inner loop เป็นเท็จ ก็จะมาทำ outer loop ต่อ
Example
แถวที่ 1 จะพิมพ์คอลัมน์ 1 ถึง 5 Col 1 Col 5 แถวที่ 1 จะพิมพ์คอลัมน์ 1 ถึง 5 Row 1 แถวที่ 2 จะพิมพ์คอลัมน์ 1 ถึง 5 แถวที่ 3 จะพิมพ์คอลัมน์ 1 ถึง 5 แถวที่ 4 จะพิมพ์คอลัมน์ 1 ถึง 5 แถวที่ 5 จะพิมพ์คอลัมน์ 1 ถึง 5 Row 5 ทุกแถวจะพิมพ์คอลัมน์ 1 ถึง 5 แสดงว่าเมื่อพิมพ์ 5 ครั้งแล้วจะมีการขึ้น บรรทัดใหม่และเริ่มค่าของคอลัมน์ใหม่จนกว่าจะครบ 5 แถว
ให้ i คือ แถวและ j คือหลัก int i=1, j=1 while(i<=5) while(j<=5) print * j=j+1 end while i=i+1 j=1 new line false i<=5 ture j<=5 false ture * j=j+1 i=i+1 j=1 \n
class TestLoop2{ public static void main(String s[ ]){ int i=1, j=1; while(i<=5){ while(j<=5){ System.out.print("*"); j++;} i++; j=1; System.out.println("");} }
Example
Col 1 Row 1 Col 3 Row 2 Row 3 Row 4 Col 5 Row 5 Col 2 Col 4
การทำงาน แถวที่ 1 พิมพ์ *, ตัดบรรทัด แถวที่ 2 พิมพ์ *, พิมพ์ *, ตัดบรรทัด แถวที่ 3 พิมพ์ *, พิมพ์ *, พิมพ์ *, ตัดบรรทัด แถวที่ 4 พิมพ์ *, พิมพ์ *, พิมพ์ *, พิมพ์ *, ตัดบรรทัด แถวที่ 5 พิมพ์ *, พิมพ์ *, พิมพ์ *, พิมพ์ *, พิมพ์ *, ตัดบรรทัด แสดงว่าต้องมีตัวนับบรรทัดและตัวนับหลัก จำนวนครั้งที่พิมพ์จะเท่ากับจำนวนแถว หลังจากจบแต่ละแถวแล้วจะเริ่มนับหลักใหม่ ให้ i คือ แถวและ j คือหลัก
int i=1, j=1 while(i<=5) while(j<=i) print * j=j+1 end while i=i+1 j=1 new line false i<=5 ture j<=i false ture * j=j+1 i=i+1 j=1 \n
class TestLoop2{ public static void main(String s[ ]){ int i=1, j=1; while(i<=5){ while(j<=i){ System.out.print("*"); j++;} i++; j=1; System.out.println("");} }
Example แถวที่ 2 เริ่มจาก 1 ระยะห่าง = 1 แถวที่ 3 เริ่มจาก 2 ระยะห่าง = 2
Example หลักที่ 1 เริ่มจาก 0 ระยะห่าง = 1 หลักที่ 2 เริ่มจาก 0 ระยะห่าง = 2
แนวคิด หลัก1 หลัก2 หลัก3 หลัก4 แถว1 แทนด้วย j หลัก1 หลัก2 หลัก3 หลัก4 แถว1 พิมพ์ 0, พิมพ์ 0, พิมพ์ 0, พิมพ์ 0, ตัดบรรทัด พิมพ์ 1, พิมพ์ 2, พิมพ์ 3, พิมพ์ 4, ตัดบรรทัด พิมพ์ 2, พิมพ์ 4, พิมพ์ 6, พิมพ์ 8, ตัดบรรทัด แถว2 แถว3 แทนด้วย i การแสดงผลจะแสดงทีละ 1 แถว
j=0 j=1 j=2 j=3 i=0 new line i=1 0+1 1+1 2+1 3+1 i=2 0+2 2+2 4+2 6+2
ตัวอย่าง I=0, J=0, num=0 While (I < 3) 2.1 While (J<=3) 2.2 num = num+I 2.3 J=J+1 2.4 Display num 2.5 End while I=I+1, J=0, num=0 End while I<3 J3 num I J T 1 2 3 4 F
class loop2{ public static void main(String s[]){ int i=0, j=0, num=0; while(i<3){ while(j<=3){ num = num+i; j++; System.out.print(num+" "); } System.out.println(""); i++; j=0; num=0; } }
จงเขียน Pseudo code และ Flowchart ของโปรแกรมที่มีการประมวลผลและแสดงออกดังภาพ 0 1 0 2 4 0 3 6 8 0 n 2n 3n ….
โจทย์ จงเขียน โปรแกรมของตารางผลลัพธ์ของสูตรคูณ (แม่ 2 - 12) 2 3 4 ... 12 4 6 8 24 . . . . 24 36 48 144