up previous next
 for

loop command

 Syntax
 ```For I := N_1 To N_2 Do C EndFor For I := N_1 To N_2 Step D Do C EndFor where I is the loop variable, N_1, N_2, and D are integer expressions, and C is a sequence of commands. ```

 Description
In the first form, the loop variable I is assigned the values N_1, N_1+1, ...,N_2 in succession. After each assignment, the command sequence C is executed. If N_2 < N_1 , then the command sequence C is not executed.

The second form is almost the same, except that I is assigned the values N_1, N_1+D, N_1+2D , and so on, until the limit N_2 is passed. If N_2 - N_1 has opposite sign to D , then the command sequence C is not executed.

 Example
 ```/**/ for N := 1 to 5 do print 2^N, " "; endfor; 2 4 8 16 32 /**/ for n := 1 to 20 step 3 do print n, " "; endfor; 1 4 7 10 13 16 19 /**/ for N := 10 to 1 step -2 do print N, " "; endfor; 10 8 6 4 2 /**/ for N := 5 to 3 do print N, " "; endfor; -- no output ```
Loops can be nested.

 Example
 ```/**/ define MySort(ref L) /**/ for i := 1 to len(L)-1 do /**/ MaxPos := i; /**/ for j := i+1 to len(L) do /**/ if L[j] < L[MaxPos] then MaxPos := j; endif; /**/ endfor; /**/ if MaxPos <> i then /**/ swap(ref L[i], ref L[MaxPos]); /**/ endif; /**/ endfor; /**/ enddefine; /**/ M := [5,3,1,4,2]; /**/ MySort(ref M); /**/ M; [1, 2, 3, 4, 5] ```
(Note that ref L is used so that the function can change the value of the variable referenced by L . See ref .)
 See Also