Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
476.99 Кб
Скачать

50. Циклы

В цикле "с параметром n" задаются начальное значение параметра к, его конечное значение к и шаг ш - отличная от нуля величина, на которую изменяется значение параметра и после выполнения очередной итерации. В 1С шаг ш всегда принимается равным единице. Параметр п также называют переменной цикла, которая должна быть целочисленной. Параметры н и к являются в 1С числовыми выражениями и представляют соответственно нижнюю и верхнюю границы переменной цикла. Если параметр н(к) вычисляется с нецелым значением, то в качестве параметра используется целая часть результата.

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

Графически цикл "с параметром" иллюстрирует рис. 2.6.

Рис. 2.6. Цикл с параметром

Цикл "с параметром" работает так (случай ш > 0):

1. Присвоить: п = н.

2. Если п <= к, то перейти к п.3, иначе завершить цикл.

3. Выполнить БОК.

4. Присвоить: п = п + ш и перейти к п.2 (повтор).

Когда ш < 0, п.2 выглядит так:

Если п > к , то переход к п. 3°, иначе завершить цикл.

В цикле "с параметром" приведенные в пп. 1 и 4 операторы в тексте программы не присутствуют, но будут автоматически встроены компилятором в объектный код при компиляции программы.

В 1С запрет на изменение значения переменной цикла п не действует. Однако следует помнить, что изменение п в теле цикла - это плохой стиль программирования.

Запись цикла “с параметром” в 1С:

для п = н по к цикл

БОК

конецЦикла;

Цикл Пока выполняется до тех пор, пока истинно некоторое ЛВ. Причем проверка истинности ЛВ выполняется перед началом очередной итерации. Цикл До отличается от цикла Пока тем, что проверка истинности ЛВ осуществляется после выполнения очередной итерации. Графическая интерпретация циклов Пока и До приведена на рис. 2.7.

Рис. 2.7. цикл Пока

При работе с циклом Пока надо следить, чтобы ЛВ обязательно рано или поздно приняло значение ложь. Иначе произойдет зацикливание - "бесконеч­ное" выполнение операторов цикла.

Запись цикла Пока в 1С:

пока ЛВ цикл

БОК // Некоторые операторы

конецЦикла;

  1. Далее при ссылке на циклы будем использовать принятые в 1С имена операторов циклов - Для и Пока.

  2. Циклы Для и Пока могут быть вложенными. То есть в теле цикла Для (Пока) могут быть другие циклы Для и/или Пока. Например, записав код вывода групп подряд следующих непериодических констант, сообщающий перед выводом группы ее номер. (Уточним: в примере группа - это подмножество подряд следующих непериодических констант, не имеющее периодических констант. То есть группы разделяются одной и более периодическими константами.)

// Процедура, выводящая группы непериодических констант

// Запускается из обработки Проба

процедура Выполнить()

перем всегоКонстант, ин, номерГруппы, иден;

ОчиститьОкноСообщений();

номерГруппы = 0;

всегоКонстант = Метаданные.Константа();

ин = 1; // Номер константы

пока ин <= всегоКонстант цикл

если Метаданные.Константа(ин).Периодический = 0 тогда

номерГруппы = номерГруппы + 1;

Сообщить("Выводится группа с номером " + номерГруппы);

// Вложенный цикл Пока

пока Метаданные.Константа(ин).Периодический = 0 цикл иден = Метаданные.Константа(ин).Идентификатор; Сообщить(иден + " " + Константа.ПолучитьАтрибут(иден)); ин = ин + 1; // переход к следующей константе

если ин > всегоКонстант тогда

прервать; //Досрочный выход из вложенного цикла

конецЕсли; конецЦикла; // пока Метаданные.Константа(ин).Периодический = 0 иначе //Имеем периодическую константу

ин = ин + 1; // переход к следующей константе

конецЕсли

конецЦикла; // пока ин <= всегоКонстант

если номерГруппы = 0 тогда

Сообщить("В конфигураторе нет непериодических констант");

конецЕсли;

конецПроцедуры // Выполнить