การทำซ้ำ (Repeation or Loop)
การทำซ้ำ คือ การเขียนกระบวนการให้ทำหลายครั้งอย่างมีเงื่อนไข ซึ่งมีการทำงานที่สำคัญ 4 ส่วนคือการกำหนดค่าเริ่มต้นก่อนทำซ้ำ การตรวจการสิ้นสุดในการทำซ้ำ กิจกรรมในขณะทำซ้ำ และกิจกรรมหลังจบการทำซ้ำ คำสั่งที่คุ้นเคยสำหรับควบคุมการทำซ้ำคือ while หรือ for และเป็น
ตัวอย่าง 2.7 แสดงการทำซ้ำเท่าจำนวนสมาชิกในตารางแอสกี้ด้วย for
– คำถาม : .length และ .length() แตกต่างกันอย่างไร
– คำถาม : ผลลัพธ์ของโปรแกรมนี้ประมาณกี่บรรทัด
System.out.println(“ASCII character :: “); // j0204
for (int i=0; i<256; i++) {
System.out.print((char)i + ” “);
// System.out.println(i); 0 – 255
}
String s = “thaiall”;
System.out.println(s + s.length());
ตัวอย่าง 2.8 แสดงคำสั่ง while เพื่อทำซ้ำ แบบตรวจสอบก่อนประมวลผล
– คำถาม : try ทำงานเมื่อไร และผลลัพธ์เป็นอย่างไร
System.out.println(“print 1 to 10 :: “); // j0205
int i;
i = -5;
while (i <= 5) {
try {
i++;
System.out.println((double)5/i); //Infinity on i=0
System.out.println(5/i); //catch worked on i=0
}
catch (ArithmeticException e) {
System.out.println(“may divide by zero”);
}
}
int k = 0;
i = 0;
while (i < 5) {
System.out.print(++k);
k = k + (i++);
System.out.print(k–);
} // 11122447711
ตัวอย่าง 2.9 แสดงคำสั่ง while เพื่อทำซ้ำ แบบประมวลผลก่อนตรวจสอบ
– โปรแกรมนี้ตรวจสอบความผิดพลาดของอาร์เรย์ว่าเรียกใช้ตัวที่ไม่ประกาศหรือไม่
System.out.println(“print 1 to 10 :: “); // j0206
int i;
i = 1;
try {
do {
System.out.println(i);
i++;
} while (i <= 10);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(“over index of array”);
}
ตัวอย่าง 2.10 พิมพ์ตัวอักษรแบบพิมพ์ใหญ่และเล็กสลับกัน
String s = “superman”;
for (int i=0;i<s.length();i++)
if ((i % 2) == 0)
System.out.print(s.substring(i,i + 1));
else
System.out.print(s.substring(i,i + 1).toUpperCase());
ตัวอย่าง 2.11 การทำซ้ำซ้อนกันแบบที่ 1
class Pyramid01 {
public static void main(String args[]) {
int k = 4;
for (int i=1;i<=k;i++) {
for (int j=2;j<=i;j++) { System.out.print(” “); }
System.out.print(i+””+i);
for (int j=k;j>=(i+1);j–) { System.out.print(“**”); }
System.out.println(i+””+i);
}
}
}
ตัวอย่าง 2.12 การทำซ้ำซ้อนกันแบบที่ 2
class Pyramid02 {
public static void main(String args[]) {
int k = 4;
for (int i=1;i<=k;i++) {
for (int j=i;j<=(i+2);j++) { System.out.print(j); }
for (int j=1;j<=(2+i);j++) { System.out.print(“*”); }
System.out.println();
}
}
}
ตัวอย่าง 2.13 การทำซ้ำซ้อนกันแบบที่ 3
class Pyramid03 {
public static void main(String args[]) {
int k = 4;
for (int i=1;i<=k;i++) {
System.out.print(i+””+(i+4));
for (int j=1;j<=(4+i);j++) {
System.out.print(“*”);
}
System.out.println();
}
}
}
ตัวอย่าง 2.14 การทำซ้ำซ้อนกันแบบที่ 4
class Pyramid04 {
public static void main(String args[]) {
int k = 4;
for (int i=1;i<=k;i++) {
for (int j=1;j<=i;j++) { System.out.print(“*”); }
for (int j=i;j>=2;j–) { System.out.print(j); }
for (int j=1;j<=i;j++) { System.out.print(j); }
System.out.println();
}
}
}