
3. Операторы управления matlab
В MATLAB имеется 6 операторов управления, которые позволяют реализовать разветвление алгоритмов. Это операторы for, while, if, switch, breake, return.
Операторы for и while – это операторы цикла. Они многократно выполняют однотипные инструкции при различных значениях некоторого целочисленного параметра.
Формат оператора for следующий:
for n=ni:h:nf
{инструкции}
end
Где
- целочисленный параметр, изменяющийся
от начального значения
до конечного значения
с шагом
.
При каждом
выполняются {инструкции}
– последовательность команд на языке
MATLAB.
Инструкции сами могут содержать вложенный
цикл for:
for n=ni:hn:nf
{Инструкции}
for k=ki:hk:kf
{Инструкции}
end
{Инструкции}
end
Пример.
Записать с помощью
оператора for
алгоритм вычисления первых 10 членов
арифметической прогрессии
.
Решение.
N=10;
q=3;
a(1)=1;
S=a(1);
for n=1:1:N-1
a(n+1)=a(n)+q;
S=S+a(n+1);
end
Оператор while имеет формат
while {Условие}
{Инструкции}
end
При обращении к оператору while проверяется {Условие}, в случае его истинности выполняются {Инструкции}, после чего снова следует переход к оператору while. Если условие оказывается ложным, происходит переход к оператору, следующему за служебным словом end. {Инструкции} оператора while также могут содержать вложенный оператор while.
Пример.
Записать с помощью
оператора while
алгоритм вычислениям
.
Решение.
P=1; % первый множитель факториала
k=1; % k - счётчик множителей
n=10; % число множителей
while k<=n-1
P=P*(k+1);
k=k+1;
end
Использовать операторы цикла в MATLAB слишком часто не желательно, поскольку они выполняются значительно медленнее, чем векторные поэлементные операции. Именно их и следует использовать в первую очередь.
Операторы if и switch – условные операторы. Они однократно выполняют различные инструкции в зависимости от значения, принимаемого некоторым условием или выражением. Эти операторы позволяют строить разветвлённые алгоритмы.
Формат оператора if следующий:
if {Условие}
{Инструкции}
end
или:
if {Условие 1}
{Инструкция 1}
elseif {Условие 2}
{Инструкция 2}
elseif {Условие 3}
{Инструкция 3}
.
.
elseif {Условие N}
{Инструкция N}
else
{Инструкции}
end
В первом случае при обращении к оператору if проверяется {Условие}. Если оно истинно, выполняются {Инструкции}, если же условие ложно, происходит переход к оператору, следующему за служебным словом end.
Во втором случае
при обращении к оператору if
проверяется {Условие
1}.
Если оно истинно, выполняется {Инструкция
1},
если {Условие
1}
ложно, проверяется {Условие
2}. При
его истинности выполняется {Инструкция
2}, в
противном случае проверяется {Условие
3}
и т.д. до
{Условия
N}.
Если все
условий ложны, выполняются инструкции
перед служебным словом end.
Оператор switch имеет формат
switch {Выражение}
case {Значение 1}
{Инструкция 1}
case {Значение 2}
{Инструкция 2}
.
.
case {Значение N}
{Инструкция N}
otherwise
{Инструкции}
end
При обращении к оператору вычисляется значение {Выражения}. В случае, если оно принимает {Значение 1}, выполняется {Инструкция 1}, после чего совершается переход к оператору, следующему за служебным словом end. Если {Выражение} принимает {Значение 2}, выполняется {Инструкция 2}, после чего также совершается переход к оператору, следующему за служебным словом end. Если же выражение не принимает ни одного из N {Значений}, выполняются {Инструкции} после служебного слова otherwise.