Quantcast

Documentation Center

  • Trial Software
  • Product Updates

repeat, until, end_repeat, _repeat

"repeat" loop

Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

Syntax

repeat
  body
until condition end_repeat

_repeat(body, condition)

Description

repeat - end_repeat is a loop that evaluates its body until a specified stopping criterion is satisfied.

In a repeat loop, first body and then condition are evaluated until condition evaluates to TRUE.

In contrast to the while loop, the body of a repeat loop is always evaluated at least once.

The body may consist of any number of statements which must be separated either by a colon : or a semicolon ;. Only the last evaluated result inside the body (the return value of the loop) is printed on the screen. Use print to see intermediate results.

The Boolean expression condition must be reducible to either TRUE or FALSE. Internally, the condition is evaluated in the lazy evaluation context of the functions _lazy_and and _lazy_or.

The statements next and break can be used in repeat loops in the same way as in for loops.

The keyword end_repeat may be replaced by the keyword end.

The imperative form repeat - end_repeat is equivalent to corresponding call of the function _repeat. In most cases, the imperative form should be preferred because it leads to simpler code.

The $-operator is often a more elegant notation for loops.

_repeat is a function of the system kernel.

Examples

Example 1

Intermediate results of statements within a repeat and while loop are not printed to the screen:

i := 1:
s := 0:
while i < 3 do
  s := s + i;
  i := i + 1;
end_while

Above, only the return value of the loop is displayed. Use print to see intermediate results:

i := 1:
s := 0:
while i < 3 do
  print("intermediate sum" = s);
  s := s + i;
  i := i + 1;
  s
end_while

delete i, s:

Example 2

A simple example is given, how a repeat loop can be expressed via an equivalent while loop. For other examples, this may be more complicated and additional initializations of variables may be needed:

i := 1:
repeat 
  print(i);
  i := i + 1;
until i = 3 end:

i := 1:
while i < 3 do
  print(i);
  i := i + 1;
end:

delete i:

Example 3

The Boolean expression condition must evaluate to TRUE or FALSE:

condition := UNKNOWN:
while not condition do
  print(Condition = condition);
  condition := TRUE;
end_while:
Error: The Boolean 'TRUE' or 'FALSE' is expected. [while]

To avoid this error, change the stopping criterion to condition <> TRUE:

condition := UNKNOWN:
while condition <> TRUE do
  print(Condition = condition);
  condition := TRUE;
end_while:

delete condition:

Example 4

We demonstrate the correspondence between the functional and the imperative form of the repeat and while loop, respectively:

hold(_repeat((statement1; statement2), condition))
repeat
  statement1;
  statement2
until condition end_repeat
hold(_while(condition, (statement1; statement2)))
while condition do
  statement1;
  statement2
end_while

Parameters

body

The body of the loop: an arbitrary sequence of statements

condition

A Boolean expression

Return Values

Value of the last command executed in the body of the loop. If no command was executed, the value NIL is returned. If the body of a while loop is not evaluated due to a false condition, the void object of type DOM_NULL is returned.

See Also

MuPAD Functions

More About

Was this topic helpful?