Vòng lặp (for, while, do-while) & Tự động hóa

Đăng ngày: 22-08-2025 17:45
học javajava cho người mới bắt đầujava cơ bảnlập trình javavòng lặp trong javalệnh forlệnh whilelệnh do-whilebreakcontinue

Chào mừng bạn đã quay trở lại series "Chinh Phục Java"! Ở bài trước, bạn đã học cách làm cho chương trình đưa ra quyết định bằng `if-else`. Hôm nay, chúng ta sẽ học một kỹ năng còn mạnh mẽ hơn. Đó là khả năng thực hiện một công việc nhiều lần. Kỹ năng này được thực hiện thông qua **vòng lặp (loops)**. Vòng lặp là trái tim của sự tự động hóa trong lập trình.

1. Tại sao chúng ta cần Vòng lặp?

Hãy tưởng tượng bạn cần in ra các số từ 1 đến 100. Bạn có thể viết 100 dòng lệnh `System.out.println()` khác nhau. Nhưng cách đó rất tốn công và không hiệu quả. Sẽ ra sao nếu bạn cần in đến 1000? Vòng lặp giải quyết vấn đề này. Nó cho phép bạn viết một khối lệnh một lần. Sau đó, ra lệnh cho máy tính lặp lại khối lệnh đó nhiều lần. Java cung cấp ba loại vòng lặp chính: `for`, `while`, và `do-while`.

2. Vòng lặp `for`: Khi biết trước số lần lặp

Vòng lặp `for` là lựa chọn hoàn hảo khi bạn biết chính xác số lần cần lặp lại một công việc. Nó có một cú pháp rất gọn gàng và rõ ràng. Cú pháp này bao gồm ba phần, được ngăn cách bởi dấu chấm phẩy `;` bên trong cặp ngoặc đơn `()`. Ba phần đó là: Khởi tạo, Điều kiện và Bước nhảy.

Khởi tạo (Initialization): Chạy một lần duy nhất khi vòng lặp bắt đầu. Thường dùng để khai báo một biến đếm (ví dụ: `int i = 1`).

Điều kiện (Condition): Được kiểm tra trước mỗi lần lặp. Nếu điều kiện là `true`, vòng lặp sẽ tiếp tục. Nếu là `false`, vòng lặp sẽ kết thúc.

Bước nhảy (Increment/Decrement): Chạy sau mỗi lần lặp. Thường dùng để tăng hoặc giảm biến đếm (ví dụ: `i++`).


public class ForLoopExample {
    public static void main(String[] args) {
        // Vòng lặp này sẽ in ra các số từ 1 đến 5
        System.out.println("Bắt đầu đếm:");

        for (int i = 1; i <= 5; i++) {
            // Khối lệnh này sẽ được lặp lại 5 lần
            System.out.println("Số hiện tại là: " + i);
        }

        System.out.println("Kết thúc đếm.");
    }
}

Trong ví dụ này, `i` bắt đầu từ 1. Vòng lặp tiếp tục khi `i <= 5`. Sau mỗi lần lặp, `i` tăng lên 1 đơn vị. Khi `i` bằng 6, điều kiện `6 <= 5` là sai, và vòng lặp kết thúc.

Vòng lặp (for, while, do-while) & Tự động hóa - 0

3. Vòng lặp `while`: Khi lặp dựa trên điều kiện

Đôi khi, chúng ta không biết trước số lần lặp. Chúng ta chỉ muốn lặp lại cho đến khi một điều kiện nào đó không còn đúng nữa. Ví dụ: "Hãy tiếp tục rút tiền cho đến khi tài khoản hết tiền". Đây là lúc vòng lặp `while` tỏa sáng. Vòng lặp `while` chỉ có một phần: điều kiện. Nó sẽ kiểm tra điều kiện trước mỗi lần lặp. Nếu điều kiện là `true`, nó thực thi khối lệnh.

Điều quan trọng khi dùng `while` là phải đảm bảo rằng có một thứ gì đó bên trong vòng lặp làm thay đổi điều kiện. Nếu không, điều kiện sẽ luôn là `true`. Điều này sẽ tạo ra một **vòng lặp vô tận** (infinite loop). Nó sẽ làm chương trình của bạn bị treo. Luôn cẩn thận với điều này.


public class WhileLoopExample {
    public static void main(String[] args) {
        int countDown = 3;

        System.out.println("Bắt đầu đếm ngược để phóng tên lửa!");

        while (countDown > 0) {
            System.out.println(countDown);
            countDown--; // Giảm biến đếm đi 1, đây là bước quan trọng
        }

        System.out.println("Phóng!");
    }
}

4. Vòng lặp `do-while`: Luôn chạy ít nhất một lần

Vòng lặp `do-while` rất giống với `while`. Nhưng nó có một khác biệt quan trọng. Nó sẽ **thực thi khối lệnh trước, sau đó mới kiểm tra điều kiện**. Điều này đảm bảo rằng khối lệnh bên trong vòng lặp `do-while` sẽ luôn được chạy ít nhất một lần. Ngay cả khi điều kiện là sai ngay từ đầu.

Cấu trúc này hữu ích trong các trường hợp bạn cần thực hiện một hành động trước khi kiểm tra. Ví dụ như hiển thị một menu và yêu cầu người dùng nhập lựa chọn. Bạn luôn muốn hiển thị menu ít nhất một lần. Sau đó mới kiểm tra xem lựa chọn của họ có phải là "Thoát" hay không.


import java.util.Scanner;

public class DoWhileExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int choice;

        do {
            System.out.println("\n--- MENU ---");
            System.out.println("1. Bắt đầu game");
            System.out.println("2. Xem hướng dẫn");
            System.out.println("0. Thoát");
            System.out.print("Nhập lựa chọn của bạn: ");
            
            choice = scanner.nextInt();
            
            // Xử lý lựa chọn ở đây (sẽ học ở bài sau)

        } while (choice != 0); // Lặp lại cho đến khi người dùng chọn 0

        System.out.println("Cảm ơn đã sử dụng chương trình!");
    }
}

5. `break` và `continue`: Điều khiển vòng lặp nâng cao

Đôi khi bạn muốn thoát khỏi một vòng lặp sớm hơn. Hoặc bạn muốn bỏ qua lần lặp hiện tại và đi đến lần lặp tiếp theo. Java cung cấp hai lệnh để làm việc này.

  • break;: Lệnh này sẽ **thoát khỏi vòng lặp ngay lập tức**. Chương trình sẽ tiếp tục chạy ở dòng lệnh đầu tiên sau vòng lặp.
  • continue;: Lệnh này sẽ **bỏ qua phần còn lại của lần lặp hiện tại**. Nó sẽ nhảy đến đầu vòng lặp để bắt đầu lần lặp tiếp theo.

// In ra các số từ 1 đến 10, nhưng bỏ qua số 5 và dừng lại ở số 8
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        continue; // Bỏ qua lần lặp này khi i = 5
    }
    if (i == 8) {
        break; // Thoát khỏi vòng lặp khi i = 8
    }
    System.out.println(i); // Kết quả sẽ in ra: 1, 2, 3, 4, 6, 7
}

Kết luận

Bạn vừa nắm trong tay một công cụ cực kỳ mạnh mẽ: vòng lặp. Với `for`, `while`, và `do-while`, bạn có thể tự động hóa các công việc nhàm chán. Điều này giúp code của bạn trở nên ngắn gọn và hiệu quả hơn rất nhiều. Hãy thực hành thật nhiều để thành thạo chúng. Ở bài tiếp theo, chúng ta sẽ học về Mảng. Đây là cách để lưu trữ và xử lý một danh sách dữ liệu. Hẹn gặp lại bạn!

0 Bình luận