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

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00366.docx

Операторы PASCAL ABC

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

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

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

или

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

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

Значение параметра цикла после завершения цикла считается неопределенным.

Если для цикла for ... to начальное значение переменной цикла больше конечного значения или для цикла  for ... downto начальное значение переменной цикла меньше конечного значения, то тело цикла не выполнится ни разу.

Если цикл используется в процедуре или функции, то переменная-параметр цикла должна быть описана как локальная.

Тело цикла for в Pascal ABC не может быть пустым. Это сделано для защиты от часто встречающейся у начинающих ошибки ставить после do точку с запятой.

Изменение переменной-параметра цикла внутри цикла является логической ошибкой. Например, следующий фрагмент со вложенным оператором for является ошибочным:

for i:=1 to 10 do
  for i:=1 to 5 do
    write(i);

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

var
  en: (red,green,blue,white);
  c: char;
...
for
en:=red to blue do
  write(Ord(en):2);
for c:='a' to 'z' do
  write(c);