Переменная-параметр цикла может иметь любой порядковый тип. При этом начальное и конечное значения должны быть совместимы по присваиванию с переменной-параметром цикла.
Например:
var en: (red,green,blue,white);
...
for en := red to blue do
write(Ord(en):2);
forvar c := 'a' to 'z' do
write(c);
Если для цикла for ... to начальное значение переменной цикла больше конечного значения или для цикла for ... downto начальное значение переменной цикла меньше конечного значения, то тело цикла не выполнится ни разу.
Если цикл используется в подпрограмме, то переменная-параметр цикла должна быть описана как локальная. Наилучшим решением в PascalABC.NET является описание переменной в заголовке цикла.
Изменение переменной-параметра цикла внутри цикла является логической ошибкой. Например, следующий фрагмент со вложенным оператором for является ошибочным:
for i := 1 to 10 do
i -= 1;
Оператор цикла foreach
Оператор цикла foreach имеет одну из следующих форм:
foreach переменная in контейнер do
оператор
или
foreach переменная: тип in контейнер do
оператор
или
foreach var переменная in контейнер do
оператор
В качестве контейнера может фигурировать динамический массив, строка, множество, а также любой контейнер, удовлетворяющий интерфейсу IEnumerable или IEnumerable
Переменная цикла пробегает все значения элементов контейнера и для каждого значения переменной цикла выполняется тело цикла. Изменение переменной цикла внутри тела цикла не меняет элементы контейнера, т.е. они доступны только на чтение.
Например:
var
ss: set of string := ['Иванов','Петров','Сидоров'];
a: array of integer := (3,4,5);
b: array [1..5] of integer := (1,3,5,7,9);
l := new List
begin
foreach s: string in ss do
write(s,' ');
writeln;
foreach x: integer in a do
write(x,' ');
writeln;
foreach var x in b do
write(x,' ');
writeln;
foreach var r in l do
write(r,' ');
end.
Операторы цикла while и repeat
Оператор цикла while имеет следующую форму:
while условие do
оператор
Условие представляет собой выражение логического типа, а оператор после do называется телом цикла. Перед каждой итерацией цикла условие вычисляется, и если оно истинно, то выполняется тело цикла, в противном случае происходит выход из цикла.
Если условие всегда оказывается истинным, то может произойти