Documentation

### This is machine translation

Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

# while

`while` loop to repeat when 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

collapse all

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

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

collapse 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.

Download ebook