case, of, otherwise, end_case, _case

Оператор switch

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Для случая переключателя в MATLAB® смотрите switch.

Синтаксис

case x
  of match1 do
    statements1
  of match2 do
    statements2
  ...
  otherwise
    otherstatements
end_case

case x
  of match1 do
    statements1
  of match2 do
    statements2
  ...
end_case

_case(x, match1, statements1, match2, statements2, , …, <otherstatements>)

Описание

Оператор case-end_case позволяет переключаться между различными ответвлениями в программу.

Оператор case является управляющей структурой, которая расширяет функциональность оператора if. В операторе case объект по сравнению со многими данными значениями, и выполняются одна или несколько последовательностей оператора.

Если значение x равняется одному из значений, match1, match2 и т.д., первое ответвление соответствия и весь после ответвлений (включая otherwise) выполняется, пока выполнение не отключено break или оператором return или end_case.

Если значение x не равняется ни одному из значений match1, match2, ..., только ответвление otherwise выполняется. Если никакое ответвление otherwise не существует, оператор case отключает и возвращает пустой объект типа DOM_NULL.

Ключевое слово end_case может быть заменено ключевым словом end.

Примеры

Пример 1

Все операторы после первого соответствия выполняются:

x := 2:
case x
  of 1 do print(1)
  of 2 do print(4) 
  of 3 do print(9)
  otherwise print("otherwise")
end_case:

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

case x
  of 1 do print(1); 1; break
  of 2 do print(4); 4; break
  of 3 do print(9); 9; break
  otherwise print("otherwise")
end_case:

delete x:

Пример 2

Функциональность оператора case позволяет совместно использовать код, который должен использоваться в нескольких ответвлениях. Следующая функция использует оператор print(x, "is a real number") для трех ответвлений, которые соответствуют действительным числам MuPAD®:

isReal := proc(x)
begin
   case domtype(x) 
     of DOM_INT do
     of DOM_RAT do
     of DOM_FLOAT do print(x, "is a real number"); break
     of DOM_COMPLEX do print(x, "is not a real number"); break
     otherwise print(x, "cannot decide");
   end_case
end_proc:
isReal(3), isReal(3/7), isReal(1.23), isReal(3 + I), isReal(z)

delete isReal:

Пример 3

Соответствие между функциональным и обязательной формой оператора case продемонстрировано:

hold(_case(x, match1, (1; break), match2, (4; break),
           print("otherwise")))
case x
  of match1 do
    1;
    break
  of match2 do
    4;
    break
  otherwise
    print("otherwise")
end_case
hold(_case(x, match1, (1; break), match2, (4; break)))
case x
  of match1 do
    1;
    break
  of match2 do
    4;
    break
end_case

Параметры

x, match1, match2, …

Произвольные объекты MuPAD

statements1, otherstatements, …

Произвольные последовательности операторов

Возвращаемые значения

Результат последней команды выполняется в операторе case. Пустой объект типа, DOM_NULL возвращен, если никакое ответвление соответствия не было найдено и никакое ответвление otherwise, существует. NIL возвращен, если с соответствующим ответвлением столкнулись, но никакая команда не выполнялась в этом ответвлении.

Алгоритмы

Функциональность оператора case соответствует оператору switch языка программирования C.

Смотрите также

Функции MuPAD