Управление потоком команд

MATLAB имеет пять видов структур управления потоком команд:

- оператор if

- оператор switch

- циклы for

- циклы while

- оператор break

Оператор if вычисляет логическое выражение и выполняет группу операторов, если выражение истинно. Необязательные ключевые слова elseif и else служат для выполнения альтернативных групп операторов. Ключевое слово end, которое согласуется с if, завершает последнюю группу операторов.

Таким образом, все группы операторов заключены между четырех ключевых слов, без использования фигурных или обычных скобок. В общем виде конструкция выглядит так:

If условие_1

Группа_операторов_ 1

elseif условие_2

Группа_операторов_2

…………………………….

elseif условие_n

Группа_операторов_n

else

Группа_операторов_n+1

end

При этом выполняется первое истинное условие. Важно понять, как оператор отношения и оператор if работают с матрицами. Когда вы хотите узнать, равны ли две переменные, нужно использовать следующую конструкцию

ifA==B,...

Это правильный код MATLAB и он осуществляет то, что вы ожидаете, если А и В являются скалярами. Но когда А и В - матрицы, А == В не работает, если они не равны. Равенство матриц означает поэлементное равенство. Фактически, если А и В имеют различные размеры, MATLAB выдаст ошибку.

Правильный способ определения равенства между двумя переменными - это использование функции isequal

if isequal(A,B)...

При этом логический оператор "не" имеет вид: ~ (например ~А)

Логическое выражение "А не равно В" примет вид: А~=В

или - isequal(A,B)

Логические выражения "А и В" и "А или В" приводятся соответственно в виде: А&&В, А||В. Операторы "больше" и "меньше" - стандартные - > и <.

Некоторые функции могут быть полезны для матричного сравнения при использовании с оператором if, например: isequal, isempty, all, any.

Оператор switch выполняет группу операторов, базируясь на значении переменной или выражения. Ключевые слова case и otherwise разделяют эти группы. Выполняется только первый соответствующий случай. Необходимо использовать end для согласования с switch.

Общая структура конструкции представлена ниже:

switch выражение_выбора

case значение_1

Группа_операторов_ 1

case значение_2

Группа_операторов_2

……………………………………

case значение_n

Группа_операторов_n

otherwise

Группа_операторов_n+1

end

Замечание для программистов Си В отличие от языка Си, оператор switch в MATLAB не "проваливается". Если первый случай является истинным, другие случаи не выполняются. Таким образом, нет необходимости в использовании оператора break.

Цикл for повторяет группу операторов фиксированное, предопределенное число раз. Ключевое слово end ограничивает тело цикла.

for n = 1:100

r(n) = sqrt(n);

end

r

Точка с запятой после выражения в теле цикла предотвращает повторения вывода результатов на экран, а r после цикла выводит окончательный результат.

Цикл while повторяет группу операторов определенное число раз, пока выполняется логическое условие. Ключевое слово end очерчивает используемые операторы.

Ниже приведена полная программа, иллюстрирующая работу операторов while, if, else и end, которая использует метод деления отрезка пополам для нахождения нулей полинома

а = 0;

fa = -Inf;

b = 3;

fb = Inf;

while b-a > eps*b

x = (a+b)/2;

fx = x^3-2*x-5;

if sign(fx) == sign(fa)

a = x;

fa = fx;

else

b = x;

fb = fx;

end

end

x

Результатом будет корень полинома х3-2х-5

х =

2.09455148154233

Для оператора while верны те же предостережения относительно матричного сравнения, что и для оператора if. которые обсуждались ранее.

Оператор break позволяет досрочно выходить из циклов for или while. Во вложенных циклах break осуществляет выход только из самого внутреннего цикла.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: