Trang chủ > Javascript cơ bản

Lý thuyết

Mục tiêu

Sinh viên hiểu được khái niệm về lệnh do...while và cách sử dụng chúng trong bài tập thực tế.

Tổng quan

Tương tự như lệnh while, lệnh do...while xử lí 1 biểu thức điều kiện và 1 khối lệnh được lặp lại cho đến khi giá trị của biểu thức cho ra giá trị false:

do {
  //statement or block
} while (condition)

Tuy nhiên nó xử lí khối lệnh một lần trước khi biểu thức điều kiện được kiểm tra, nghĩa là khối lệnh đó sẽ được xử lí ít nhất 1 lần.

Chúng ta hãy xem một số ví dụ. Mã lệnh sau xử lí lệnh in 6 lần (nhiều hơn một lần so với lệnh while thông thường):

var i = 0;
do {
  console.log(i + " ");   //prints: 0 1 2 3 4 5
} while(i++ < 5);

Trong khi mã lệnh sau vận hành một cách tương tự như một lệnh while:

var result = 0;
do {
  result += 0.1;
  console.log(result);
} while (result < 1);

Điều này là vì giá trị được in sau khi nó được cộng dồn, và sau đó biểu thức điều kiện được kiểm tra trước khi đi vào khối lệnh xử lí lần nữa.

Lệnh do...while rút gọn vận hành một cách khác. Ở đây là một ví dụ:

var result = 0;
do {
  console.log(result);
} while ((result += 0.1) < 1);

Giá trị ban đầu của biến result luôn được in đầu tiên bởi lệnh được xử lí ít nhất một lần trước khi biểu thức điều kiện được kiểm tra lần đầu.


Bài tập

Cho 1 số nguyên dương n. Viết một chương trình đếm và in ra màn hình có bao nhiêu lần số đã cho chia hết cho 2. 

  • Ví dụ:

    • Với n = 7, đầu ra là "0"
      Vì 7 không chia hết cho 2. Tổng số lần 7 chia hết cho 2 là 0.
    • Với n = 8, đầu ra là "3"
      Vì 8 chia 2 được 4, 4 chia 2 được 2, 2 chia 2 được 1 và 1 không chia hết cho 2. Tổng số lần 8 chia hết cho 2 là 3.
  • Đầu vào: 1 số nguyên n nhập từ bàn phím
    Điều kiện tiền đề:
    1 ≤ n ≤ 1000000
  • Đầu ra: số lần mà số đã cho n có thể chia hết cho 2.