Sfera-perm.ru

Сфера Пермь
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Когда используют цикл со счетчиком

Циклы в программировании 1С 8.3

Цикл в программировании — это любая многократно исполняемая последовательность инструкций, организованная любым способом. Именно так описывается цикл во всех языках программирования. По сути циклы в 1С 8.3 не исключение. Но как всегда, каждый язык программирования имеет свою конструкцию, синтаксис, что выражаясь на обычном языке можно описать как правописание. Перейдем к изучении основных понятий и к примерам.

Цикл «Для…»

Оператор цикла Для предназначен для циклического повторения операторов, в конструкции Цикл – КонецЦикла. Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.

  • Переменная является счетчиком и при каждом повторении цикла автоматически увеличивается на 1. Иначе говоря, это счетчик цикла.
  • Знач1 число, которое задает начальное значение счетчику цикла.
  • Знач2 число, которое задает максимальное значение счетчику цикла. Если значение счетчика цикла становится больше чем Знач2 цикл прекращается.

Пример 1 — Простой обход циклом с счетчиком

На данном примере счетчик цикла Сч при каждом входе в цикл увеличится на единицу, и пока не достигнет значению 11, цикл будет продолжаться.

Пример 2 — Обход с увеличением

Но, при решении конкретных задач, автоматическое увеличение значения счетчика цикла на единицу не всегда уместно. Так что же делать, ведь это же автоматическая функция?! Но всегда есть выход.

Рассмотрим конкретный пример в котором попробуем счетчику цикла задать шаг ровной к 5-и:

Пример 3 — С выходом из цикла «Прервать» (проверка на вечный цикл)

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Приведем пример, где Сч, Счетчик, Сдвиг, Шаг, КоличествоСообщений являются переменными. Во избежание вхождения программы в вечный цикл, проводиться проверка и при необходимости цикл прерывается:

*Данный пример мы привели во внешней обработке.

Цикл «Для Каждого…»

Оператор цикла Для Каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.

  • Переменная: при каждом входе в цикл переменной присваивается значение очередного элемента коллекции.
  • КоллекцияЗначений: коллекция значений, элементы которой будут присваиваются переменной Переменная.

Пример 1 — Простой обход таблицы значения

Создадим таблицу значений. Как мы помним, делается это на сервере.

И так, мы создали таблицу значений. Вскроем таблицу, для лучшего понимания.

ИндексЗначение элементаТип элементаАвтомобильКлассВес
СтрокаТаблицыЗначенийСтрокаТаблицыЗначений«KIA»«A Класс»1 100
1СтрокаТаблицыЗначенийСтрокаТаблицыЗначений«Ford»«B Класс»1 300
2СтрокаТаблицыЗначенийСтрокаТаблицыЗначений«BMW»«C Класс»1 400

Теперь реализуем обход по коллекции с помощью цикла Для Каждого.

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

*Данный пример мы привели во внешней обработке.

Пример 2 — Обход массива

Создадим еще одну коллекцию. Массив, в отличии от таблиц значений, можно создать на клиенте тоже.

Читайте так же:
Остановка счетчика gerrida свк 15г

Взглянем на коллекцию:

ИндексЗначение элементаТип элемента
«Арина»Строка
1«Марина»Строка
2«Карина»Строка

А теперь реализуем обход по коллекции, с помощью цикла Для Каждого:

Пример 3 — Оператор «Продолжить»

Еще один пример, где применим оператор Продолжить:

ИндексЗначение элементаТип элемента
3Число
17Число
28Число
39Число

Цикл «Пока…»

Оператор цикла Пока предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл – КонецЦикла. Цикл выполняется, пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла. (Описание: синтакс-помощник)

Выражение: логическое выражение, в зависимости значения которой будет выполнятся, или не выполнятся цикл.

Пример 1 — Обход массива с счетчиком

Взглянем на коллекцию.

ИндексЗначение элементаТип элемента
«Снегурочка N1»Строка
1«Баядерка N2»Строка
2«Синяя птица N3»Строка
3«Красная Шапочка N4»Строка

Как мы знаем, индексы строк в коллекции начинаются с 0-я. Это прекрасно видно на развернутом виде коллекции.

  • МоиЛюбимыеКонфеты.Количество() определяет количество срок в коллекции, что в данном случае рано 4-ом.
  • МоиЛюбимыеКонфеты[Сч] определяет элемент коллекции по индексу, где Сч играет роль индекса, и при каждом входе в цикл прибавляется на единицу. Тем самим, мы с каждым разом обращаемся к следующей строке коллекции, начиная со строки с индексом 0. И цикл будет продолжаться, пока значение логического выражение Сч Пример 2 — Обратный цикл с счетчиком

Но можно получить тот же список, но в обратном порядке. Это называется обратный цикл, хотя на самом деле, этот тот же самый цикл Пока.

Обратимся к тому же массиву, но напишем код обратного цикла.

Поясню, что счет индекса начинается с цифры равному количества строк -1, поскольку индекс последней строки ровно 3-ом. После, в каждом цикле, индекс уменьшается на единицу и тем самим мы обходим коллекцию с обратной стороны.

*Данный пример мы привели во внешней обработке.

«Прервать» и «Продолжить» в циклах 1С 8.3

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

  • Прервать: прерывает выполнение цикла в любой точке. После выполнение этого оператора цикл прекращается и управление передается следующему оператору, который находиться после ключевого слова КонецЦикла.
  • Продолжить: возвращает управление в начало цикла. Операторы, следующие в теле цикла за оператором Продолжить, не выполняются в текущей итерации обхода.

Видео Школы 1С по теме циклов

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Циклы

Циклы — это особые выражения, позволяющие выполнить один и тот же блок кода несколько раз. Выполнение кода прерывается по наступлению некоего условия.

JavaScript предлагает программистам несколько разновидностей циклов. Рассмотрим их подробнее.

Цикл со счетчиком

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

Цикл со счетчиком записывается так:

Здесь используется ключевое слово for. Поэтому такие циклы часто называют «циклами for».

Выражение инициализации выполняется самым первым и всего один раз. Оно присваивает особой переменной, называемой счетчиком цикла, некое начальное значение (обычно 1). Счетчик цикла подсчитывает, сколько раз было выполнено тело цикла — собственно код, который нужно выполнить определенное количество раз.

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

После прохода тела цикла выполняется выражение приращения, изменяющее значение счетчика. Это выражение обычно инкрементирует счетчик (увеличивает его значение на единицу). Далее снова проверяется условие, выполняется тело цикла, приращение и т. д., пока условие не станет равно false.

Пример цикла со счетчиком:

Этот цикл будет выполнен 10 раз. Мы присваиваем счетчику i начальное значение 1 и после каждого выполнения тела цикла увеличиваем его на единицу. Цикл перестанет выполняться, когда значение счетчика увеличится до 11, и условие цикла станет ложным.

Счетчик цикла можно записать в одном из выражений тела цикла, как это сделали мы. В нашем случае счетчик i будет содержать последовательно возрастающие значения от 1 до 10, которые используются в вычислениях.

Приведем еще два примера цикла со счетчиком:

for (i = 10; i > 0; i—) <
a += 3;
b = i * 2 + 1;
>

Здесь значение счетчика декрементируется. Начальное его значение равно 10. Цикл выполнится 10 раз и завершится, когда счетчик i будет содержать 0; при этом значения последнего будут последовательно уменьшаться от 10 до 1.

А в этом примере начальное значение счетчика равно 2, а конечное — 21, но цикл выполнится, опять же, 10 раз. А все потому, что значение счетчика увеличивается на 2 и последовательно принимает значения 2, 4, 6. 20.

Цикл с постусловием

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

Формат цикла с постусловием:

Для задания цикла с постусловием предусмотрены ключевые слова do и while, по-этому такие циклы часто называют «циклами do-while».

Вот пример цикла с постусловием:

А вот еще один пример:

var a = 0, i = 1;
do <
a = a * i + 2;
++i;
> while (i

Хотя здесь удобнее был бы уже знакомый нам и специально предназначенный для таких случаев цикл со счетчиком.

Цикл с предусловием

Цикл с предусловием отличается от цикла с постусловием тем, что условие проверяется перед выполнением тела цикла. Так что, если оно (условие) изначально ложно, цикл не выполнится ни разу:

Для создания цикла с постусловием предусмотрено ключевое слово while. Поэтому такие циклы называют еще «циклами while» (не путать с «циклами do-while»!).

Пример цикла с предусловием:

Прерывание и перезапуск цикла

Иногда бывает нужно прервать выполнение цикла. Для этого JavaScript предоставляет Web-программистам операторы break и continue.

Оператор прерывания break позволяет прервать выполнение цикла и перейти к следующему за ним выражению:

В этом примере мы прерываем выполнение цикла, если значение переменной a превысит 50.

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

Здесь мы пропускаем выражение, вычисляющее a , для всех значений i от 10 до 20.

Алгоритмическая структура «Цикл»

В алгоритмическую структуру «цикл» входит серия команд, выполняемая многократно. Такая последователь­ность команд называется телом цикла.

Циклические алгоритмические структуры бывают двух типов:

циклы со счетчиком, в которых тело цикла выполняется определенное количество раз;

циклы с условием, в которых тело цикла выполняется, пока условие истинно или ложно.

Алгоритмическая структура «цикл» может быть зафик­сирована различными способами:

• графически – с помощью блок-схемы;

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

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

В начале выполнения цикла значение переменной i устанавливается равным In. При каждом проходе цикла переменная i увеличивается на величину шага. Если она достигает величины, большей Ik, то цикл за­вершается и выполняются следующие за ним операторы (нц – начало цикла, кц – конец цикла).

для i от In до Ik, повторять

нц

кц

Циклы с условием. Часто бывает так, что необходимо по­вторить тело цикла, но заранее неизвестно, какое количест­во раз это надо сделать. В таких случаях количество повто­рений зависит от некоторого условия.

Условие выхода из цикла можно поставить в начале, пе­ред телом цикла. Такой цикл называется циклом с предусло­вием.

цикл выполняется, пока условие имеет значение «истина». Как только условие примет значение «ложь», вы­полнение цикла закончится. В этом случае условие является условием продолжения цикла.

Условие выхода из цикла можно поставить в конце, после тела цикла. Такой цикл называется «циклом с постусловием». цикл выполняется, пока условие имеет значение «ложь». Как только условие примет значение «ис­тина», выполнение цикла закончится. В этом случае усло­вие является условием завершения «цикла».

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

повторять

до тех пор, пока не выполнится

Примеры

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

В алгебраической форме решение задачи выглядит следующим образом:

.

Исходными данными являются четыре целые величины: а, b, с, d. Результат – два целых числа m и n.

Тест: a = 3, b=4, c=5, d=6. Результат: m = 18, n = 20.

Даны три вещественных числа А, В, С. Найти наибольшее среди них.

Сначала определяется большее среди двух значений А и В, затем большее между найденным зна­чением и величиной С. Алгоритм имеет структуру двух

Тест: a = 3, b = 6, c = 2. Результат: D = 6.

Дано целое положительное число N. Вычислить факториал этого числа: N! = 1 * 2 * 3 * . * N

Задача решается c помощью циклического алгоритма: цикла с параметром.

2

Тест: N = 5. Результат: факториал F = 120.

вычислить значение функции Y = A = BX + CX 2 для изменяющимся с шагом 0,5.

Использование вложенных циклов на примере вычисления двойной суммы

где

А= – матрица или двумерный массив данных одного и того же типа.

В = (b1, b2, b3, …, bk) – одномерный массив (вектор) данных одного и того же типа.

Замечание. В соответствии с ГОСТ 19.701-90 границы цикла можно изображать следующим образом:

Начало цикла и конец цикла – оба символа имеют один и тот же идентификатор. Условия инициализации, приращения, завершения и т.д. помещаются внутри графического символа в начале или в конце в зависимости от расположения операции, проверяющей условие.

ОПЕРАТОР ЦИКЛА СО СЧЕТЧИКОМ( с параметром ) (for).

Оператор цикла со счетчиком подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторений цикла. Это обусловливает его менее широкую сферу применения, чем более универсальные циклы WHILE и REPEAT. Однако в тех случаях, когда его использование возможно, оператор цикла со счетчиком, благодаря своей высокой наглядности, имеет несомненное преимущество перед другими операторами цикла. Операторы цикла с параметром (которые начинаются со слова for) вызывает повторяющееся выполнение оператора (который может быть составным оператором) пока управляющей переменной присваивается возрастающая последовательность значений.

Упрощенно общую структуру оператора данного цикла можно представить одним из следующих способов.

1) Если счетчик при выполнении цикла наращивает свое значение:

FOR переменная := начальноеЗначениеСчетчика

TO КонечноеЗначениеСчетчика DO Оператор

Чтобы оператор выполнился хотя бы один раз НачальноеЗначениеСчетчика должно быть не больше, чем КонечноеЗначениеСчетчика.

2) Если счетчик при выполнении цикла уменьшает свое значение:

FOR переменная := начальноеЗначениеСчетчика

DOWNTO КонечноеЗначениеСчетчика DO Оператор

Чтобы оператор выполнился хотя бы один раз НачальноеЗначениеСчетчика должно быть не меньше, чем КонечноеЗначениеСчетчика.

Заметим, что для оператора FOR, в отличие от WHILE и REPEAT, установка начального значения счетчика циклов выполняется не перед заголовком, а прямо в заголовке записью переменная := начальноеЗначениеСчетчика. Кроме того, после окончания тела цикла наращивание или уменьшение значения счетчика происходит автоматически. Таким образом, специальный оператор для увеличения или уменьшения значения счетчика не требуется, более того, такой оператор приведет к неправильной работе цикла.

В качестве управляющей переменной должен использоваться идентификатор переменой (без какого-либо квалификатора), который обозначает переменную, объявленную локальной в блоке, в котором содержится оператор for. Управляющая переменная должна иметь перечислимый тип. Начальное и конечное значения должны иметь тип, совместимый по присваиванию с перечислимым типом.

Когда начинает выполняться оператор for, начальное и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора for.

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

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

Приведем примеры оператора цикла с параметром:

1) for I := 2 to 63 do

if Data > Max then Max:=Data

2) for I := 1 to 10 do

for J := 1 to 10 do begin X := 0;

for K := 1 to 10 do X := X + Mat1[I,K]*Mat2[K, J] ;

3) for C := red to blue do Check(C);

Решить задачу1 с применением цикла с параметрами нельзя, так как приращение значения х=0.2, а не 1. Хотя, если подсчитать сколько раз вычисляется функция можно постараться и применить цикл с параметрами, но это не лучший вариант решения задачи.

К решению следующей задачи так и просится применение этого цикла.

Задача2. Найти произведение и сумму всех четных чисел из интервала [-100,300].

Var x, Summa, Proizvedenie: integer;

begin summa:=0; Proizvedenie:=1;

for x:=-100 to 300 do begin

if x mod 2=0 then begin summa:=summa+x;

Proizvedenie:= Proizvedenie *x;

end; writeln(‘summa=’, summa,’ Proizvedenie=’, Proizvedenie);

Если число повторений заранее известно, то подходящей конструкций является оператор for. В противном случае следует использовать операторы while или repeat.

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector