Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab5 - М-файлы и основы программирования в MatL....doc
Скачиваний:
19
Добавлен:
03.11.2018
Размер:
252.93 Кб
Скачать

2.5.3. Условный оператор if

Условный оператор if позволяет создать разветвляющийся алгоритм выполнения команд, в котором при выполнении определенных условий работает соответствующий блок операторов или команд MatLab.

Оператор if может применяться в простом виде для выполнения блока команд при удовлетворении некоторого условия или в конструкции if-elseif-else для написания разветвляющихся алгоритмов.

Пусть требуется вычислить выражение . Предположим, что вычисления выполняются в области действительных чисел и требуется вывести предупреждение о том, что результат является комплексным числом. Перед вычислением функции следует произвести проверку значения аргумента x, и вывести в командное окно предупреждение, если модуль x не превосходит единицы. Здесь необходимо применение условного оператора if, применение которого в самом простом случае выглядит так:

if условие

команды MatLab

end

Если условие выполняется, то реализуются команды MatLab, размещенные между if и end, а если условие не выполняется, то происходит переход к командам, расположенным после end. При записи условия используются операции, приведенные в табл. 1.

Файл-функция, проверяющая значение аргумента, приведена в следующем листинге. Команда warning служит для вывода предупреждения в командное окно.

Листинг файл-функции Rfun, проверяющей значение аргумента

function f = Rfun(x)

% вычисляет sqrt(x^2-1)

% выводит предупреждение, если результат комплексный

% использование y = Rfun(x)

% проверка аргумента

if abs(x)<1

warning('результат комплексный')

end

% вычисление функции

f = sqrt(x^2-1);

Теперь вызов Rfun от аргумента, меньшего единицы, приведет к выводу в командное окно предупреждения:

>> y = Rfun(0.2)

результат комплексный

y =

0 + 0.97979589711327i

Файл-функция Rfun только предупреждает о том, что ее значение комплексное, а все вычисления с ней продолжаются. Если же комплексный результат означает ошибку вычислений, то следует прекратить выполнение функции, используя команду error вместо warning.

2.5.4. Оператор ветвления if-elseif-else

В общем случае применение оператора ветвления if-elseif-else выглядит следующим образом:

if условие 1

команды MatLab

elseif условие 2

команды MatLab

elseif условие 3

команды MatLab

. . . . . . . . . . .

elseif условие N

команды MatLab

else

команды MatLab

end

В зависимости от выполнения того или иного из N условий работает соответствующая ветвь программы, если не выполняется ни одно из N условий, то реализуются команды MatLab, размещенные после else. После выполнения любой из ветвей происходит выход из оператора. Ветвей может быть сколько угодно или только две. В случае двух ветвей используется завершающее else, а elseif пропускается. Оператор должен всегда заканчиваться end.

Пример использования оператора if-elseif-else приведен в следующем листинге.

function ifdem(a)

% пример использования оператора if-elseif-else

if (a == 0)

warning('а равно нулю')

elseif a == 1

warning('а равно единице')

elseif a == 2

warning('а равно двум')

elseif a >= 3

warning('а, больше или равно трем')

else

warning('а меньше трех, и не равно нулю, единице, двум')

end