Cách Sử Dụng Vòng Lặp “while loops”

Trong bài viết này, chúng ta sẽ khám phá “while loops” – một cấu trúc lặp cơ bản trong lập trình. Bài viết cung cấp 20 ví dụ sử dụng chính xác về cú pháp và có nghĩa, cùng hướng dẫn chi tiết về ý nghĩa, cách dùng, bảng biến đổi cấu trúc, và các lưu ý quan trọng.

Phần 1: Hướng dẫn sử dụng “while loops” và các lưu ý

1. Ý nghĩa cơ bản của “while loops”

“while loops” là một cấu trúc điều khiển cho phép lặp đi lặp lại một khối mã lệnh miễn là một điều kiện cho trước vẫn đúng (true).

  • Cú pháp: while (điều_kiện) { // khối mã lệnh }

Ví dụ:

  • while (i < 10) { console.log(i); i++; } (In ra các số từ 0 đến 9.)

2. Cách sử dụng “while loops”

a. Cấu trúc cơ bản

  1. Khởi tạo biến: Xác định biến điều khiển vòng lặp.
    Ví dụ: let i = 0;
  2. Điều kiện lặp: Kiểm tra điều kiện trước mỗi lần lặp.
    Ví dụ: while (i < 5)
  3. Khối mã lệnh: Các lệnh được thực thi trong mỗi lần lặp.
    Ví dụ: console.log("Giá trị của i là: " + i);
  4. Cập nhật biến: Thay đổi giá trị biến điều khiển để tránh lặp vô hạn.
    Ví dụ: i++;

b. Các biến thể

  1. Vòng lặp while vô hạn (cẩn thận): while (true) { // khối mã lệnh }
    Ví dụ: while (true) { console.log("Lặp vô hạn!"); }
  2. Sử dụng break để thoát vòng lặp: while (điều_kiện) { if (điều_kiện_thoát) { break; } // khối mã lệnh }
    Ví dụ: while (i < 10) { if (i == 5) { break; } console.log(i); i++; }

c. Biến thể và cách dùng trong câu

Dạng Cấu trúc Ý nghĩa / Cách dùng Ví dụ
Cơ bản while (condition) { // code } Lặp lại khối mã khi điều kiện đúng. while (x < 10) { console.log(x); x++; }
break while (condition) { if (exit_condition) { break; } // code } Thoát khỏi vòng lặp khi gặp điều kiện thoát. while (true) { if (y > 5) { break; } y++; }

3. Một số cấu trúc liên quan

  • do...while: Thực hiện khối mã ít nhất một lần, sau đó kiểm tra điều kiện.
    Ví dụ: do { console.log(i); i++; } while (i < 5);
  • for loops: Thường dùng khi biết số lần lặp trước.
    Ví dụ: for (let i = 0; i < 5; i++) { console.log(i); }

4. Lưu ý khi sử dụng “while loops”

a. Ngữ cảnh phù hợp

  • Sử dụng khi số lần lặp không xác định trước, phụ thuộc vào một điều kiện.
    Ví dụ: Đọc dữ liệu từ một file cho đến khi gặp EOF (End Of File).

b. Phân biệt với các cấu trúc khác

  • while vs for:
    while: Lặp khi điều kiện đúng.
    for: Lặp với số lần xác định hoặc biết trước.
    Ví dụ: while (data != null) { process(data); } / for (let i = 0; i < 10; i++) { console.log(i); }

c. Tránh lặp vô hạn

  • Đảm bảo điều kiện lặp sẽ trở thành sai (false) sau một số lần lặp nhất định.
  • Kiểm tra kỹ logic của vòng lặp.

5. Những lỗi cần tránh

  1. Quên cập nhật biến điều khiển:
    – Sai: let i = 0; while (i < 10) { console.log(i); } (lặp vô hạn)
    – Đúng: let i = 0; while (i < 10) { console.log(i); i++; }
  2. Điều kiện lặp luôn đúng:
    – Sai: while (true) { // code } (cần có break)
    – Đúng: while (running) { // code if (condition) { running = false; } }
  3. Sử dụng sai biến điều khiển:
    – Sai: let i = 0; while (j < 10) { console.log(i); i++; } (j không được khởi tạo)
    – Đúng: let i = 0; while (i < 10) { console.log(i); i++; }

6. Mẹo để ghi nhớ và sử dụng hiệu quả

  • Hình dung: Vòng lặp while như một người bảo vệ, chỉ cho phép khối mã thực thi khi điều kiện được đáp ứng.
  • Thực hành: Viết các chương trình đơn giản sử dụng while loops.
  • Gỡ lỗi: Sử dụng công cụ gỡ lỗi để theo dõi giá trị các biến trong vòng lặp.

Phần 2: Ví dụ sử dụng “while loops” và các dạng liên quan

Ví dụ minh họa

  1. let i = 0; while (i < 5) { console.log("Số: " + i); i++; } (In ra các số từ 0 đến 4.)
  2. let count = 10; while (count > 0) { console.log(“Đếm ngược: ” + count); count–; } (Đếm ngược từ 10 đến 1.)
  3. let sum = 0; let num = 1; while (num <= 10) { sum += num; num++; } console.log("Tổng từ 1 đến 10: " + sum); (Tính tổng từ 1 đến 10.)
  4. let x = 2; let power = 0; while (power < 5) { console.log("2 mũ " + power + " = " + Math.pow(x, power)); power++; } (Tính lũy thừa của 2 từ 0 đến 4.)
  5. let str = “Hello”; let index = 0; while (index < str.length) { console.log("Ký tự thứ " + index + " là: " + str[index]); index++; } (In ra các ký tự trong chuỗi.)
  6. let temperature = 25; while (temperature < 30) { console.log("Nhiệt độ: " + temperature); temperature++; } (Mô phỏng tăng nhiệt độ.)
  7. let flag = true; let step = 1; while (flag) { console.log(“Bước: ” + step); step++; if (step > 5) { flag = false; } } (Sử dụng flag để dừng vòng lặp.)
  8. let dice = 0; while (dice != 6) { dice = Math.floor(Math.random() * 6) + 1; console.log(“Gieo xúc xắc: ” + dice); } (Gieo xúc xắc cho đến khi được 6.)
  9. let input = “”; while (input != “exit”) { input = prompt(“Nhập lệnh (exit để thoát):”); console.log(“Bạn đã nhập: ” + input); } (Nhận lệnh từ người dùng cho đến khi nhập “exit”.)
  10. let n = 1; while (n <= 100) { if (n % 2 == 0) { console.log("Số chẵn: " + n); } n++; } (Tìm và in ra các số chẵn từ 1 đến 100.)
  11. let a = 1; while (a <= 5) { console.log("Vòng lặp thứ " + a); a++; } (Đếm số vòng lặp.)
  12. let b = 5; while (b >= 1) { console.log(“Giá trị b: ” + b); b–; } (Đếm ngược sử dụng while loop.)
  13. let c = 0; while (c <= 10) { console.log("Số c: " + c); c += 2; } (Bước nhảy trong while loop.)
  14. let d = 10; while (d >= 0) { if (d === 5) { console.log(“Đạt đến số 5!”); } else { console.log(“Số d: ” + d); } d–; } (Điều kiện bên trong while loop.)
  15. let e = 1; let factorial = 1; while (e <= 5) { factorial *= e; e++; } console.log("5! = " + factorial); (Tính giai thừa.)
  16. let f = 1; while (f <= 10) { if (f % 3 === 0) { console.log("Số chia hết cho 3: " + f); } f++; } (Kiểm tra chia hết.)
  17. let g = 1; while (g <= 7) { console.log("Ngày thứ " + g + " trong tuần."); g++; } (Lặp qua các ngày trong tuần.)
  18. let h = 0; let fibonacci = [0, 1]; while (fibonacci.length < 10) { fibonacci.push(fibonacci[fibonacci.length – 1] + fibonacci[fibonacci.length – 2]); } console.log("Dãy Fibonacci: " + fibonacci); (Tạo dãy Fibonacci.)
  19. let secret = Math.floor(Math.random() * 10) + 1; let guess = 0; while (guess !== secret) { guess = parseInt(prompt(“Đoán số (1-10):”)); console.log(“Bạn đoán: ” + guess); } console.log(“Chúc mừng, bạn đã đoán đúng!”); (Đoán số bí mật.)
  20. let m = 10; while (m > 0) { console.log(“Số lượng còn lại: ” + m); m–; } console.log(“Hết!”); (Đếm ngược đến khi hết.)