Оператор ветвления if-elseif-else
ОСНОВЫ ПРОГРАММИРОВАНИЯ MATLAB Краткие сведения о программировании в MATLAB[1] Основные арифметические операции в MATLAB: сложение, вычитание, умножение , деление и возведение в степень. Операции умножения, деления и возведения в степень рассчитаны на работу с матрицами, поэтому при поэлементных операциях они записываются как .*, ./ и .^ (т.е. перед знаком операции ставится точка). ОСНОВНЫЕ ОПЕРАТОРЫ 1.1. Оператор циклаfor Оператор предназначен для выполнения заданного числа повторяющихся действий. Самое простое использование оператора for осуществляется следующим образом: for count = start:step:final Здесь count - переменная цикла, start - ее начальное значение, final - конечное значение, а step - шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака Пример % программа построения семейства кривых Примечание. Редактор М-файлов автоматически предлагает расположить операторы внутри цикла с отступом от левого края. Используйте эту возможность для удобства работы с текстом программы. Циклы for могут быть вложены друг в друга, при этом переменные вложенных циклов должны быть разными. Цикл for оказывается полезным при выполнении повторяющихся похожих действий в том случае, когда их число заранее определено. Обойти это ограничение позволяет более гибкий цикл while. Оператор цикла while Рассмотрим пример на вычисление суммы, похожий на пример из предыдущего пункта. Требуется найти сумму ряда для заданного x(разложение в ряд ): Сумму можно накапливать до тех пор, пока слагаемые являются не слишком маленькими, скажем больше по модулю Циклом for здесь не обойтись, так как заранее неизвестно число слагаемых. Выход состоит в применении цикла while, который работает, пока выполняется условие цикла: while <условие цикла> В данном примере условие цикла предусматривает, что текущее слагаемое больше . Для записи этого условия используется знак больше (>). Текст файл-функции mysin, вычисляющей сумму ряда, приведен в следующем листинге. Листинг файл-функции mysin, вычисляющей синус разложением в ряд function S = mysin(x) S = 0; Обратите внимание, что у цикла while, в отличие от for, нет переменной цикла, поэтому пришлось до начала цикла k присвоить нуль, а внутри цикла увеличивать k на единицу. Таблица 1. Операции отношения
Задание более сложных условий производится с применением логических операторов. Например, условие состоит в одновременном выполнении двух неравенств и , и записывается при помощи логического оператора and and(x >= -1, x < 2) или эквивалентным образом с символом & (x >= -1) & (x < 2)
Логические операторы и примеры их использования приведены в табл. 2. Таблица 2. Логические операторы
При вычислении суммы бесконечного ряда имеет смысл ограничить число слагаемых. Если ряд расходится из-за того, что его члены не стремятся к нулю, то условие на малое значение текущего слагаемого может никогда не выполниться и программа зациклится. Выполните суммирование, добавив в условие цикла while файл-функции mysin ограничение на число слагаемых: while (abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10)&(k<=10000)) или в эквивалентной форме while and(abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10), k<=10000) Организация повторяющихся действий в виде циклов делает программу простой и понятной, однако часто требуется выполнить тот или иной блок команд в зависимости от некоторых условий, т.е. использовать ветвление алгоритма. Условный оператор if Условный оператор if позволяет создать разветвляющийся алгоритм выполнения команд, в котором при выполнении определенных условий работает соответствующий блок операторов или команд MatLab. Оператор if может применяться в простом виде для выполнения блока команд при удовлетворении некоторого условия или в конструкции if-elseif-else для написания разветвляющихся алгоритмов. if условие Если условие выполняется, то реализуются команды MatLab, размещенные между if и end, а если условие не выполняется, то происходит переход к командам, расположенным после end. При записи условия используются операции, приведенные в табл. 1. Файл-функция, проверяющая значение аргумента, приведена в следующем листинге. Команда warning служит для вывода предупреждения в командное окно. Листинг файл-функции Rfun, проверяющей значение аргумента function f = Rfun(x) % проверка аргумента Теперь вызов Rfun от аргумента, меньшего единицы, приведет к выводу в командное окно предупреждения: >> y = Rfun(0.2) Файл-функция Rfun только предупреждает о том, что ее значение комплексное, а все вычисления с ней продолжаются. Если же комплексный результат означает ошибку вычислений, то следует прекратить выполнение функции, используя команду error вместо warning. Оператор ветвления if-elseif-else В общем случае применение оператора ветвления if-elseif-else выглядит следующим образом: if условие 1 В зависимости от выполнения того или иного из N условий работает соответствующая ветвь программы, если не выполняется ни одно из N условий, то реализуются команды MatLab, размещенные после else. После выполнения любой из ветвей происходит выход из оператора. Ветвей может быть сколько угодно или только две. В случае двух ветвей используется завершающее else, а elseif пропускается. Оператор должен всегда заканчиваться end. function ifdem(a) if (a == 0) 1.5. Оператор ветвленияswitch Для осуществления множественного выбора или ветвления может применяться оператор switch.Он является альтернативой оператору if-elseif-else. В общем случае применение оператора ветвления switch выглядит следующим образом: switch switch_выражение В данном операторе сначала вычисляется значение switch_выражения (это может быть скалярное числовое значение либо строка символов). Затем это значение сравнивается со значениями: значение 1, значение 2, …, значение N, значение N+1, значение N+2, …, значение NM+1, значение NM+2,… (которые также могут быть числовыми либо строковыми). Если найдено совпадение, то выполняются команды MatLab, стоящие после соответствующего ключевого слова case. В противном случае выполняются команды MatLab, расположенные между ключевыми словами otherwise и end. Строк с ключевым словом case может быть сколько угодно, но строка с ключевым словом otherwise должна быть одна. После выполнения какой-либо из ветвей происходит выход из switch, при этом значения, заданные в других case не проверяются. Применение switch поясняет следующий пример: function demswitch(x) >> x = -4 1.6. Оператор прерывания циклаbreak При организации циклических вычислений следует заботиться о том, чтобы внутри цикла не возникло ошибок. Например, пусть задан массив x, состоящий из целых чисел, и требуется сформировать новый массив y по правилу y(i) = x(i+1)/x(i). Очевидно, что задача может быть решена при помощи цикла for. Но если один из элементов исходного массива равен нулю, то при делении получится inf, и последующие вычисления могут оказаться бесполезными. Предотвратить эту ситуацию можно выходом из цикла, если текущее значение x(i) равно нулю. Следующий фрагмент программы демонстрирует использование оператора break для прерывания цикла: for x = 1:20 Как только переменная z принимает значение 0, цикл прерывается. Оператор break позволяет досрочно прервать выполнение циклов for и while. Вне этих циклов оператор break не работает. Если оператор break применяется во вложенном цикле, то он осуществляет выход только из внутреннего цикла. ПОСТРОЕНИЕ ГРАФИКОВ Простой пример построения двух графиков в одном графическом окне: x = [0:0.1:7]; Пример построения семейства кривых в одном окне
%программа для построения семейства кривых
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (3006)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |