Руководство разработчика

Цикл ДЛЯ

Цикл со счетчиком (цикл ДЛЯ) предназначен для последовательного перебора числовых значений или дат в заданном диапазоне.

Синтаксис:

ЦИКЛ ДЛЯ (<переменная-счетчик> = <начальное значение>, <конечное значение> 
[, <шаг>] )
<операторы секции цикла>
КОНЕЦ_ЦИКЛА

Переменная-счетчик - это новая или ранее объявленная переменная числового типа или типа "дата". Типы переменной-счетчика, начального и конечного значения должны совпадать. Шаг - значение числового типа, равное по умолчанию 1. Шаг может быть как положительным, так и отрицательным. Начальное и конечное значения, а также значение шага могут быть сколь угодно сложными выражениями допустимых типов. При передаче управления оператору цикла со счетчиком, переменной-счетчику присваивается начальное значение. Цикл выполняется пока значение счетчика меньше или равно конечному значению при положительном шаге или больше или равно конечному значению при отрицательном шаге. После выполнения операторов секции цикла к значению переменной-счетчика прибавляется значение шага. После выполнения цикла переменная-счетчик имеет заданное в цикле конечное значение. Изменение значения переменной-счетчика операторами секции цикла может привести к неприятным сюрпризам. Не допускать побочного изменения счетчика и обеспечивать достижимость конечного значения должен разработчик алгоритма.

Пример

ВЫЧИСЛИТЬ
  // используется шаг по умолчанию 1 
  ЦИКЛ ДЛЯ (и = 1, 10)
  ... // и принимает значения от 1 до 10
  КОНЕЦ_ЦИКЛА
  // и = 10
  // цикл с отрицательным шагом
  ЦИКЛ ДЛЯ (и = 100, 1, -2)
  ... // и принимает значения 100, 98, 96, ..., 4, 2
  КОНЕЦ_ЦИКЛА
  // после цикла и = 1

  ЦИКЛ ДЛЯ (и = 1, 10)
  и++ // очень плохо: изменение счетчика в цикле
  // в этом примере, вопреки ожиданиям,
  // и принимает значения 2, 4, 6, 8, 10
  КОНЕЦ_ЦИКЛА
  // и = 10

  ЦИКЛ ДЛЯ (и = 1, 10)
  и-- // очень плохо: изменение счетчика в цикле
  // в этом примере произойдет зацикливание
  КОНЕЦ_ЦИКЛА
  // сюда никогда не попадем

  // цикл по датам
  ЦИКЛ ДЛЯ (д = 01.01.2016, 31.12.2016)
  ... // д принимает значения 01.01.2016, 02.01.2016, ...,
  // 30.12.2016, 31.12.2016
  // операторы секции цикла выполняется 366 раз
  КОНЕЦ_ЦИКЛА
  // д = 31.12.2016

  // цикл с нецелым шагом
  ЦИКЛ ДЛЯ (ч = 0, 1, 0.2)
  ... // ч принимает значения 0, 0.2, 0.4, 0.6, 0.8, 1
  КОНЕЦ_ЦИКЛА
  // ч = 1
КОНЕЦ

Для управления итерациями цикла используются ключевые слова ПРОДОЛЖИТЬ и ПОВТОР. ПРОДОЛЖИТЬ переходит к следующей итерации цикла без выполнения нижеследующих операторов тела цикла. ПОВТОР повторно выполняет текущую итерацию цикла., т.е. управление передается от ключевого слова ПОВТОР в начало цикла.

Пример

ЦИКЛ ДЛЯ (и = 1, 3)
  ОТЛАДКА("-> " + СТР(и))
  ЕСЛИ и = 2 ТО
    ПРОДОЛЖИТЬ
  КОНЕЦ_ЕСЛИ
  ОТЛАДКА(">- " + СТР(и))
КОНЕЦ_ЦИКЛА

Результат: -> 1 <- 1 -> 2 -> 3 <- 3


См. также: