up previous next
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.
|
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.
/**/ 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.
/**/ 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: we used
ref L so that the function can change the value
of the variable referenced by
L. See
ref
.