Условная операция (первая форма) имеет следующий вид:
условие?выражение1:выражение2
Если условие выполняется, то результатом является значение выражения1, иначе значение выражения2.
Например:
var min := a < b ? a : b;
Нетрудно видеть, что условная операция позволяет в простых случаях не использовать условный оператор. Например, предыдущий код для вещественных a и b эквивалентен следующему:
var min: real;
if a<b then
min := a
else min := b;
Кроме того, имеется вторая форма условной операции в синтаксисе Паскаля:
ifусловиеthenвыражение1elseвыражение2
Например:
var min := if a < b then a else b;
Рекомендуется использовать вторую форму условной операции.
Ограничение. Вторую форму условной операции нельзя использовать в качестве выражения верхнего уровня в лямбдах. Следующий код ошибочен:
var l: real -> real := x -> if x<0 then 0 else x;
Для решения указанной проблемы можно взять условную операцию в скобки:
var l: real -> real := x -> (if x<0 then 0 else x);