$10 Циклы и примеры работы с ними (Для, Для каждого, Пока)

Цикл Для (For)

Оператор цикла Для предназначен для циклического повторения операторов, находящихся внутри цикла. Цикл будет выполнятся пока <переменная> не будет равно или  меньше <КонечноеЗначение>,  <переменная> будет увеличиваться на 1 автоматически. Условие (сравнение) выполняется перед выполнением цикла.

Выполнение цикла можно можно прервать в любой момент при помощи оператора Прервать; после него управление передастся операторам после КонецЦикла;.  Так же можно прервать только текущую итерацию и перейти к следующей итерации при помощи оператор Продолжить.

 

Структура цикла (Русскоязычный синтаксис):

Для <переменная> = <НачальноеЗначение> По <КонечноеЗначение> Цикл
    <операторы>
КонецЦикла;

В языке 1С как вы наверное знаете, можно использовать как русскоязычный синтаксис так и англоязычный.

Структура цикла (Англоязычный синтаксис):

For <переменная> = <НачальноеЗначение> To <КонечноеЗначение> Do
    <операторы>
EndDo;

Оператор Прервать можно заменить на Break, и Продолжить на Continue.

 

Цикл Для каждого (For each)

Оператор цикла Для каждого предназначен для циклического обхода коллекций значений. Цикл будет выполнятся пока не достигнет последнего элемента коллекции <ТекКоллекция>. В переменную <ТекЭлемент> заносится  текущий элемент коллекции на время итерации.

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

Структура цикла (Русскоязычный синтаксис):

Для каждого <ТекЭлемент> Из <ТекКоллекция> Цикл
    <операторы>
КонецЦикла;

Структура цикла (Англоязычный синтаксис):

For each <ТекЭлемент> In <ТекКоллекция> Do
    <операторы>
EndDo;

Оператор Прервать можно заменить на Break, и Продолжить на Continue.

 

 

Цикл Пока (While)

Оператор цикла Пока предназначен для циклического повторения операторов, находящихся внутри цикла. Цикл будет выполнятся пока не выполнится условие, т.е. <ЛогическоеВырожение> не станет равно Истина.

Выполнение цикла можно можно прервать в любой момент при помощи оператора Прервать; после него управление передастся операторам после КонецЦикла;.  Так же можно прервать только текущую итерацию и перейти к следующей итерации при помощи оператор Продолжить.

Структура цикла (Русскоязычный синтаксис):

Пока <ЛогическоеВырожение> Цикл
    <операторы>
КонецЦикла;

Структура цикла (Англоязычный синтаксис):

While <Логическое выражение> Do
    <операторы>
EndDo;

Оператор Прервать можно заменить на Break, и Продолжить на Continue.

 

 

Пример 1. Цикл Для

Задача: Узнать сколько раз число 387 будет делится без остатка на 3, уменьшая число на 28. Количество итераций равно 10.

Число = 387;
Счетчик = 0;
Для КолПроходов = 0 по 10 Цикл
    Если ((Число/3)=0) Тогда
        Счетчик = Счетчик + 1;
    КонецЕсли;
    Число = Число - 28;
КонецЦикла;
Сообщить (Счетчик);

 

Пример 2. Цикл Для каждого

Задача: У нас есть таблица значений «Товар» со столбцом Цена и наименование, необходимо подсчитать сумму всех товаров, но если встретим товар «груша» прерывать цикл.

Сумма = 0;
Для каждого ТекЭл из Товар Цикл
    Сумма = Сумма + ТекЭл.Цена;
    Если (ТекЭл.наименование = "груша") тогда Прервать();
КонецЦикла;
Сообщить(Сумма);

Пример 3. Цикл Пока

Есть число 586 сколько раз придется уменьшить число на 2 пока число не станет 0;

Число = 586;
Счетчик = 0;
Пока (Число <> 0) Цикл
     Число = Число - 2;
     Счетчик = Счетчик + 1;
КонецЦикла;
Сообщить(Счетчик);


comments powered by Disqus

Самоучитель по 1С

Популярное