Условный оператор в PL/I

Условный оператор имеет одну из следующих форм

IF x THEN y;

IF x THEN y; ELSE z;

где x – выражение; y, z –либо отдельный оператор (кроме операторов DECLARE, DEFAULT, PROCEDURE, DO, BEGIN, END, ENTRY, FORMAT, %выражений), либо группа операторов (цикл), либо блок BEGIN. Выражение x принято называть логическим. Обычно в качестве логических используются выражения, значения которых являются строками из одного бита (напомним, что результаты всех операций сравнения являются строками из одного бита). Условный оператор выполняется следующим образом. Вычисляется значение выражения x. Если оно равно биту 1, то управление передается y; после выполнения y (если не изменится порядок выполнения программы) управление передается оператору, следующему за z (если конструкция ELSE задана) либо за y (если конструкция ELSE не задана). Если значение выражения равно биту 0, то управление передается z (если конструкция ELSE задана), либо оператору, следующему за y (если конструкция ELSE не задана).

Рассмотрим примеры условных операторов. Вычисление функции

F(x) = sqrt(x) при x>0, 0 при x<=0

может быть задано с помощью операторов

IF X>0 THEN FX=SQRT(X); ELSE FX=0;

Оператор, входящий в состав условного оператора, сам также может быть условным. При этом в последовательности операторов вида IF x1 THEN IF x2 THEN y; ELSE z; конструкция ELSE относится к условному внутреннему оператору.

Последовательности операторов, ограничиваемые оператором конца (END), могут входить одна в другую, но только целиком, а не по частям. В конце каждой подобной последовательности при этом должен стоять ее собственный оператор END. В силу этого требования часто возникают случаи, когда необходимо записать подряд несколько операторов END. В PL/1 имеется возможность упростить запись нескольких подряд идущих операторов конца:

END;END;…;m1:m2:…:mk: END; (k0),

где mi (i=1,…k) – возможные метки перед последним оператором конца (предполагается, что перед другими операторами END меток нет). Пусть оператор, начинающий самую внешнюю последовательность операторов, замыкаемую последним оператором конца, имеет метку m (он может иметь дополнительно и другие метки). Предположим, что внутри этой последовательности нет других операторов с меткой m . Тогда вместо нескольких подряд идущих операторов конца достаточно записать оператор вида

m1:m2:…:mk: END m;

Отправить комментарий

  • Доступны HTML теги: <b> <i> <u> <br> <hr> <div> <span> <code> <pre>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <pli>.

Подробнее о форматировании

   __      ___  
/ /_ ( _ )
| '_ \ / _ \
| (_) | | (_) |
\___/ \___/
Enter the code depicted in ASCII art style.