Vòng lặp do-while

Mục đích

Vòng lặp hậu kiểm tra đảm bảo thân vòng lặp được thực hiện ít nhất một lần trước khi điều kiện dừng được đánh giá. Cấu trúc này phù hợp với các bài toán nhập dữ liệu hoặc hiển thị menu lặp lại.

Sơ đồ luồng

graph TD; A((Bắt đầu)) --> B[Thực hiện\nkhối lệnh]; B --> C{Điều kiện\ncòn đúng?}; C -- Đúng --> B; C -- Sai --> D((Kết thúc\nvòng lặp));

Ví dụ lặp đến khi nhập số 0

number = -1

while True:
    print(number)
    number += 1
    if number == 0:
        break
program RepeatUntilDemo;

var
  number: Integer;

begin
  number := -1;

  repeat
    Writeln(number);
    number := number + 1;
  until number = 0;
end.
#include <stdio.h>

int main(void) {
    int number = -1;

    do {
        printf("%d\n", number);
        number++;
    } while (number != 0);

    return 0;
}
#include <iostream>
using namespace std;

int main() {
    int number = -1;

    do {
        cout << number << endl;
        number++;
    } while (number != 0);

    return 0;
}
int number = -1;

do
{
    Console.WriteLine(number);
    number++;
} while (number != 0);
let number = -1;

do {
    console.log(number);
    number++;
} while (number !== 0);
let number: number = -1;

do {
    console.log(number);
    number++;
} while (number !== 0);
package main

import "fmt"

func main() {
    number := -1

    for {
        fmt.Println(number)
        number++
        if number == 0 {
            break
        }
    }
}
fn main() {
    let mut number = -1;

    loop {
        println!("{}", number);
        number += 1;
        if number == 0 {
            break;
        }
    }
}

Ghi chú theo ngôn ngữ

Thông tin</div>

Python không có cú pháp do-while riêng. Mẫu while True kết hợp với break thường được dùng để mô phỏng vòng lặp hậu kiểm tra.

Pascal dùng repeat ... until. Điều kiện xuất hiện ở cuối và vòng lặp dừng khi điều kiện trở thành đúng — ngược lại với whiledo-while của các ngôn ngữ khác (tiếp tục khi điều kiện đúng).

C dùng cú pháp do { ... } while (...);. Dấu chấm phẩy sau phần while là bắt buộc — thiếu dấu ; là lỗi cú pháp.

C++ dùng do { ... } while (...); giống C. Hành vi giống hệt: thân vòng lặp chạy trước, kiểm tra điều kiện sau.

C# có cú pháp do { ... } while (...); giống C/C++. Đây là một trong những cấu trúc hiếm gặp hơn trong code C# hiện đại nhưng vẫn hượng trợ đầy đủ.

JavaScript có cú pháp do { ... } while (...); giống các ngôn ngữ C-style. Không cần break — vòng lặp tự dừng khi điều kiện sai.

TypeScript kế thừa do-while từ JavaScript. Không có gì khác về cú pháp; TypeScript chỉ kiểm tra kiểu điều kiện phải là boolean.

Go không có do-while. Mẫu for { ... if condition { break } } hoặc for { ... if !condition { break } } được dùng thay thế.

Rust dùng loop { ... } cho vòng lặp vô hạn kết hợp với break để thoát. Đây là cách chuẩn để biểu diễn do-while trong Rust.

Kết luận

Vòng lặp hậu kiểm tra giúp biểu diễn rõ những bài toán cần chạy thân vòng lặp ít nhất một lần. Khi bài toán phải xét nhiều chỉ số cùng lúc, có thể cần đến Vòng lặp lồng nhau.

Bình luận