คำสั่งวนซ้ำ คืออะไร?
คำสั่งวนซ้ำ (Loop Statements) คือ คำสั่งที่ใช้ให้โปรแกรมทำคำสั่งซ้ำหลายๆรอบ จนกว่าจะถึงเงื่อนไขที่กำหนด ซึ่งจะช่วยให้การเขียนโปรแกรมทำได้ง่ายและสะดวกขึ้น ไม่ต้องเขียนคำสั่งเดิมหลายครั้ง
ในภาษาจาวามีคำสั่งวนลูป 3 ชนิดหลักๆ คือ
1. for
2. while
3. do-while
แต่ละคำสั่งมีรูปแบบและวิธีใช้งานที่แตกต่างกัน สามารถเลือกใช้ตามความเหมาะสม บทนี้ Matter Devs จะพาทุกคนไปเรียนรู้แต่ละคำสั่งกัน
For Loops
คำสั่ง for เป็นคำสั่งที่สั่งให้วนซ้ำหลายๆครั้ง มักใช้เมื่อทราบจำนวนครั้งที่แน่นอน มีรูปแบบดังนี้
for (initialization; condition; update) {
statements;
}
- initialization คือ การกำหนดค่าเริ่มต้น
- condition คือ เงื่อนไข
- update คือ ค่าเพิ่มหรือค่าลด
ตัวอย่างเช่น…
public class ForLoop { public static void main(String[] args) { int i; for (i = 1; i <= 10; i++) { System.out.print(i+" "); } } } //output 1 2 3 4 5 6 7 8 9 10
จงเขียนโปรแกรมให้ได้ผลลัพธ์ดังนี้
- 1 2 4 8 16
- 3 6 9 12 15 18 21
- 99 98 97 96 95
While Loops
คำสั่ง while จะทำงานคล้าย If statements โดยตรวจสอบเงื่อนไข หากเป็นจริงจะดำเนินการตาม statements แล้ววนกลับมาตรวจสอบเงื่อนไขอีกครั้งไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเท็จ มีรูปแบบดังนี้
while (condition) {
statements;
}
ตัวอย่างเช่น…
public class whileLoop { public static void main(String[] args) { int num = 5; int sum = 0; while(num>0){ sum += num; System.out.print(num+" "); num--; } System.out.println("sum = " + sum); } } //output 5 4 3 2 1 sum = 15
Do while loops
คำสั่ง do while มีหลักการเดียวกับ while แต่ต่างกันตรงที่ จะทำก่อนหนึ่งรอบ ไม่ว่าจะตรงเงื่อนไขหรือไม่ แล้วค่อยตรวจสอบเงื่อนไขทีหลัง ถ้าเงื่อนไขเป็นเท็จจะจบการทำงานทันที โดยมีรูปแบบดังนี้
do {
statements;
} while (condition);
เพื่อให้เข้าใจความแตกต่างระหว่าง while กับ do-while เราขอยกตัวอย่างโปรแกรมดังนี้
public class whileVSdowhile { public static void main(String[] args) { int j=3; while (j > 3) { System.out.println("while loop executed"); } do { System.out.println("do while loop executed"); } while (j > 3); } } //output do while loop executed
จะเห็นได้ว่าคำสั่ง while จะเช็คเงื่อนไขก่อน ถ้าเงื่อนไขเป็นเท็จก็จะข้ามไปทำคำสั่งถัดไป ส่วนคำสั่ง do-while จะทำก่อนหนึ่งรอบแล้วเช็คเงื่อนไข หากเงื่อนไขเป็นเท็จก็จะจบการทำงาน
ยกตัวอย่างโปรแกรมที่ใช้คำสั่ง do-while เช่น ให้ผู้ใช้ตอบคำถามไปเรื่อยๆจนกว่าจะตอบถูก
import java.util.Scanner; public class Dowhile { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("1+2 = ?"); int ans = 0; do { System.out.print("Answer: "); ans = in.nextInt(); } while (ans != 3); System.out.println("Correct!"); } }
output…
1+2 = ?
Answer: 2
Answer: 4
Answer: 8
Answer: 0
Answer: 3
Correct!
ข้อแตกต่างการใช้งาน Loop
- For ใช้กรณีรู้จำนวนรอบที่ชัดเจน
- While ใช้กรณีที่ไม่รู้จำนวนรอบ
- Do-while ใช้กรณีที่อยากให้ทำก่อนหนึ่งรอบ แล้วทำซ้ำไปเรื่อยๆจนเงื่อนไขเป็นเท็จ
Nested loop
Nested loop หรือการวนซ้ำซ้อน (loop ซ้อน loop) คือ การสั่งให้ทำคำสั่งหลายรอบ และในการทำงานแต่ละรอบก็จะสั่งให้ทำคำสั่งที่อยู่ภายในนั้นอีกหลายรอบ ยกตัวอย่างเช่น…
public class NestedLoop { public static void main(String[] args) { int limit = 6; for(int i = 1; i <= limit; i++) { for(int j = 1; j <= i; j++) { System.out.print(j); } System.out.print("n"); } } }
output…
1
12
123
1234
12345
123456
บทนี้เราได้เรียนรู้เกี่ยวกับคำสั่งวนซ้ำแล้ว ในบทถัดไปเราจะเรียนเรื่องการสร้างและการใช้งานอาเรย์ในภาษาจาวากัน