Цикл «для по» (со счетчиком)
Цикл для по выполняет действия, указанные в теле цикла, заданное число раз. Количество итераций определяется с помощью счетчика цикла, для которого указываются начальное и конечное значения, а также шаг изменения.
Синтаксис
для счетчик-цикла = выражение1 [вниз] по выражение2 [шаг N]
тело-цикла
[прервать]
тело-цикла
[продолжить]
тело-цикла
;
-
счетчик-циклаУправляет выполнением итераций. Данная переменная имеет тип
Числои объявляется с модификаторомзнч. Цикл выполняется до тех пор, пока переменнаясчетчик-циклапринимает значения между результатами вычислениявыражение1ивыражение2. Переменная, выступающая в роли счетчика цикла, не может быть объявлена вне цикла. Ее областью видимости является тело цикла. Это позволяет использовать одно и то же имя счетчика цикла в разных невложенных циклах в одном блоке кода, не опасаясь появления ошибок.Цикл будет продолжаться до тех пор, пока счетчик цикла меньше или равен условию завершения цикла, которое определяется с помощью
выражение2. Счетчик цикла автоматически увеличивается на заданныйшагпосле окончания каждой итерации. -
выражение1Результат вычисления данного выражения присваивается переменной
счетчик-циклаи используется при первой итерации. Исключением является случай, когда начальное значение счетчика цикла строго больше значениявыражение2, которое определяет условие завершения цикла. В этом случае цикл сразу завершается без выполнения и тераций. -
выражение2Выражение, определяющее условие завершения цикла.
-
внизИспользуется, когда необходимо сделать обход в обратном направлении.
метод ВычислитьСумму()
пер Сумма = 0
для Индекс = 100 вниз по 10 шаг 10
Сумма += Индекс
;
; // Сумма = 550 -
шагЗадает значение, на которое изменяется переменная
счетчик-циклапри каждой итерации. Значение шага вычисляется один раз перед началом цикла. Если шаг не указан,счетчик-циклаизменяется на единицу.метод ВычислитьСумму()
пер Сумма = 0
для Индекс = 10 по 100 шаг 10
Сумма += Индекс
;
; // Сумма = 550 -
продолжитьИспользуется, когда необходимо досрочно завершить выполнение очередной итерации и перейти к следующему значению счетчика цикла. Итерация прерывается на ключевом слове
продолжить, счетчик цикла увеличивается, и итерация начинается сначала, если цикл еще не завершен. -
прерватьИспользуется, когда надо завершить цикл немедленно, не дожидаясь его штатного завершения (по значению счетчика цикла).
Принцип работы
Цикл для работает следующим образом:
- Переменной
счетчик-циклаприсваивается начальное значение, которое получается путем вычислениявыражение1. - Проверяется необходимость завершения цикла. Для этого вычисляется
выражение2и проверяется, что значение переменнойсчетчик-цикламеньше или равно результату вычисления выражения. Если значениесчетчик-циклабольше значениявыражение2, цикл завершается. Вычисление значениявыражение2происходит один раз, в начале цикла, и не пересчитывается при каждой итерации. - Выполняется тело цикла.
- Если во время выполнения тела цикла обнаруживается ключевое слово
продолжить, то значение счетчика цикла увеличивается на 1 и выполнение продолжается с шага 2. - Если во время выполнения тела цикла обнаруживается ключевое слово
прервать, то выполнение тела цикла прерывается безусловно и управление передается в инструкцию, которая следует за последней инструкцией цикла.
- Если во время выполнения тела цикла обнаруживается ключевое слово
- Значен ие счетчика цикла увеличивается на значение шага, и выполнение продолжается с шага 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]
;