Пусть В - булевское выражение (выражение типа bool) и пусть Е, Е' -любые выражения одного и того же типа s; тогда
if В then E else Е' fi есть условное выражение типа s. Условное выражение по своему смыслу соответствует различению случаев в математике. Если булевское выражение В имеет значение "истина", то значение условного выражения равно значению выражения Е, а если выражение В имеет значение "ложь", то значение условного выражения равно значению выражения Е'. Если В не имеет какого-либо определенного значения, то значение условного выражения нe определено.
Используется следующий синтаксис для условного выражения:
<условное_выражение>::==if <выражение> then <выражение>
{elif <выражение> then <выражение>}* else <выражение> fi
Возможность записывать с помощью elif последовательность условных выражений ("каскад разветвлений") вводится лишь из соображений сокращения записи. Значение и дополнительные условия описываются словесно.
Для условного выражения предполагаются следующие дополнительные условия:
·
условие В есть выражение типа bool,
· Е и Е' имеют одинаковые типы,
· идентификаторы, встречающиеся в В, Е и Е', используются с одними и теми же типами.
Выражения Е, Е' называют также ветвями условного выражения.
Условные выражения, в частности, могут быть вложенными - в этом случае говорят о каскаде разветвлении. Обозначение
... elif В then Е else Е' fi используется как сокращение для записи (является в смысле математической и операционной семантики эквивалентным) . else if В then Е else Е' fi fi и допускает более удобный способ записи для каскада разветвлений.
Пример (условные выражения).
if I <= 2 then 1 else 2 fi
if a then true else b fi
if a <= b then a else b fi
if a = b then a elif a < b then b - a else a - b fi
Значение условного выражения вычисляется следующим образом: сначала вычисляется условие, а затем вычисляется значение ветви, определяемой значением условия.
В соответствии с этим для вычисления значения условных выражении применяются следующие правила текстовых замен:
В