Циклы

Цикл - это конструкция, позволяющая выполнять последовательность команд неоднократно. Sanny Builder поддерживает несколько видов циклов: for, while, repeat.

FOR..END

В цикле FOR количество повторений (итераций) определено заранее.

Синтаксис: FOR <имя переменной> = <начальное значение> TO/DOWNTO <конечное значение> [шаг = 1] <тело цикла> END

имя переменной - переменная, которая используется для подсчета количества итераций (счетчик) начальное значение - значение счетчика перед первой итерацией (любое число, включая имя модели) TO или DOWNTO - указывает на то, увеличивается или уменьшается значение счетчика после каждой итерации конечное значение - значение счетчика, при котором цикл завершается (любое число, включая имя модели) шаг - необязательный параметр, который определяет на сколько изменяется значение счетчика после каждой итерации. По умолчанию равен 1 тело цикла - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать

var
    $value: int = 0
    $final: int = 100
end

FOR $MyCounter = 1 to $final step 2
    $value += $mycounter
end

Если тип счетчика не был объявлен ранее, счетчик приобретает тип Integer. Если начальное значение, конечное значение или шаг цикла указаны в виде переменных, эти переменные будут автоматически объявлены с тем же типом, который есть у переменной цикла.

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

var
    $MyCounter: float
end

FOR $MyCounter = 1.0 to $final step 2.0

end

// переменные $MyCounter и $final имеют тип Float

WHILE..END

Синтаксис: WHILE <условие цикла> <тело цикла> END

условие цикла - любой условный опкод тело цикла - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать

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

Константы True и False могут использоваться в качестве условия цикла.

Такой цикл будет выполняться бесконечно, пока в теле не выполнится командаBreak.

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

REPEAT..UNTIL

Синтаксис: REPEAT <тело цикла> UNTIL <условие цикла>

тело цикла - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать условие цикла - любой условный опкод

Цикл REPEAT..UNTIL работает, пока условие цикла не будет истинно. Условие проверяется в конце итерации цикла, поэтому данный цикл будет иметь минимум одну итерацию.

Константы True и False могут быть использованы в качестве условия цикла.

Команды Continue и Break

Если необходимо пропустить текущую итерацию цикла и перейти к следующей, используйте команду Continue.

Команда Break завершает цикл и передает управление на команду, следующую за завершающим end.

Обе эти команды могут быть использованы как параметр в опкоде (например, jf Continue) или как отдельная команда.

Last updated