ГОСТ Р И С 0 10303-11 — 2009
Для задания условий окончания цикла может использоваться комбинация управляющих условий.
Для управления итерациями значенияданных условий определяются следующим образом:
a) Если выполняется оператор
REPEAT
и при этом присутствует инкрементное управляющее усло
вие. то вычисляется выражение, определяющее данное инкрементное условие в соответствии с 13.9.1.
b
) Если присутствует управляющее условие
WHILE,
то вычисляется значение указанного в нем вы
ражения. Если значением выражения является
TRUE
(либо если управляющее условие
WHILE
отсутству
ет). то исполняется тело оператора
REPEAT.
Если значением выражения является
FALSE. UNKNOWN
или
неопределенность (?), то исполнение оператора
REPEAT
заканчивается.
c) Когда заканчивается исполнение тела оператора
REPEAT,
вычисляют значение выражения управ
ляющего условия
UNTIL.
Если значением выражения является
TRUE,
то дальнейшее исполнение итера
ций прекращается, и исполнение оператора
REPEAT
завершается. Если значением выражения является
FALSE
или
UNKNOWN,
то исполнение оператора
REPEAT
возвращается кпроверке инкрементного управ
ляющего условия. Если управляющее условие
UNTIL
отсутствует, то исполнение оператора
REPEAT
воз
вращается к проверке инкрементного управляющего условия.
d) Если инкрементное управляющее условие присутствует, то значение переменной цикла изменя
ется на значение, задаваемое элементом
increment.
Если значение переменной цикла находится в
пределах от
bound
j l до
bound_2,
включая данные границы, то управление передается на шаг по перечис
лению Ь). в противном случае, исполнение оператора
REPEAT
заканчивается.
Пример — В данной примере показано, как в операторе REPEAT могут использоваться
несколько управляющих условий. Повтор исполнения операторов тела цикла осуществляется до
тех пор, пока не выполнится одно из двух условий, то есть пока не будет достигнута заданная
точность или выполнено сто циклов; то есть итерационный процесс прекращается, если решение не
сходится достаточно быстро.
REPEAT I := 1 ТО 100 UNTIL epsilon < 1.Е-6;
epsilon
ENDREPEAT;
13.9.1 Инкроментное управление
При инкрементном управлении тело оператора цикла исполняется для следующих одно за другим
значений из некоторой последовательности. При входе воператор цикла неявнообъявленной переменной
числового типа
variablejd
присваивается значение
bound_1.
После каждой итерации переменной
variablejd
присваивается значение
variablejd
♦
increment.
Если элемент
increment
не задан, то по
умолчанию используется значение равное единице
(1
). Если значение
variablejd
находится в пределах
между
bound_1
и
bound_2
(включая случай, когда
variablo_id=bound_2).
то выполнение оператора цикла
продолжается.
Синтаксис:
235 increment_control = variablejd ’:=’ boundJ TO bound_2 [ BY increment].
183bound_1 = numeric_expression.
184bound_2 = numeric_expression.
234 increment = numeric_expression .
Правила и ограничения:
a) Выражения
numeric_expression,
представляющие элементы
bound_1. bound_2
и
increment,
должны иметь числовые значения.
b
) Выражения
numeric_expression.
представляющие границы и приращение, вычисляют один раз
при входе воператор
REPEAT.
c) Если какое-либо из выражений
numeric_expression.
представляющих границы или приращение,
имеет неопределенное (?) значение, то оператор
REPEAT
не исполняется.
d) Перед первым вычислением оператора инкрементного управления проверяют следующие
условия:
- если приращение (элемент
increment)
положительно и
bound_1
>
bound_2.
то оператор
REPEAT
не
исполняется.
- если приращение (элемент
increment)
отрицательно и
bound_1<bound_2.
то оператор
REPEAT
не
исполняется.
- если приращение (элемент
increment)
равно нулю
(0).
то оператор
REPEAT
не исполняется;
98