Конспект установочных лекций по комплексному курсу Информатика, Теория информации




Условные выражения


Пусть В - булевское выражение (выражение типа 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

Значение условного выражения вычисляется следующим образом: сначала вычисляется условие, а затем вычисляется значение ветви, определяемой значением условия.


Содержание  Назад  Вперед