คำสั่งวนซ้ำ(loop) for,while,do-while – พื้นฐานจาวา

loop

คำสั่งวนซ้ำ คืออะไร?

คำสั่งวนซ้ำ (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. 1 2 4 8 16
  2. 3 6 9 12 15 18 21
  3. 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

บทนี้เราได้เรียนรู้เกี่ยวกับคำสั่งวนซ้ำแล้ว ในบทถัดไปเราจะเรียนเรื่องการสร้างและการใช้งานอาเรย์ในภาษาจาวากัน