мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Это старая версия документа!


Итерации

FIXME

Цикл for
var 
  x, y, z:integer;
begin
  for x := 1 to z do
  begin
    writeln(y);
  end;
end.
Цикл while
var 
  x, y, z:integer;
begin
  x := 1;
  while x < 10 do
  begin
    writeln(y);
    inc(x);
  end;
end.
Цикл repeat
var 
  x, y, z:integer;
begin
  x := 1;
  repeat
    writeln(y);
    inc(x);
  until x > 10;
end.

Обратите внимание - при использовании цикла repeat операторные скобки begin .. end не нужны!

Циклы

Операторы цикла позволяют повторять выполнение одного оператора или группы операторов либо заранее указанное количество раз, либо до тех пор, пока верно некоторое условие.

Часть оператора, которая определяет условие окончания исполнения цикла, называется заголовком цикла. Указание на желаемое количество повторений является частным случаем таких условий. Хотя с точки зрения теории программирования считается, что цикл должен завершаться в соответствии с условием, указанным в его заголовке, на практике целесообразно допускать в отдельных случаях выход из цикла согласно условиям, указанным в теле цикла.

Повторяемые операторы образуют тело цикла, а однократное исполнение тела цикла называется итерацией.

Обычно при выполнении тела цикла производится многократный пересчёт одной или нескольких переменных, пока не будет достигнут нужный результат или не станет ясно, что он недостижим. Как правило, именно изменение состояния каких-то целевых переменных является целью выполнения цикла. С другой стороны, часто смыслом цикла является исполнение некоторых желательных для пользователя чисто внешних по отношению к программе действий, либо ожидание некоторого события. Но в любом случае, абсолютно необходимо для того чтобы цикл мог завершиться, чтобы в системе что-то изменилось.

Случай, когда программа не в состоянии завершить один из своих циклов, называется зацикливанием. Оно очень похоже на зависание, но обычно под зависанием понимается переход отдельной программы или всей системы в неработоспособное состояние, в то время как зацикливание – это просто такой способ «нормальной» работы отдельной программы, который не приводит ни к какому результату. Для правильной системы это не должно представлять никакой опасности, хотя данный запуск программы прейдется прервать. Зацикливание является проявлением неправильности алгоритма данной программы, в то время как зависание может быть вызвано аппаратными сбоями. Зависание как правило относится ко всей системе.

Большой цикл, который запрашивает очередное действие пользователя, ожидает ответной команды, реагирует на нее и вновь переходит в состояние ожидания, лежит в основе всех интерактивных программ, т.е. программ, которые постоянно взаимодействуют с пользователем, в отличие от неинтерактивных или пакетных программ, которые раз получив начальные данные, работают дальше автоматически. Подобно интерактивным программам ведёт себя большинство программ, взаимодействующих с тем или иным оборудованием, включая драйвера, которые берут на себя обеспечение взаимодействия отдельных аппаратных компонент со всей остальной системой. Как правило, если предполагается, что программа обрабатывает данные или выполняет команды, что в данном случае фактически одно и тоже, поступающие от какого-то внешнего источника, то для того, чтобы отсеять или переспросить опасные, непонятные или заведомо неверные данные и команды, их обработка тоже должна вестись с помощью цикла, иначе ничего не помешает «недобросовестному» источнику повторить «некачественный» ввод. Цикл с предварительным условием (While-Do)

Этот оператор цикл, называемый циклом While, имеет вид