thumb|right|Sơ đồ luồng 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 boolean ở cuối khối đó.
Cấu trúc tương đương
do {
do_work();
} while (condition);
thì tương đương với(==/===)
do_work();
while (condition) {
do_work();
}
hay là
while (true) {
do_work();
if (!condition) break;
}
hoặc
LOOPSTART:
do_work();
if (condition) goto 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 3
var counter:int = 5;
var factorial:int = 1;
do {
factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
trace(factorial);
Ada
with Ada.Integer_Text_IO;
procedure Factorial is
Counter : Integer:= 5;
Factorial: Integer:= 1;
begin
loop
Factorial:= Factorial * Counter;
Counter := Counter - 1;
exit when Counter = 0;
end loop;
Ada.Integer_Text_IO.Put (Factorial);
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
factorial = factorial * counter
counter = counter - 1
Loop While counter > 0
Print factorial
C
int counter = 5;
int factorial = 1;
do
{
factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
System.Console.WriteLine(factorial);
C
int counter = 5;
int factorial = 1;
do {
factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
printf("factorial of 5 is %d\n", factorial);
C++
int counter = 5;
int factorial = 1;
do {
factorial *= counter--;
} while (counter > 0);
std::cout<<"factorial of 5 is "<
CFScript
factorial = 1;
count = 10;
do {
factorial *= count--;
} while (count > 1);
writeOutput(factorial);
D
int counter = 5;
int factorial = 1;
do {
factorial *= counter--; // Multiply, then decrement.
} 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:
INTEGER CNT,FACT
CNT=5
FACT=1
1 CONTINUE
FACT=FACT*CNT
CNT=CNT-1
IF (CNT.GT.0) GOTO 1
PRINT*,FACT
END
With Fortran 90 and later, the do-while loop is actually the same as the for loop.
program FactorialProg
integer:: counter = 5
integer:: factorial = 1
factorial = factorial * counter
counter = counter - 1
do while (counter > 0)
factorial = factorial * counter
counter = counter - 1
end do
print *, factorial
end program FactorialProg
Java
int counter = 5;
int factorial = 1;
do {
factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
System.out.println("The factorial of 5 is " + factorial);
JavaScript
var counter = 5;
var factorial = 1;
do {
factorial *= counter--;
} while (counter > 0);
console.log(factorial);
Kotlin
var counter = 5
var factorial = 1
do {
factorial *= counter--
}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.
declare counter fixed initial(5);
declare factorial fixed initial(1);
do until(counter<=0);
factorial = factorial * counter;
counter = counter - 1;
end;
put(factorial);
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:
factorial *= counter
counter -= 1
if counter == 0:
break
print(factorial)
Racket
Racket, cũng như các hiện thực khác của Scheme, dùng "named-let" như một cách thông dụng để hiện thực vòng lặp:
#lang racket
(define counter 5)
(define factorial 1)
(let loop ()
(set! factorial (* factorial counter))
(set! counter (sub1 counter))
(when (> counter 0) (loop)))
(displayln factorial)
Compare this with the first example of the while loop example for Racket. Be aware that a named let can also take arguments.
Racket and Scheme also provide a proper do loop.
(define (factorial n)
(do ((counter n (- counter 1))
(result 1 (* result counter)))
((= counter 0) result); Stop condition and return value.
; The body of the do-loop is empty.
))
Ruby
counter = 10
factorial = 2
begin
factorial *= counter
counter -= 2
end while counter > 1
puts factorial
Smalltalk
| counter factorial |
counter:= 5.
factorial:= 1.
[counter > 0] whileTrue:
[factorial:= factorial * counter.
counter:= counter - 1].
Transcript show: factorial printString
Swift
Swift 2.x:
var counter = 5
var factorial = 1
repeat {
factorial *= counter
counter -= 1
} while counter > 0
print(factorial)
Swift 1.x:
var counter = 5
var factorial = 1
do {
factorial *= counter
counter -= 1
} while counter > 0
println(factorial)
Visual Basic.NET
Dim counter As Integer = 5
Dim factorial As Integer = 1
Do
factorial *= counter
counter -= 1
Loop While counter > 0
Console.WriteLine(factorial)
👁️
1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
thumb|right|Sơ đồ luồng 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
nhỏ|Infinite loop BSOD Trong lập trình máy tính, **vòng lặp vô hạn** (hay **vòng lặp vô tận**) là một chuỗi các lệnh mà khi được viết ra sẽ kéo dài vô tận, trừ khi có
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
// Dòng này sẽ
** Thuật toán so khớp chuỗi Knuth–Morris–Pratt** (hay **thuật toán KMP**) tìm kiếm sự xuất hiện của một "từ" W
trong một "xâu văn bản" S
bằng cách tiếp tục quá trình tìm kiếm khi
Chi tiết sản phẩm Hướng dẫn mua hàng Phấn nước Nuskin với OxiGuard, chống gốc tự do, lão hóa (MoisturShade Liquid Finish Foundation - Med MoisturShade Liquid Finish Foundation - Ochre Nuskin Colour MoisturShade Liquid
Persistence of Vision Raytracer (**POV-Ray**, tạm dịch: **Chương trình dò tia thị giác**) là một chương trình dò tia khả dụng cho nhiều nền tảng hệ điều hành khác nhau. Nguồn gốc phát triển là
nhỏ| Để tìm kiếm một mục đã cho trong một danh sách theo thứ tự nhất định, có thể sử dụng cả thuật toán [[Tìm kiếm tuần tự|tìm kiếm nhị phân và tuyến tính (bỏ
**Benjamin "Bibi" Netanyahu** (, cũng viết là **Binyamin Netanyahu**, sinh ngày 21 tháng 10 năm 1949) là thủ tướng đương nhiệm của Israel từ năm 2022. Ông trước kia đã giữ chức vụ này từ
**Edsger Wybe Dijkstra** (; 11 tháng 5 năm 1930 tại Rotterdam – 6 tháng 8 năm 2002 tại Nuenen), là nhà khoa học máy tính người Hà Lan. Ông được nhận giải thưởng Turing năm
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**MATLAB** là phần mềm cung cấp môi trường tính toán số và lập trình, do công ty MathWorks thiết kế. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay
Trong Khoa học máy tính, bài toán **phát hiện chu trình** hay **tìm chu trình** là bài tìm thuật toán tìm vòng lặp trong một chuỗi giá trị hàm. Bất kỳ hàm nào ánh
phải|nhỏ|[[Lưu đồ thuật toán (thuật toán Euclid) để tính ước số chung lớn nhất (ưcln) của hai số _a_ và _b_ ở các vị trí có tên A và B. Thuật toán tiến hành bằng
**George Harrison** (25 tháng 2 năm 1943 – 29 tháng 11 năm 2001) là một nam nhạc công, ca sĩ kiêm sáng tác nhạc, nhà sản xuất phim và thu âm người Anh, tay guitar chính
**Eric Patrick Clapton**, (sinh ngày 30 tháng 3 năm 1945) là một nam nghệ sĩ guitar, ca sĩ và nhạc sĩ người Anh. Ông là người duy nhất ba lần được vinh danh tại Đại
**Luận lý Hoare** (còn được biết đến với tên **Luận lý Floyd–Hoare**) là một hệ chính quy do nhà khoa học máy tính người Anh C. A. R. Hoare phát triển, và sau đó được
nhỏ|280x280px| Một đường dẫn gồm ba quá trình chương trình chạy trên Text terminal. Trong các hệ điều hành máy tính giống Unix, một **đường ống** là một cơ chế để liên lạc giữa các
thumb|Thuật toán Euclid để tìm ước chung lớn nhất (ƯCLN) của hai đoạn thẳng BA và DC, độ dài của cả hai đều là bội của một "đơn vị" độ dài chung. Vì độ dài
**Nightwish** là một ban nhạc symphonic metal đến từ Kitee, Phần Lan, được thành lập năm 1996 bởi nhạc sĩ kiêm keyboard Tuomas Holopainen, tay guitar Emppu Vuorinen, và cựu ca sĩ chính Tarja Turunen.
**_Blackout_** là album phòng thu thứ năm của ca sĩ người Mỹ Britney Spears, phát hành ngày 25 tháng 10 năm 2007 bởi Jive Records. Quá trình thực hiện và ra mắt album diễn ra
**Giải Grammy cho trình diễn hard rock xuất sắc nhất** (tiếng Anh: _Grammy Award for Best Hard Rock Performance_) là hạng mục của giải Grammy được trao cho các nghệ sĩ thu âm từ năm
**Giải thuật Euclid mở rộng** được sử dụng để giải một phương trình vô định nguyên (còn được gọi là phương trình Đi-ô-phăng) có dạng
Trong đó là**Quách Mạt Nhược** (郭沫若; 16 tháng 11 năm 1892 - 12 tháng 6 năm 1978) là một kịch tác gia, thi sĩ, phê bình gia, sử gia, kí giả kiêm chính khách Trung Quốc, Phó
**SMS _Seydlitz**_ là một tàu chiến-tuần dương tải trọng 25.000 tấn được Hải quân Đế quốc Đức (Kaiserliche Marine) chế tạo ngay trước Chiến tranh Thế giới thứ nhất. Được đặt hàng vào năm 1910
ENGLISH BELOWCÔNG THỨC CỦA NITROTECH RIPPED MANG TỚI CHO BẠN MuscleTech đã thiết kế công thức có một không hai này để cung cấp protein siêu tinh khiết cộng với kết quả giảm cân thực
**Sắp xếp nhanh** (_Quicksort_), còn được gọi là sắp xếp kiểu phân chia (_part sort_) là một thuật toán sắp xếp phát triển bởi C.A.R. Hoarec sắp thành hai danh sách con. Khác với sắp
[[Siêu máy tính song song hàng loạt Blue Gene/P của IBM]] **Tính toán song song** (tiếng Anh: _Parallel computing_), là một hình thức tính toán trong đó nhiều phép tính và tiến trình được thực
Dom **Pedro I** (tiếng Việt:Phêrô I; 12 tháng 10 năm 1798 – 24 tháng 9 năm 1834), biệt danh "Người Giải phóng", là người thành lập và nhà cai trị đầu tiên của Đế quốc Brasil. Với
**Whitney Elizabeth Houston** (9 tháng 8 năm 1963 – 11 tháng 2 năm 2012) là một nữ ca sĩ, diễn viên, nhà sản xuất phim và nhà từ thiện người Mỹ. Được biết đến là "Định
**Janet Damita Jo Jackson** (sinh ngày 16 tháng 5 năm 1966) là một nữ ca sĩ, người viết lời bài hát, vũ công và diễn viên người Mỹ. Được biết đến với một loạt các
**Thỏa thuận Paris về khí hậu** là một điều ước quốc tế về biến đổi khí hậu được ký kết vào năm 2016, quy định về việc giảm thiểu biến đổi khí hậu, thích ứng
**_Ngài_** **James Paul McCartney** (sinh ngày 18 tháng 6 năm 1942) là một nam ca sĩ, nhạc sĩ, nhà sản xuất phim và thu âm người Anh, đồng giọng ca chính, đồng sáng tác và
Trong khoa học máy tính, **tìm kiếm nhị phân** (), còn gọi là **tìm kiếm nửa khoảng** (_half-interval search_), **tìm kiếm logarit** (_logarithmic search_), hay **chặt nhị phân** (_binary chop_), là một thuật toán tìm
nhỏ | [[John Lennon (phải) và Paul McCartney (trái) trước buổi trình diễn trực tiếp trên truyền hình Hà Lan vào năm 1964.]] **Lennon–McCartney** (còn được viết là **Lennon/McCartney**, hay **McCartney–Lennon**, **McCartney/Lennon**) là tên gọi
Trong khoa học máy tính, **luồng điều khiển** (tiếng Anh: _control flow_ hay _flow of control_) là thứ tự các câu lệnh, tập lệnh hay lời gọi hàm riêng biệt của một chương trình mệnh
**Lỗi off-by-one** (**off-by-one error (OBOE)**) là một lỗi logic thường gặp trong quá trình viết mã (coding) của lập trình viên máy tính. Đây được xem là một trong những lỗi phổ biến nhất trong
**_Chuyện thần tiên ở New York_** (tựa gốc tiếng Anh: **_Enchanted_**) là một bộ phim nhạc kịch người thật xen kẽ hoạt họa có yếu tố hư cấu hài hước lãng mạn của Hoa Kỳ
"**Layla**" là ca khúc sáng tác bởi Eric Clapton và Jim Gordon, được phát hành bởi nhóm nhạc blues rock Derek and the Dominos, trong album _Layla and Other Assorted Love Songs_ (1970). Ca khúc
**_Mass Effect 3_** là một trò chơi hành động nhập vai phát triển bởi BioWare và được xuất bản bởi Electronic Arts cho Microsoft Windows, Xbox 360 và PlayStation 3. Phiên bản dành cho Wii
Trong lập trình, **lỗi tràn ngăn xếp** xảy ra nếu các con trỏ ngăn xếp vượt quá giới hạn của ngăn xếp. Ngăn xếp có thể bao gồm một lượng hữu hạn các địa chỉ
**Địa vật lý hố khoan** còn gọi là **địa vật lý lỗ khoan**, **địa vật lý giếng khoan** (tiếng Anh: _Borehole Logging_ hay _Well Logging_), là một lĩnh vực của Địa vật lý thăm dò,
liên_kết=https://en.wikipedia.org/wiki/File:Bubble-sort-example-300px.gif|nhỏ|300x300px|**Một ví dụ về sắp xếp nổi bọt. Bắt đầu từ vị trí đầu tiên của danh sách (bên trái), so sánh các cặp số với nhau, nếu không đúng thứ tự nhỏ-lớn thì đảo
nhỏ|phải|Biểu tượng hình con thằn lằn đôi khi được các [[lập trình viên dùng trong các chương trình viết bằng ngôn ngữ Lisp.]] **Lisp** là ngôn ngữ lập trình được phát triển từ rất sớm
**_The Florida Project_** là một phim điện ảnh chính kịch của Mỹ năm 2017 do Sean Baker đạo diễn, với phần kịch bản do chính Baker cùng Chris Bergoch thực hiện. Phim có sự tham
**Cicada 3301** (tạm dịch: **Ve sầu 3301**) là biệt danh của một tổ chức đã ba lần đăng tải một chuỗi các câu đố với mục đích chiêu mộ những "tài năng" từ khắp nơi