Условное управление

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

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

Используйте операторы if

Можно выполнить различные группы операторов в зависимости от конкретных условий. Используйте if, чтобы задать условие и использовать then, чтобы задать группу операторов, которые вы хотите выполнить, когда условие верно:

x := -3:
if x < 0 then
  y := x + 2;
  x := -x;
  print(x, y)
end_if:

Также можно задать группу операторов, которые вы хотите выполнить, когда условие является ложным:

x := 3:
if x < 0 then
  y := x + 2;
  x := -x;
  print(x, y)
else
  y := x + 2;
  x := x;
  print(x, y)
end_if

MuPAD® не требует круглых скобок вокруг условий:

x := 10:
if testtype(x, Type::Positive) = TRUE and 
   type(x) = DOM_INT then
  print(Unquoted, "x = ".x." is a positive integer");
end_if
x = 10 is a positive integer

Применение нескольких условий

Можно использовать несколько условий в условных операторах. Объедините несколько условий логическими операторами:

x := 5:
y := 6:
if x > 0 and 1 - y > 0 then
  print(Unquoted, "the condition is true")
else
  print(Unquoted, "the condition is false")
end_if:
the condition is false
x := 5:
y := 6:
if x > 0 or 1 - y > 0 then
  print(Unquoted, "the condition is true")
else
  print(Unquoted, "the condition is false")
end_if:
the condition is true

Используйте вложенные условные операторы

MuPAD поддерживает использование вложенных условных операторов. Например:

x := 5:
if testtype(x, DOM_COMPLEX) = TRUE then
  print("The Heaviside function is undefined for complex numbers")
else
  if x = 0 then
    heavisideX := 1/2
  else
    if x < 0 then
      heavisideX := 0
    else
      heavisideX := 1
    end_if:
  end_if;
end_if

Для вложенного if ... else if используйте команду elif в качестве ярлыка:

x := 0:
if (testtype(x, DOM_COMPLEX) = TRUE) then
  print("The Heaviside function is undefined for complex numbers")
elif x = 0 then
  heavisideX := 1/2
elif x < 0 then
  heavisideX := 0
else
  heavisideX := 1;
end_if

Вариант использования и в противном случае Операторы

Чтобы выбрать между несколькими случаями, используйте команду case. Оператор case ищет первое допустимое условие. После этого это выполняет все операторы между этим условием и ключевым словом end_if, не проверяя условия:

x := 4:
case x
  of 1 do
  of 2 do
  of 3 do print("three or less")
  of 4 do print("four")
  of 5 do print("five")
  otherwise print("6 or more")
end_case:

Чтобы выйти из оператора case после выполнения операторов, записанных при первом допустимом условии, используйте команду break. Смотрите Выход из Условного оператора для получения дополнительной информации.

Примечание

MuPAD выполняет операторы case по-другому по сравнению с MATLAB®. MATLAB выполняет только первый оператор case соответствия и пропускает следующие операторы case. В MuPAD необходимо использовать команду break, чтобы остановить выполнение следующих операторов.

Выйдите из условного оператора

Чтобы выйти из условного оператора после выполнения операторов, записанных при первом допустимом условии, используйте команду break. Например, выберите значение сигналов светофора:

trafficLight := yellow:
case trafficLight 
  of red do print(Stop); break;
  of yellow do print(Caution);  break;
  of green do print(Go); break;
end_case

Возвращаемое значение условного оператора

Все команды MuPAD производят некоторые возвращаемые значения. Условные операторы возвращают результат последней выполняемой команды:

mapColor := blue:
if mapColor = blue then
  "water"
else
  "land"
end_if

Используйте возвращаемое значение условного оператора как любое другое значение. Например, присвойте возвращаемое значение переменной. По умолчанию MuPAD не позволяет условные операторы в присвоениях. Чтобы создать допустимое присвоение, заключите условные операторы в круглые скобки. Подавите вывод возвращаемого значения условного оператора с двоеточием:

mapColor := blue:
terrain := (if mapColor = blue then "water" else "land" end_if):

Запишите предложение путем конкатенации следующей строки и переменной terrain:

print(Unquoted, "Blue color on maps usually shows ".terrain)
Blue color on maps usually shows water

Следующий оператор case также возвращает результат последнего присвоения:

palette := color:
case palette
  of monochrome do
    [color1, color2] := [black, white];
    break;
  of color do
    [color1, color2, color3] := [red, green, blue];
    break;
end_case

Отобразите промежуточные результаты

По умолчанию MuPAD не отображает промежуточные результаты, полученные в условном операторе, даже если вы используете точки с запятой после операторов. Чтобы видеть промежуточные результаты, используйте команду print в условном операторе:

Omega := 2:
if Omega > PI/2 and Omega < PI then
  signSinOmega := 1;
  signCosOmega := -1;
  print(signSinOmega, signCosOmega)
end_if: