Оператор case

Другая структура принятия решений в Pascal – оператор case. Каждый оператор case можно заменить эквивалентным ему оператором if, однако обратное неверно – не всякий оператор if можно заменить эквивалентным case. Тем не менее, оператор case используется довольно часто и поддерживается почти во всех языках высокого уровня. Общий синтаксис оператора case имеет вид

case выражение of

список_значений_ 1: оператор1;

список_значений_ 2: о ператор2;

.

.

.

список_значений_ N: оператор N;

else о ператор X;

end;

В этом синтаксисе выражение сравнивается с выражениями каждого списка. Оно должно быть выражением порядкового типа, т.е. типа Integer, Char, Boolean или других подобных типов. Кроме того, каждое выражение в списках должно быть порядковым и вычисляемым во время компиляции. Например, в списках допустимы выражения 12, True, 4 - 9 * 5 или Integer('Z')

Переменные и вызовы большинства функций в списках значений недопустимы. С писок_значений может также содержать поддиапазон, имеющий форму первое_значени.. последнее_значение, оба из которых должны быть порядковыми, причем первое_значение £ последнее_значение. И наконец, список_значений может быть представлен в форме значение 1, значение 2,..., значениеN в которой каждое значение является порядковым значение или поддиапазоном порядковых значений.

Оператор case может содержать любое количество списоков_значений и только одно предложение else. Выполнение оператора case аналогично выполнению структуры if-then-else. Если значение управляющего выражения совпадает с любым значением из какого-либо списка, то выполняются операторы этого списка. Затем управление передается на оператор, следующий за оператором case (происходит выход из оператора case). Если управляющее выражение совпадает с значением, присутствующими в нескольких списках, то выполняются операторы самого верхнего из этих списков. Если управляющее выражение не совпадает ни с одним из значений в списках, то выполняются операторы Х предложения else. Включение предложения else в оператор case не обязательно, однако оно гарантирует, что код обработает любое непредвиденное значение управляющего выражения. Если управляющее выражение не совпадает ни с одним из значений в списках и предложение else отсутствует, то не выполняется ни один оператор и происходит выход из оператора case.

Операторы case можно вкладывать друг в друга аналогично вложенным операторам if. Каждый вложенный оператор case должен иметь ассоциированное с ним ключевое слово end.

Рассмотрим использования оператора case на примере приведенном ниже.

program prog_case;

var chChar: Char;

Begin

writeln("Enter a symbol ');

readln(chChar);

case сhChar of

'A'..'Z': writeln(chChar,' uppercase letter.')

'a'..'z': writeln(chChar,' lowercase letter.')

'0'..'9': writeln(chChar,' number.')

' ': writeln(chChar,' space.')

else writeln(chChar,' other symbol.')

readln;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: