do while, do until¶
Executes a series of statements in a loop as long as a given expression is true (or false).
do while expression; ... endo;
do until expression; ... endo;
The following are examples of simple loops that execute a predetermined number of times. These loops will both have the result shown.
do while loop:
format /rd 1,0; // Initialize counter i = 1; /* ** Run do loop while i is ** less than or equal to 10 */ do while i <= 10; // Two semi-colons at the end of a print // statement keep all output on the same line print i;; // Advance counter i = i + 1; endo;
1 2 3 4 5 6 7 8 9 10
do until loop:
format /rd 1,0; // Initialize counter i = 1; /* ** Run do loop until i is ** greater than to 10 */ do until i > 10; print i;; // Advance counter i = i + 1; endo;
1 2 3 4 5 6 7 8 9 10
// Set format format /rdn 1,0; space = " "; comma = ","; // Initialize counter for do loop i = 1; /* ** Run do loop while i is ** less than or equal to 4 */ do while i <= 4; // Initialize counter for internal do loop j = 1; /* ** Run internal do loop while j is ** less than or equal to 3 */ do while j <= 3; print space i comma j;; // Advance j j = j + 1; endo; // Advance i i = i + 1; // Print newline print; endo;
The code above prints the following output:
1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 4,1 4,2 4,3
In the example above, two nested loops are executed and the loop
counter values are printed out. Note that the inner loop counter,
must be reset inside of the outer loop before entering the inner
An empty print statement is used to print a carriage return/line feed sequence after the inner loop finishes.
expression is any expression that returns a scalar. It is
TRUE if it is
FALSE if it is zero.
do while loop, execution of the loop will continue as long as the expression is
do until loop, execution of the loop will continue as long as the expression is
The condition is checked at the top of the loop. If execution can
continue, the statements of the loop are executed until the
encountered. Then GAUSS returns to the top of the loop and checks the
do loop does not automatically increment a counter. See the first example below.
do loops may be nested.
It is often possible to avoid using loops in GAUSS by using the appropriate matrix operator or function. It is almost always preferable to avoid loops when possible, since the corresponding matrix operations can be much faster.