Если логическое условие, связанное с if, приводит к нулевому массиву, то оно оценивается как ложное. Например, если Аявляется пустым массивом, то следующий блок
If A
S1
Else
S0
End
выполняет оператор S0.
Команда switch
Команда switch осуществляет обработку определенных операторов, исходя из значения пере-менной или выражения. Ее базовая форма имеет вид
switchвыражение (скаляр или строка символов)
caseзначение 1
операторы % Выполняются есливыражение == значение 1
caseзначение 2
операторы % Выполняются есливыражение == значение 2
.
.
.
Otherwise
операторы % Выполняются есливыражение не соответствует не одному
% значению, связанному с командамиcase
End
Данный блок состоит из:
•Словаswitch за которым следует выражение которое нужно оценить..
•Любого числа блоков с командами case.Эти блоки состоят из слова case, за которым на той же строке следует возможное значение выражения за словом switch. Последующие строки содержат операторы, которые необходимо выполнить при указанном значении выражения в первой строке за словом switch.Эти строки могут быть любыми допустимыми выражени-ями, включая другие циклы switch. Выполнение группы операторов, связанных с данной ко-мандой case прекращается, когда MATLAB встречает следующую команду caseили слово
otherwise. Отметим, что всегда выполняется только первый подходящий блок с case.
•Не обязательной группы операторов, начинающихся словомotherwise; эта группа обраба-тывается, если значение выражения не было перехвачено каким-либо предшествующим бло-ком с case. Обработка группы операторов за словом otherwise прекращается на команде end.
•Заключительной команды end.
Блок с командой switchработает путем сравнения входного выражения, которе может быть численным скаляром или строкой символов, с каждым значением ключей case. В случае чис-ленных выражений выполняется какой-либо (первый) блок, если справедливо логическое ра-венство значение == выражение. При выражениях в виде строки символов, блок выполня-ется, если истинно выражение strcmp(значение,выражение)(команда strcmpосуществляетлогическое сравнение строк символов).
Приведенный ниже код дает простой пример использования команды switch. Он проверяет переменную input_num и сравнивает ее с заданными числами. Если значения input_num равны –1, 0, или 1, командыcaseпроизводят вывод значений на экран в виде текста. Если переменная input_num не равна не одному из указанных значений, выполнение переходит к строке otherwise и программа выводит на экран текст 'other value' («другое значение»).
Switch input_num
Case –1
disp('negative one');
Case 0
disp('zero');
Case 1
disp('positive one');
Otherwise
disp('other value');
End
Внимание !В отличие от соответствующих операторов языка C, оператор switch в MATLAB-е «доходит» только до первого оператора case,который удовлетворяет заданному входному выражению; остальные операторы case при этом не проверяются.
Команда switch позволяет оперировать с несколькими условиями при одном операторе case, путем заключения данных условий в фигурные скобки, то есть при их записи в виде массива ячеек. Соответствующий пример приводится ниже
Switch var
Case 1
Disp('1')
case {2,3,4}
Disp('2 or 3 or 4')
Case 5
Disp('5')
Otherwise
Disp('something else')
End
Команда while
Циклы с командой while обрабатывают оператор или группу операторов, находящихся в теле цикла, до тех пор, пока истинно проверяемой логическое условие при данной команде. Иными словами, операторы внутри цикла могут выполнться любое неопределенное заранее число раз. Ее синтаксис в общем случае имеет вид
while expression
Statements
End
Если логическое выражение expression имеет матричный вид, то для продолжения выполне-ния цикла все его элементы должны быть истинными, то есть равны логической единице. Чтобы привести матричное условие к скалярному, следует воспользоваться функциямиall иany. Например, следующий цикл находит первое целое число n, для которого факториалn! является 100-значным числом
n = 1;
while prod(1:n) < 1e100
n = n + 1;
End
Для выхода из петли while в любой момент нужноприменить в теле цикла команду break. При этом, естественно, следует сформировать соответствующее логическое условие выхода из цикла.