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

Блокноты 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: