while - while loop to repeat when condition
is true - MATLAB (original) (raw)
Main Content
while
loop to repeat when condition is true
Syntax
while expression
statements
end
Description
while _`expression`_, _`statements`_, end
evaluates an expression, and repeats the execution of a group of statements in a loop while the expression is true. An expression is true when its result is nonempty and contains only nonzero elements (logical or real numeric). Otherwise, the expression is false.
Examples
Use a while
loop to calculate factorial(10)
.
n = 10; f = n; while n > 1 n = n-1; f = f*n; end disp(['n! = ' num2str(f)])
Count the number of lines of code in the file magic.m
. Skip blank lines and comments using a continue
statement. continue
skips the remaining instructions in the while
loop and begins the next iteration.
fid = fopen('magic.m','r'); count = 0; while ~feof(fid) line = fgetl(fid); if isempty(line) || strncmp(line,'%',1) || ~ischar(line) continue end count = count + 1; end count
Sum a sequence of random numbers until the next random number is greater than an upper limit. Then, exit the loop using a break
statement.
limit = 0.8; s = 0;
while 1 tmp = rand; if tmp > limit break end s = s + tmp; end
More About
An expression can include relational operators (such as <
or ==
) and logical operators (such as &&
, ||
, or ~
). Use the logical operators and
and or
to create compound expressions. MATLABĀ® evaluates compound expressions from left to right, adhering to operator precedence rules.
Within the conditional expression of a while...end
block, logical operators &
and |
behave as short-circuit operators. This behavior is the same as &&
and ||
, respectively. Since &&
and ||
consistently short-circuit in conditional expressions and statements, it is good practice to use &&
and ||
instead of &
and |
within the expression. For example,
x = 42; while exist('myfunction.m','file') && (myfunction(x) >= pi) disp('Expressions are true') break end
The first part of the expression evaluates to false. Therefore, MATLAB does not need to evaluate the second part of the expression, which would result in an undefined function error.
Tips
- If you inadvertently create an infinite loop (that is, a loop that never ends on its own), stop execution of the loop by pressingCtrl+C.
- If the conditional expression evaluates to a matrix, MATLAB evaluates the statements only if all elements in the matrix are true (nonzero). To execute statements if any element is true, wrap the expression in the
any
function. - To programmatically exit the loop, use a break statement. To skip the rest of the instructions in the loop and begin the next iteration, use a continue statement.
- When nesting a number of
while
statements, eachwhile
statement requires anend
keyword. - The MATLAB
while
loop is similar to ado...while
loop in other programming languages, such as C and C++. However,while
evaluates the conditional expression at the beginning of the loop rather than the end.
do % Not valid MATLAB syntax
statements
while expression
To mimic the behavior of ado...while
loop, set the initial condition ofwhile
totrue
and place the conditional expression inside the loop. For example, implement thedo...while
loop above by using a MATLABwhile
loop.
while true
statements
if ~expression
break
end
end
Extended Capabilities
Version History
Introduced before R2006a