УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ
Управляющие операторы являются основным средством реализации алгоритмов, определяя последовательность выполнения операторов.
УСЛОВНЫЙ ОПЕРАТОР
IF A THEN B ELSE C
Если условие A верно, то выполняется действие В, если не верно, то выполняется действие С. Если нет необходимости в выполнении действия С, его можно опустить, тогда условный оператор принимает вид:
IF A THEN B
DEF VAR x AS INT NO-UNDO.
DEF VAR y AS INT NO-UNDO.
x = RANDOM(1,100).
IF x > 50 THEN y = 1.
ELSE y = 0.
DISPLAY x y.
Если условием А является проверка значения логической переменной (допустим переменной L), то запись вида:
IF L = TRUE THEN ...
Можно сократить до:
IF L THEN ...
Последняя запись является более предпочтительней.
IF в ABL является не только оператором, но и функцией
a = (IF l <= 50 THEN 0 ELSE 1).
Значение переменной a будет равным 0 при значении переменно l <= 50 и 1 при l > 50.
ОПЕРАТОР ВЫБОРА CASE
CASE A:
WHEN B1 [OR WHEN B2] ... THEN C1
. . .
WHEN Bn [OR WHEN Bn+1] THEN Cn
[OTHERWISE Cn+1]
END [CASE].
Согласно значению А определяется соответствующее ему значение В. после чего выполняется соответствующее В условие С. Если значению A нет соответствующего значения В то выполняется С указанное после OTHERWISE.
DEF VAR StMonth AS CHAR NO-UNDO.
CASE MONTH(TODAY):
WHEN 1 THEN StMonth = 'Январь'.
WHEN 2 THEN StMonth = 'Февраль'.
WHEN 3 THEN StMonth = 'Март'.
WHEN 4 THEN StMonth = 'Апрель'.
WHEN 5 THEN StMonth = 'Май'.
WHEN 6 THEN StMonth = 'Июнь'.
WHEN 7 THEN StMonth = 'Июль'.
WHEN 8 THEN StMonth = 'Август'.
WHEN 9 THEN StMonth = 'Сентябрь'.
WHEN 10 THEN StMonth = 'Октябрь'.
WHEN 11 THEN StMonth = 'Ноябрь'.
WHEN 12 THEN StMonth = 'Декабрь'.
OTHERWISE StMonth = "Месяц не существует".
END.
DISPLAY DAY(TODAY) StMonth STRING(YEAR(TODAY)).
ОПЕРАТОРЫ ЦИКЛА
ОПЕРАТОР ЦИКЛА REPEAT
REPEAT: P END.
Выполняет повторение последовательности действий (операторов) P. Прекращение выполнения – выход из цикла осуществляется с помощью оператора LEAVE.
DEF VAR x AS INTEGER NO-UNDO.
REPEAT:
x = RANDOM(1,100).
IF x < 80 THEN DISPLAY x.
ELSE LEAVE.
END.
REPEAT WHILE A: P END.
Выход из цикла осуществляется автоматически, после того, как условие A перестает быть верным.
DEF VAR x AS INTEGER NO-UNDO.
REPEAT WHILE x < 80:
x = RANDOM(1,100).
DISPLAY x.
END.
REPEAT I = A TO B BY C: P END.
Осуществляет дискретное изменение переменной I начиная со значения A до значения В с шагом изменения С. При каждом изменении значения переменной A производится выполнение действия или последовательности действий P.
DEF VAR x AS INT NO-UNDO.
DEF VAR s AS INT NO-UNDO.
REPEAT x = 1 TO 10 BY 2:
s = s + x.
END.
DISPLAY s.
ОПЕРАТОР ЦИКЛА DO ... END
DO WHILE A: P END.
Циклическое выполнения действия или последовательности действий P осуществляется до момента пока верно условие A.
DEF VAR x AS INTEGER NO-UNDO.
DO WHILE x < 80:
x = RANDOM(1,100).
DISPLAY x.
END.
DO I = A TO B BY C: P END.
Осуществляет дискретное изменение переменной I начиная со значения A до значения В с шагом изменения С. При каждом изменении значения переменной A производится выполнение действия или последовательности действий P.
DEF VAR x AS INT NO-UNDO.
DEF VAR s AS INT NO-UNDO.
DO x = 1 TO 10 BY 2:
s = s + x.
END.
DISPLAY s.
Дискретное изменение значения I возможно как в сторону возрастания (А < B), так и в сторону уменьшения (A > B), шаг C при этом должен быть отрицательного значения.
DEF VAR x AS INT NO-UNDO.
DEF VAR s AS INT NO-UNDO.
DO x = 10 TO 1 BY - 2:
s = s + x.
END.
DISPLAY s.