Vòng lặp do while

Trong hầu hết ngôn ngữ [[lập trình máy tính]], một vòng lặp do while (tiếng Anh: "do while loop") là một [[câu lệnh]] [[luồng điều khiển]] để thực thi một khối lệnh ít nhất một lần, và sau đó lặp lại việc thực thi khối đó, hay không, tùy thuộc vào điều kiện [[Kiểu dữ liệu boolean|boolean]] ở cuối khối đó.

==Cấu trúc tương đương==
do {
} while (condition);
thì tương đương với(==/===)
do_work();
while (condition) {

hay là
while (true) {

hoặc
LOOPSTART:
==Vòng lặp do while ở các ngôn ngữ lập trình==
Chương trình ví dụ sau tính toán [[giai thừa]] của 5 bằng cách dùng cú pháp của ngôn ngữ tương ứng cho một vòng lặpdo-while.

===[[ActionScript|ActionScript 3]]===
var counter:int = 5;
var factorial:int = 1;
do {
} while (counter > 0);
trace(factorial);

===[[Ada (programming language)|Ada]]===
with Ada.Integer_Text_IO;

procedure Factorial is
begin

end Factorial;
===[[BASIC]]===
BASIC trước kia (như [[GW-BASIC]]) dùng cú pháp WHILE/WEND. Còn BASIC mới hơn như [[PowerBASIC]] cho phép dùng cả cấu trúc WHILE/WEND lẫn DO/LOOP, với cú pháp như DO WHILE/LOOP, DO UNTIL/LOOP, DO/LOOP WHILE, DO/LOOP UNTIL, và DO/LOOP. Mã nguồn BASIC điển hình như sau:
Dim factorial As Integer
Dim counter As Integer
factorial = 1
counter = 5
Do 
Loop While counter > 0
Print factorial

===[[C Sharp (ngôn ngữ lập trình)|C#]]===
int counter = 5;
int factorial = 1;
do 
} while (counter > 0);
System.Console.WriteLine(factorial);

===[[C (ngôn ngữ lập trình)|C]]===
int counter = 5;
int factorial = 1;
do {
} while (counter > 0);
printf("factorial of 5 is %d\n", factorial);

===[[C++]]===
int counter = 5;
int factorial = 1;
do {
} while (counter > 0);
std::cout«"factorial of 5 is "«factorial«std::endl;

===[[CFScript]]===
factorial = 1;
count = 10;
do {
} while (count > 1);

writeOutput(factorial);

===[[D (ngôn ngữ lập trình)|D]]===
int counter = 5;
int factorial = 1;

do {
} while (counter > 0);
writeln("factorial of 5 is ", factorial);
===[[Fortran]]===
With legacy FORTRAN 77 there is no DO-WHILE construct but the same effect can be achieved with GOTO:
With Fortran 90 and later, the do-while loop is actually the same as the [[for loop]].
program FactorialProg
end program FactorialProg

===[[Java (ngôn ngữ lập trình)|Java]]===
int counter = 5;
int factorial = 1;
do {
} while (counter > 0);
System.out.println("The factorial of 5 is " + factorial);

===[[JavaScript]]===
var counter = 5;
var factorial = 1;
do {
} while (counter > 0);
console.log(factorial);

===[[Kotlin (ngôn ngữ lập trình)|Kotlin]]===
var counter = 5
var factorial = 1
do {
}while(counter > 0)
println("Factorial of 5 is $factorial")

===[[PL/I]]===
The [[PL/I]] DO statement subsumes the functions of the post-test loop ("do until"), the pre-test loop ("do while"), and the [[for loop]]. All functions can be included in a single statement. The example shows only the "do until" syntax.

===[[Python (ngôn ngữ lập trình)|Python]]===
Python lacks a specific do while flow control construct. However, the equivalent may be constructed out of a while loop with a break.
counter = 5
factorial = 1
while True:
print(factorial)
===[[Racket (ngôn ngữ lập trình)|Racket]]===
Racket, cũng như các hiện thực khác của [[Scheme (ngôn ngữ lập trình)|Scheme]], dùng "named-let" như một cách thông dụng để hiện thực vòng lặp:
1. lang racket
(define counter 5)
Compare this with the first example of the [[While loop#Racket|while loop]] example for Racket. Be aware that a named let can also take arguments.

Racket and Scheme also provide a proper do loop.

===[[Ruby (ngôn ngữ lập trình)|Ruby]]===
counter = 10
factorial = 2
begin
end while counter > 1
puts factorial

===[[Smalltalk]]===
counter:= 5.
factorial:= 1.
[counter > 0] whileTrue: 
Transcript show: factorial printString
===[[Swift (ngôn ngữ lập trình)|Swift]]===
Swift 2.x:

var counter = 5
var factorial = 1
repeat {
} while counter > 0
print(factorial)

Swift 1.x:

var counter = 5
var factorial = 1
do {
} while counter > 0
println(factorial)

===[[Visual Basic.NET]]===
Dim counter As Integer = 5
Dim factorial As Integer = 1
Do
Loop While counter > 0
Console.WriteLine(factorial)

== Xem thêm ==
- [[Control flow]]
- [[For loop]]
- [[Foreach]]
- [[While loop]]
- [[Repeat loop (disambiguation)]]

== Liên kết ngoài ==
- do {...} while (0) in C macros
[[Thể loại:Control flow]]