Основы программирования

Для решения многих задач требуется писать программы, в которых действия повторяются циклически, в зависимости от некоторых условий выполняются различные части программы. Для этого используются операторы циклов for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, а цикл while - для действий, число повторений которых заранее не известно, но известно условие продолжения цикла.

Цикл for.

Простое использование цикла for осуществляется следующим образом:

for count=start:step:final

команды MatLab

end

Здесь count – переменная цикла, start – ее начальное значение, final – конечное значение, а step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака.

Пусть требуется вывести семейство кривых для основы программирования - student2.ru , которое задано функцией, зависящей от параметра основы программирования - student2.ru . Используем цикл for. Наберём текст файл-процедуры, приведенный ниже в редакторе М-файлов, и запустим его на выполнение :

figure

x=[0:pi/30:2*pi];

for a=-0.1:0.02:0.1

y=exp(-a*x).*sin(x);

hold on

plot(x,y)

end

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

основы программирования - student2.ru

Рис. 7 Семейство кривых

Цикл while

Цикл while работает, пока выполняется условие цикла:

while условие цикла

команды MatLab

end

Пусть требуется найти сумму ряда для заданного x (разложение в ряд sin x):

основы программирования - student2.ru .

Будем накапливать сумму, пока слагаемые больше основы программирования - student2.ru (по модулю).

В данном примере условием цикла является то, что текущее слагаемое основы программирования - student2.ru больше основы программирования - student2.ru . Для записи условия следует использовать знак больше (>). Текст файл-функции mysin, вычисляющей сумму ряда приведен в листинге :

function S=mysin(x)

% Вычисление синуса разложением в ряд

% использование: y=mysin(x), -pi<x<pi

S=0;

k=0;

while abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10

S=S+(-1)^k*x.^(2*k+1)/factorial(2*k+1);

k=k+1;

end

У цикла while, в отличие от for, нет переменной цикла, поэтому пришлось до начала цикла k присвоить ноль, а внутри цикла увеличивать k на единицу.

Условие цикла while может содержать не только знак >. Для задания условия выполнения цикла допустимы также другие операции отношения приведенные в таблице:

Отношения

Обозначение Операция отношения
== Равенство
< Меньше
<= Меньше или равно
>= Больше или равно
~= Не равно


Задание более сложных условий производится с применением логических операторов.

Логические операторы и примеры их использования приведены в таблице:

Логические операторы

Оператор Условие Запись в MatLab Эквивалентная запись
Логическое «и» x<3 и k=4 and (x<3, k==4) (x<3) & (k==4)
Логическое «или» x=1, 2 or(x==1, x==2) (x==1) | (x==2)
Отрицание «не» основы программирования - student2.ru not(a==1.9) ~(a==1.9)

Для задания порядка выполнения логических операций следует использовать круглые скобки, например записи (x==1) | (x==2) & (y==3) и (x==1) | ((x==2) & (y==3)) не эквивалентны в MatLab, в отличие от многих языков программирования.

Операторы ветвления

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

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

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

Применение if в самом простом случае выглядит так:

if условие

команды MatLab

end

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

Организация ветвления

В общем виде оператор ветвления представляет конструкцию if-еlsеif-else, работу которой хорошо поясняет пример файл-функции ifdem:

function ifdem(a)

% Пример использования структуры if—еlsеif—еlsе

if(a==0)

disp(‘a равно нулю’)

elseif a==1

disp(‘а равно единице’)

elseif a==2

disp(‘a равно двум’)

elseif a>=3

disp(‘a больше или равно трем’)

else

disp(‘a меньше трех, но не ноль, не единица и не двойка’)

end

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

>> ifdem(1)

a равно единице

>> ifdem(1.2)

a меньше трех, но не ноль, не единица и не двойка

>> ifdem(2)

a равно двум

>> ifdem(3)

a больше или равно трем

>> ifdem(-1)

a меньше трех, но не ноль, не единица и не двойка

В случае двух ветвей используется завершающее else, а elseif пропускается. Оператор if должен заканчиваться end.

Наши рекомендации