Tìm hiểu vòng lặp do...while trong JavaScript thông qua ví dụ

Vòng lặp do..while JavaScript dùng để thực thi câu lệnh lặp lại liên tục mà không biết trước số lần lặp & vòng lặp dừng khi điều kiện lặp là sai.
Tìm hiểu vòng lặp do...while trong JavaScript thông qua ví dụ

Tìm hiểu vòng lặp do...while trong JavaScript thông qua ví dụ
📑 Mục lục (click để xem)

Giới thiệu

Trong lập trình JavaScript, vòng lặp do..while là một cấu trúc đặc biệt: nó luôn thực thi ít nhất một lần trước khi kiểm tra điều kiện. Đây là điểm khác biệt quan trọng so với whilefor. Bài viết này sẽ hướng dẫn bạn chi tiết về cú pháp, cách hoạt động, ví dụ minh họa, và ứng dụng thực tế.

Hinh anh vong lap do while trong javascript

Có những tình huống trong khi lập trình khi cần thực hiện đi thực hiện lại một hành động nhất định hoặc giả sử trong một vòng lặp liên tục. Để thực hiện các hành động như vậy, bạn phải viết mã lặp đi lặp lại cho đến khi đạt được con số mà bạn muốn thực hiện vòng lặp.

Vòng lặp do…while, việc kiểm tra điều kiện bắt buộc diễn ra ở cuối vòng lặp. Vì việc kiểm tra bất kỳ câu lệnh khớp nào diễn ra ở cuối vòng lặp, điều này kết luận rằng toàn bộ vòng lặp sẽ được thực thi trước khi bất kỳ kiểm tra nào xảy ra. Do đó, vòng lặp do…while thực hiện lệnh ít nhất một lần kể cả trong trường hợp khi điều kiện giá trị ra là sai - nghĩa là thực hiện trước sau đó mới kiểm tra điều kiện.

Sau đây là cú pháp được sử dụng cho vòng lặp do…while trong mã JavaScript:

do {

// Khối lệnh được thực thi

} while (condition);

Trong đó:

Condition là điều kiện của vòng lặp. Nếu điều kiện này đúng thì vòng lặp tiếp tục thực thi. Nếu điều kiện này sai thì vòng lặp kết thúc.

Lưu đồ thuật toán của vòng lặp do...While trong JavaScript:

Hinh anh vong lap do while trong javascript 1

Cách thức thực hiện của vòng lặp While:

● Phần thân của vòng lặp được thực hiện đầu tiên. Sau đó, điều kiện được đánh giá.

● Nếu điều kiện đánh giá là đúng (true), phần thân của vòng lặp do câu lệnh bên trong sẽ được thực hiện lại.

● Điều kiện được đánh giá một lần nữa.

● Nếu điều kiện đánh giá còn đúng (true), phần thân của vòng lặp do câu lệnh bên trong sẽ được thực hiện lại.

● Quá trình này tiếp tục cho đến khi điều kiện kiểm tra là sai (false). Sau đó, vòng lặp dừng lại.

Lưu ý:

● Nếu bạn sử dụng một biến trong điều kiện, bạn phải khởi tạo nó trước vòng lặp và tăng dần nó trong vòng lặp. Nếu không vòng lặp sẽ không bao giờ kết thúc và nó khiến chương trình bị lỗi. Điều này sẽ làm sập trình duyệt của bạn.

● Nếu điều kiện luôn đúng thì vòng lặp sẽ không bao giờ kết thúc. Điều này cũng sẽ làm sập trình duyệt của bạn. Do đó, bên trong đoạn mã mà bạn muốn thực thi, bạn phải nghiên cứu thêm vào một số câu lệnh nào đó để làm cho điều kiện dần dần trở thành bị sai.

● Luôn nhớ sử dụng dấu chấm phẩy ở cuối câu lệnh sau khi xác định chúng.

● Vòng lặp do...while tương tự như vòng lặp while. Sự khác biệt duy nhất là trong vòng lặp do…while, phần thân của vòng lặp được thực hiện ít nhất một lần.

Ví dụ 1: Tính tổng các số tự nhiên

Trước khi bắt đầu viết chương trình JavaScript bạn cần cài đặt phần mềm Notepad ++ hoặc các phần mềm, công cụ viết code khác. Viết đoạn mã sau:


<!DOCTYPE html>
<html lang="en">
    <head>
   <meta charset="UTF-8">
       <title> Tính tổng các số tự nhiên bằng vòng lặp do..While JS </title>
    </head>
     <body>
    <div style="text-align: justify;"><p><span style="color:black; font-family:Tahoma; font-size:14pt;" >
    <button onclick="Tinhtong()">Tính tổng</button>
    <p id="ketqua"></p>
  </p></span></div>
      <script type="text/javascript">
function Tinhtong () {
var num = parseInt(prompt("Nhập vào 1 số bất kỳ để tính tổng:"));
var kq = 0;
var i = 0;
   do {
            kq = kq + i;
            i++;
        }   while(i<=num);
  document.getElementById("ketqua").innerHTML = kq;
}
        </script>

    </body>
</html>

Phân tích mã:

Trong chương trình trên, người dùng được nhắc nhập một số.

Ở đây, hàm parseInt() được sử dụng vì hàm prompt() nhận đầu vào từ người dùng dưới dạng một chuỗi. Và khi các chuỗi số được thêm vào, nó sẽ hoạt động như một chuỗi. Vì vậy hàm parseInt(), được sử dụng để chuyển đổi một chuỗi số thành số. Lưu giá trị nhập vào cho biến số là num.

Xác định 2 biến số: biến i dùng cho biến đếm, biến số kq dùng cho kết quả tính tổng. Ban đầu trước khi vào vòng lặp ta gán i=0 và kq=0.

Bắt đầu vòng lặp do..while ta tính tổng theo công thức: kq=kq+i và sau mỗi lần lặp ta tăng biến đếm i lên 1 đơn vị. Sau đó kiểm tra điều kiện xem i còn thỏa mãn nhỏ hơn hoặc bằng số nhập vào num hay không ? Vòng lặp sẽ dừng nếu điều kiện không đáp ứng (False) nghĩa là i lớn hơn num.

Kết thúc vòng lặp biến kq sẽ lưu kết quả tính tổng và được in ra màn hình.

Kết quả thực thi của chương trình Tính tổng của 100 số tự nhiên đầu tiên trong JavaScript như hình ảnh dưới đây:

Hinh anh lap trinh javascript 2

Ví dụ 2: Sử dụng câu lệnh do.. while trong JavaScript để tạo một trò chơi đoán số nguyên ngẫu nhiên trong khoảng từ 1 đến 10. Và bạn phải thực hiện một số lần đoán cho đến khi số của bạn khớp với số ngẫu nhiên.

Trước khi bắt đầu viết chương trình JavaScript bạn cần cài đặt phần mềm Notepad ++ hoặc các phần mềm, công cụ viết code khác. Viết đoạn mã sau:


<!DOCTYPE html>
<html lang="en">
    <head>
     <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="src/style.css">
       <title> </title>
    </head>
    <body>
    <h1 id="header"></h1>
        <script type="text/javascript">
// Tạo một số bí mật từ 1 đến 10
const MIN = 1;
const MAX = 10;

var ran_num = Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;

var lan_doan = 0; // để lưu trữ số lần đoán
var dau = ''; // để lưu trữ gợi ý
var num = 0;
do {
  // nhận đầu vào từ người dùng và lấy số nguyên
  var num = parseInt(prompt(`Vui lòng nhập một số giữa ${MIN} và ${MAX}` + dau));

  // tăng số lần đoán
  lan_doan++;

  // kiểm tra số đầu vào với số bí mật cung cấp gợi ý nếu cần
  if (num > ran_num) {
    dau = ', và ít hơn ' + num;
  } else if (num < ran_num) {
    dau = ', và lớn hơn ' + num;
  } else if (num == ran_num) {
    alert(`Hoan hô! bạn đã đúng sau ${lan_doan} lần đoán.`);
  }
} while (num != ran_num);
        </script>

    </body>
</html>

Phân tích mã:

Đầu tiên, khai báo các hằng số MIN và MAX và khởi tạo các giá trị của chúng thành 1 và 10.

Sử dụng hàm Math.random() để tạo số dấu phẩy động ngẫu nhiên có giá trị trong khoảng 0 và 1 (bao gồm 0 nhưng không bao gồm 1). Sau đó, cần sử dụng hàm Math.floor() để chuyển nó thành số nguyên.

Khai báo ba biến: lan_doan, dau và num để lưu trữ số lần đoán, gợi ý và số đầu vào của người dùng.

Sử dụng hàm prompt() để lấy đầu vào từ người dùng. Hàm prompt() trả về một chuỗi, do đó, bạn cần sử dụng hàm parseInt() để chuyển đổi nó thành một số nguyên.

Tăng số lần đoán (lan_doan) trong mỗi lần lặp lại.

Kiểm tra số đầu vào với số bí mật (ngẫu nhiên) và đưa ra gợi ý. Nếu các số được khớp, hãy hiển thị thông báo bằng hàm alert().

Thực hiện lần lặp tiếp theo cho đến khi số khớp với số bí mật.

Kết quả thực thi của chương trình đoán số bí mật trong JavaScript trên như hình ảnh dưới đây:

Hinh anh lap trinh javascript 3

Case Study: Kiểm tra đầu vào người dùng

Một ứng dụng thực tế của vòng lặp do..while là buộc người dùng nhập dữ liệu hợp lệ. Ví dụ:


let password;
do {
  password = prompt("Nhập mật khẩu (ít nhất 6 ký tự):");
} while (password.length < 6);

alert("Mật khẩu hợp lệ: " + password);

Trong ví dụ trên, chương trình sẽ yêu cầu người dùng nhập mật khẩu cho đến khi đủ 6 ký tự. Đây là tình huống điển hình áp dụng vòng lặp do..while.

Kết luận

Vòng lặp do..while trong JavaScript hữu ích khi bạn cần đảm bảo khối lệnh chạy ít nhất một lần trước khi kiểm tra điều kiện. Tuy nhiên, bạn cần thận trọng để tránh rơi vào vòng lặp vô hạn. Với những ứng dụng như kiểm tra đầu vào, trò chơi đoán số, hoặc xử lý dữ liệu lặp ít nhất một lần, do..while là lựa chọn phù hợp.

❓ Câu hỏi thường gặp (FAQ)

Điểm khác biệt chính của do..while và while là gì?

Do..while luôn thực hiện ít nhất một lần, còn while thì không.

Có nên dùng do..while để xử lý dữ liệu lớn không?

Không nên, vì nếu sai điều kiện có thể gây vòng lặp vô hạn.

Ứng dụng thực tế của do..while là gì?

Thường dùng cho việc nhập liệu, kiểm tra đầu vào cho đến khi hợp lệ.

Đăng nhận xét