Основы программирования
Для решения многих задач требуется писать программы, в которых действия повторяются циклически, в зависимости от некоторых условий выполняются различные части программы. Для этого используются операторы циклов for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, а цикл while - для действий, число повторений которых заранее не известно, но известно условие продолжения цикла. Цикл for. Простое использование цикла for осуществляется следующим образом:
for count=start:step:final команды MatLab end
Здесь count – переменная цикла, start – ее начальное значение, final – конечное значение, а step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака. Пусть требуется вывести семейство кривых для , которое задано функцией, зависящей от параметра . Используем цикл 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, которое содержит требуемое семейство кривых:
Рис. 7 Семейство кривых Цикл while Цикл while работает, пока выполняется условие цикла: while условие цикла команды MatLab end Пусть требуется найти сумму ряда для заданного x (разложение в ряд sin x): . Будем накапливать сумму, пока слагаемые больше (по модулю). В данном примере условием цикла является то, что текущее слагаемое больше . Для записи условия следует использовать знак больше (>). Текст файл-функции 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 может содержать не только знак >. Для задания условия выполнения цикла допустимы также другие операции отношения приведенные в таблице:
Отношения
Задание более сложных условий производится с применением логических операторов. Логические операторы и примеры их использования приведены в таблице: Логические операторы
Для задания порядка выполнения логических операций следует использовать круглые скобки, например записи (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.
Популярное: Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (396)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |