Глава 3. Элементы программирования
тинном условии выполняется блок команд до следующего ключевого слова elseif. Если условие условие_2 ложно, проверяется условие_3, и так далее. В случае, если ни одно из условий не выполнено, выполняются команды после ключевого слова else. Далее приведен пример программного кода, в котором используются условные операторы:
function y=MakeChoice(x) if x<0
disp('Отрицательное значение аргумента!');
else
disp('Неотрицательное значение аргумента!');
end
disp('Вычисление значения функции:'); if x<-5
y=x+5; elseif x<0
y=x*(x+5); elseif x<7
y=x*(x-7);
else
y=x-7;
end
disp('Вычисление значения функции завершено!'); if y==0
disp('Значение функции равно нулю!');
end end
Окно редактора m-файлов с этим кодом представлено на рис. 3.21.
Код функции MakeChoice() несколько искусственный и носит иллюстративный характер. Основу его составляют три условных оператора. В первом из них проверяется условие x<0, где через x обозначен аргумент функции. Условие x<0 является истинным, если аргумент функции меньше нуля.
Вэтом случае на экран выводится сообщение о том, что у функции отрицательный аргумент. В противном случае, то есть если условие x<0 ложно, выводится сообщение о том, что аргумент неотрицательный.
Вследующем условном операторе проверяется условие x<-5. Если это так, то переменной y, которая предназначена для записи значения функции, присваивается значение x+5. Если условие x<-5 не выполнено, проверяется условие x<0. В этом случае выполняется команда y=x*(x+5). Если же не выполнено и условие x<0, проверяется условие x<7. На этот случай, то есть когда аргумент функции меньше семи (но не меньше нуля), предусмотрена команда y=x*(x-7). Если ни одно из перечисленных условий не выполняется (аргумент функции больше либо равен семи), значение переменной y определяется с помощью команды y=x-7.
121
Самоучитель Matlab
Рис. 3.21. Программный код функции MakeChoice() с использованием условных операторов
После того, как вычислено значение функции (присвоено значение переменной y), выполняется еще один условный оператор, в котором проверяется условие равенства нулю значения функции (условие y==0). Если условие выполнено, выводится текстовое сообщение о том, что значение функции нулевое. В противном случае никаких дополнительных действий не предпринимается. Результат вызова функции MakeChoice() с разными аргументами приведен на рис. 3.22.
На заметку
Стоит обратить внимание на второй условный оператор с несколькими проверяемыми условиями. Особенность его состоит в том, что каждое следующее условие проверяется только в том случае, если не выполнено ни одно из предыдущих условий.
Подобно условному оператору if, в котором проверяется серия условий, с помощью оператора перебора switch выполняется проверка значения переменной или выражения. Переменная указывается после ключевого слова switch. Ключевое слово case используется для организации программных блоков, которые выполняются в зависимости от значения переменной. Общий синтаксис вызова оператора перебора switch следующий:
122
Глава 3. Элементы программирования
Рис. 3.22. Результат вычисления функции MakeChoice() для разных аргументов
switch выражение case значение_1 команды_1
case значение_2 команды_2
...
case значение_N команды_N otherwise
команды_N+1 end
123
Самоучитель Matlab
Оператор выполняется по следующей схеме: вычисляется значение выражения. Затем это значение последовательно сравнивается со значениями, указанными в case-блоках (после ключевого слова case), до первого совпадения. Если совпадение найдено, выполняются команды в соответствующем case-блоке. Если совпадения не найдено, выполняется блок команд, помеченный инструкцией otherwise. Последний блок (то есть otherwise-блок) не является обязательным. Пример использования оператора перебора switch приведен ниже:
function y=MultiFunc(x,n) switch n
case 1 y=x; case 2
y=x*(10-x); case {3,4,5}
y=x*sin(n*x); otherwise
y=1/(1+x^2);
end end
Кодом объявляется функция MultiFunc(), у которой два аргумента. Причем второй аргумент играет роль индикатора, который определяет тип функциональной зависимости. Варианты перебираются с помощью оператора switch. Значение функции записывается в переменную y. При единичном втором аргументе (переменная n) функции MultiFunc() значение переменной y определяется командой y=x в первом case-блоке (через x обозначен первый аргумент функции). Если значение переменной n равно 2, выполняется команда y=x*(10-x). Если же второй аргумент функции MultiFunc() равен 3, 4 или 5, значение функции вычисляется командой y=x*sin(n*x).
На заметку
Обращаем внимание читателя, что в этом случае в качестве проверяемого значения в соответствующем case-блоке указаны фигурные скобки с перечисленными в них значениями 3, 4 и 5 (в качестве разделителя используется запятая).
Наконец, если значение переменной n не совпадает ни с одним из перечисленных выше значений, для определения значения функции выполняется команда y=1/(1+x^2) (блок otherwise). На рис. 3.23 показано окно редактора m-файлов с кодом функции MultiFunc().
124
Глава 3. Элементы программирования
Рис. 3.23. Код функции с оператором перебора
Результат вызова функции MultiFunc() с разными аргументами приведен на рис. 3.24.
Рис. 3.24. Результат вызова функции с оператором перебора
125