
In many
computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
languages
Language is a structured system of communication that consists of grammar and vocabulary. It is the primary means by which humans convey meaning, both in spoken and signed forms, and may also be conveyed through writing. Human language is ch ...
, a do while loop is a
control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...
statement
Statement or statements may refer to: Common uses
*Statement (computer science), the smallest standalone element of an imperative programming language
*Statement (logic and semantics), declarative sentence that is either true or false
*Statement, ...
that executes a block of code and then either repeats the block or exits the loop depending on a given
boolean condition.
The ''do while'' construct consists of a process symbol and a condition. First the code within the block is executed. Then the condition is evaluated. If the condition is
true
True most commonly refers to truth, the state of being in congruence with fact or reality.
True may also refer to:
Places
* True, West Virginia, an unincorporated community in the United States
* True, Wisconsin, a town in the United States
* ...
the code within the block is executed again. This repeats until the condition becomes
false.
Do while loops check the condition after the block of code is executed. This control structure can be known as a post-test loop. This means the do-while loop is an exit-condition loop. However a
while loop
In most computer programming languages, a while loop is a control flow Statement (computer science), statement that allows code to be executed repeatedly based on a given Boolean data type, Boolean condition. The ''while'' loop can be thought o ...
will test the condition before the code within the block is executed.
This means that the code is always executed first and then the expression or test condition is evaluated. This process is repeated as long as the expression evaluates to true. If the expression is false the loop terminates. A while loop sets the truth of a statement as a necessary condition for the code's execution. A do-while loop provides for the action's ongoing execution until the condition is no longer true.
It is possible and sometimes desirable for the condition to always evaluate to be true. This creates an
infinite loop
In computer programming, an infinite loop (or endless loop) is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs, such as turning off power via a switch or pulling a plug. It may be inte ...
. When an infinite loop is created intentionally there is usually another control structure that allows termination of the loop. For example, a
break statement
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an ''i ...
would allow termination of an infinite loop.
Some languages may use a different naming convention for this type of loop. For example, the
Pascal and
Lua languages have a "''repeat until''" loop, which continues to run ''until'' the control expression is true and then terminates. In contrast a "while" loop runs ''while'' the control expression is true and terminates once the expression becomes false.
Equivalent constructs
do while (condition);
is equivalent to
do_work();
while (condition)
In this manner, the do ... while loop saves the initial "loop priming" with
do_work();
on the line before the
while
loop.
As long as the ''continue'' statement is not used, the above is technically equivalent to the following (though these examples are not typical or modern style used in everyday computers):
while (true)
or
LOOPSTART:
do_work();
if (condition) goto LOOPSTART;
Demonstrating do while loops
These example programs calculate the
factorial
In mathematics, the factorial of a non-negative denoted is the Product (mathematics), product of all positive integers less than or equal The factorial also equals the product of n with the next smaller factorial:
\begin
n! &= n \times ...
of 5 using their respective languages' syntax for a do-while loop.
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
Early BASICs (such as
GW-BASIC
GW-BASIC is a dialect of the BASIC programming language developed by Microsoft from IBM BASICA. Functionally identical to BASICA, its BASIC interpreter is a fully self-contained executable and does not need the Cassette BASIC ROM found in the ori ...
) used the syntax WHILE/WEND. Modern BASICs such as
PowerBASIC
PowerBASIC, formerly Turbo Basic, is the brand of several commercial compilers by PowerBASIC Inc. that compile a dialect of the BASIC programming language. There are both MS-DOS and Microsoft Windows, Windows versions, and two kinds of the latte ...
provide both WHILE/WEND and DO/LOOP structures, with syntax such as DO WHILE/LOOP, DO UNTIL/LOOP, DO/LOOP WHILE, DO/LOOP UNTIL, and DO/LOOP (without outer testing, but with a conditional EXIT LOOP somewhere inside the loop). Typical BASIC source code:
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, C++, D
int counter = 5;
int factorial = 1;
do while (counter > 0);
std::println("factorial of 5 is ", factorial);
Do-while(0) statements are also commonly used in C macros as a way to wrap multiple statements into a regular (as opposed to compound) statement. It makes a semicolon needed after the macro, providing a more function-like appearance for simple parsers and programmers as well as avoiding the scoping problem with . It is recommended in
CERT C Coding Standard rule PRE10-C.
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
Fortran 90 and later supports a DO-While construct:
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 while (counter > 0);
System.out.println("The factorial of 5 is " + factorial);
Pascal
Pascal uses repeat/until syntax instead of do while.
factorial := 1;
counter := 5;
repeat
factorial := factorial * counter;
counter := counter - 1; // In Object Pascal one may use dec (counter);
until counter = 0;
PL/I
The
PL/I
PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language initially developed by IBM. It is designed for scientific, engineering, business and system programming. It has b ...
DO statement subsumes the functions of the post-test loop (''do until''), the pre-test loop (''do while''), and the
for loop
In computer science, a for-loop or for loop is a control flow Statement (computer science), statement for specifying iteration. Specifically, a for-loop functions by running a section of code repeatedly until a certain condition has been satisfi ...
. 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 does not have a DO-WHILE loop, but its effect can be achieved by an infinite loop with a breaking condition at the end.
factorial = 1
counter = 5
while True:
factorial *= counter
counter -= 1
if counter < 1:
break
print(factorial)
Racket
In Racket, as in other
Scheme implementations, a "named-let" is a popular way to implement loops:
#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
In most computer programming languages, a while loop is a control flow Statement (computer science), statement that allows code to be executed repeatedly based on a given Boolean data type, Boolean condition. The ''while'' loop can be thought o ...
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.
))
Smalltalk
, counter factorial ,
counter := 5.
factorial := 1.
0">ounter > 0whileTrue:
actorial := factorial * counter.
counter := counter - 1
Transcript show: factorial printString
See also
*
Control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...
*
For loop
In computer science, a for-loop or for loop is a control flow Statement (computer science), statement for specifying iteration. Specifically, a for-loop functions by running a section of code repeatedly until a certain condition has been satisfi ...
*
Foreach loop
In computer programming, foreach loop (or for-each loop) is a control flow statement for traversing items in a collection. is usually used in place of a standard loop statement. Unlike other loop constructs, however, loops usually mainta ...
*
Repeat loop (disambiguation)
*
While loop
In most computer programming languages, a while loop is a control flow Statement (computer science), statement that allows code to be executed repeatedly based on a given Boolean data type, Boolean condition. The ''while'' loop can be thought o ...
References
External links
do while (0) in C macros
{{DEFAULTSORT:Do While Loop
Control flow
Iteration in programming
Programming language comparisons
Articles with example Ada code
Articles with example BASIC code
Articles with example C code
Articles with example C++ code
Articles with example D code
Articles with example Fortran code
Articles with example Java code
Articles with example Pascal code
Articles with example Racket code
Articles with example Smalltalk code
de:Schleife (Programmierung)#Do-While-Schleife