Операторы условного ветвления
Операторы условного ветвления представлены в Паскале двумя разновидностями. Более универсальной разновидностью является оператор «IF-THEN-ELSE», позволяющий проводить ветвление программы в зависимости от значения произвольного выражения, имеющего логический тип. Такой оператор может иметь только положительную ветвь (THEN), может – положительную и отрицательную ветви. Варианты использования оператора проиллюстрированы на рис. 4.
Рис. 4. Условный оператор If-Then-Else
В обоих случаях вначале происходит проверка значения выражения. Если выражение истинно, выполняется оператор в секции Then. Если выражение ложно, то в первом случае управление передаётся сразу оператору, следующему в программе за оператором If-Then, а во втором – вначале выполняется оператор в секции Else. Если требуется поместить в секцию then или else последовательность операторов, её следует заключить в операторные скобки Begin-End.
Вторая разновидность условного оператора – оператор многовариантного ветвления. Такой оператор имеет смысл использовать, если требуется проанализировать значение одного выражения порядкового типа (целый, символьный, перечисляемый) на соответствие различным вариантам значений.
Синтаксис оператора следующий:
case
<выражение>
of
<знач1> : <действие1>;
<знач2>..<знач3> : <действие2>;
<знач4>,<знач5>,<знач6> : <действие3>;
<знач7>,<знач8>..<знач9> : <действие4>;
[else
<действиеи>;]
end;
При выполнении этого оператора, сначала происходит вычисление выражения. Далее, результат выражения последовательно сопоставляется с указанными до символов двоеточия значениями. Значения могут иметь вид одиночных констант, а также списков и диапазонов.
Константы и элементы диапазонов и списков должны иметь тот же тип, что и выражение. В разных строках не могут быть описаны пересекающиеся множества значений.
Если ни один из предложенных вариантов не подошёл, управление передаётся секции Else. Если последняя отсутствует – оператору, следующему за Case.
Если в одной из ветвей оператора Case требуется выполнить несколько операторов подряд, эти операторы должны быть заключены в операторные скобки Begin-End.
Пример использования оператора Case:
case C of
#32: Writeln (’Space’);
’0’..’9’: Writeln (’Digit’);
’A’..’Z’, ’a’..’z’: Writeln (’Letter’);
else Writeln (’Unknown’);
end;