УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ

Управляющие операторы являются основным средством реализации алгоритмов, определяя последовательность выполнения операторов.


УСЛОВНЫЙ ОПЕРАТОР


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.
Вы здесь: Главная Основы ABL УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ