Accelerating the pace of engineering and science

# while

Repeat execution of statements while condition is true

## Syntax

```while expression
statements
end
```

## Description

example

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

expand all

### Repeat Statements Until Expression Is False

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)])
```
```n! = 3628800
```

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
fclose(fid);
```
```count =

31

```

### Exit Loop Before Expression Is False

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
```

expand all

### Expression

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 pressing Ctrl+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, each while statement requires an end keyword.