Перейти к основному содержимому

Цикл «для по» (со счетчиком)

Цикл для по выполняет действия, указанные в теле цикла, заданное число раз. Количество итераций определяется с помощью счетчика цикла, для которого указываются начальное и конечное значения, а также шаг изменения.

Синтаксис

для счетчик-цикла = выражение1 [вниз] по выражение2 [шаг N]
тело-цикла
[прервать]
тело-цикла
[продолжить]
тело-цикла
;
  • счетчик-цикла

    Управляет выполнением итераций. Данная переменная имеет тип Число и объявляется с модификатором знч. Цикл выполняется до тех пор, пока переменная счетчик-цикла принимает значения между результатами вычисления выражение1 и выражение2. Переменная, выступающая в роли счетчика цикла, не может быть объявлена вне цикла. Ее областью видимости является тело цикла. Это позволяет использовать одно и то же имя счетчика цикла в разных невложенных циклах в одном блоке кода, не опасаясь появления ошибок.

    Цикл будет продолжаться до тех пор, пока счетчик цикла меньше или равен условию завершения цикла, которое определяется с помощью выражение2. Счетчик цикла автоматически увеличивается на заданный шаг после окончания каждой итерации.

  • выражение1

    Результат вычисления данного выражения присваивается переменной счетчик-цикла и используется при первой итерации. Исключением является случай, когда начальное значение счетчика цикла строго больше значения выражение2, которое определяет условие завершения цикла. В этом случае цикл сразу завершается без выполнения итераций.

  • выражение2

    Выражение, определяющее условие завершения цикла.

  • вниз

    Используется, когда необходимо сделать обход в обратном направлении.

    метод ВычислитьСумму()
    пер Сумма = 0
    для Индекс = 100 вниз по 10 шаг 10
    Сумма += Индекс
    ;
    ; // Сумма = 550
  • шаг

    Задает значение, на которое изменяется переменная счетчик-цикла при каждой итерации. Значение шага вычисляется один раз перед началом цикла. Если шаг не указан, счетчик-цикла изменяется на единицу.

    метод ВычислитьСумму()
    пер Сумма = 0
    для Индекс = 10 по 100 шаг 10
    Сумма += Индекс
    ;
    ; // Сумма = 550
  • продолжить

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

  • прервать

    Используется, когда надо завершить цикл немедленно, не дожидаясь его штатного завершения (по значению счетчика цикла).

Принцип работы

Цикл для работает следующим образом:

  1. Переменной счетчик-цикла присваивается начальное значение, которое получается путем вычисления выражение1.
  2. Проверяется необходимость завершения цикла. Для этого вычисляется выражение2 и проверяется, что значение переменной счетчик-цикла меньше или равно результату вычисления выражения. Если значение счетчик-цикла больше значения выражение2, цикл завершается. Вычисление значения выражение2 происходит один раз, в начале цикла, и не пересчитывается при каждой итерации.
  3. Выполняется тело цикла.
    • Если во время выполнения тела цикла обнаруживается ключевое слово продолжить, то значение счетчика цикла увеличивается на 1 и выполнение продолжается с шага 2.
    • Если во время выполнения тела цикла обнаруживается ключевое слово прервать, то выполнение тела цикла прерывается безусловно и управление передается в инструкцию, которая следует за последней инструкцией цикла.
  4. Значение счетчика цикла увеличивается на значение шага, и выполнение продолжается с шага 2.

Пример

Сортировка пузырьком
метод СортироватьПоВозрастанию(Массив: Массив<Число>): Массив<Число>
если Массив.Размер() < 2
возврат Массив
;

пер Переставлены: Булево // Флаг для остановки сортировки, если перестановок не было

для Индекс1 = 0 по Массив.Граница() - 1
Переставлены = Ложь
для Индекс2 = 0 по Массив.Граница() - Индекс1 - 1
// Сравниваем соседние элементы
если Массив[Индекс2] > Массив[Индекс2 + 1]
// Меняем элементы местами, если их порядок неверный
пер ВременнаяПеременная = Массив[Индекс2]
Массив[Индекс2] = Массив[Индекс2 + 1]
Массив[Индекс2 + 1] = ВременнаяПеременная
Переставлены = Истина // Отмечаем, что произошла перестановка
;
;
// Если перестановок не было, завершаем цикл,
// так как массив уже отсортирован
если не Переставлены
прервать
;
;

возврат Массив
;

метод ВыполнитьСортировку()
знч Массив = [10, 120, 45, 30, 65, 50, 100]
знч МассивПоВозрастанию = СортироватьПоВозрастанию(Массив) // [10, 30, 45, 50, 65, 100, 120]
;