Книга: Описание языка PascalABC.NET

Оператор цикла for

Оператор цикла for

Оператор цикла for имеет одну из двух форм:

for переменная := начальное значение to конечное значение do

оператор

или

for переменная := начальное значение downto конечное значение do

оператор

Кроме того, переменную можно описать непосредственно в заголовке цикла:

for переменная: тип := начальное значение to или downto конечное значение do

оператор

или

for var переменная := начальное значение to или downto конечное значение do

оператор

В последнем случае используется автоопределение типа переменной по типу начального значения. В двух последних случаях область действия объявленной переменной распространяется до конца тела цикла, которое в данном случае образует неявный блок. Вне тела цикла такая переменная недоступна, поэтому следующий цикл может использовать переменную с тем же именем:

for var i := 1 to 10 do

Print(i);

for var i := 1 to 5 do

Print(i*i);

Текст от слова for до слова do включительно называется заголовком цикла, а оператор после do - телом цикла. Переменная после слова for называется параметром цикла. Для первой формы цикла с ключевым словом to параметр цикла меняется от начального значения до конечного значения, увеличиваясь всякий раз на единицу, а для второй формы ключевым словом downto - уменьшаясь на единицу. Для каждого значения переменной-параметра выполняется тело цикла. Однократное повторение тела цикла называется итерацией цикла. Значение параметра цикла после завершения цикла считается неопределенным.

Переменная-параметр цикла может иметь любой порядковый тип. При этом начальное и конечное значения должны быть совместимы по присваиванию с переменной-параметром цикла.

Например:

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;

Оглавление книги


Генерация: 0.094. Запросов К БД/Cache: 1 / 0
поделиться
Вверх Вниз