Команды if, else, and elseif
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Команда if оценивает логическое выражение и обрабатывает группу операторов, основыва-ясь на значении указанного выражения. В свое простейшей форме синтаксис команды имеет вид

 

if (логическое выражение)logical_expression

                                         операторы

                                     end

 

Если логическое выражение истинно, то есть равно 1, MATLAB выполняет все операторы между строками, содержащими команды if и end . После этого он продолжает выполнять ко-манды. находящиеся за строкой с end. Если логическое выражение ложно, то есть дает логи-ческий 0, MATLAB перескакивает через все выражения между строками с if  и end , и про-должает свою работу со строки, следующей за командой end. Например,

 

                                           if rem (a,2) == 0

                                               disp('a is even')

                                               b = a/2;

                                          end

Данный блок проверяет, является ли входной аргумент четным числом и, если да, то выводит в комндную строку соответствующее сообщение и делить число а пополам. В противном случае, данный блок не выполняется. Между строками с if  и end вы можете включить произ-вольное число операторов, содержащих, в свою очередь, любые команды и циклы. Если ло-гическое выражение приводит к нескалярной величине, то для выполнения блока все элемен-ты аргумента должны буть ненулевыми. Например, допустим X является матрицей. Тогда выражение

                                                  if X

                                                       операторы

                                                  end

 

эквивалентно следующему

 

                                                 if all(X(:))

                                                      операторы

                                                 end

 

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

Команда else не имеет логического условия. Операторы, связанные с данной командой вы-

полняются, если предшествующее условие команды if (и, возможно, elseif) является лож-

ным.

Команда elseif имеет логическое условие, которое оценивается, если предшествующее ус-

ловие команды if (и, возможно, elseif), является ложным. Если логическое условие данной

команды elseif является истинным, то выполняются соответствующие операторы, следую-

щие за данной командой. Вы можете иметь произвольное число команд elseif в пределах

одного блока с if.

                                  if n < 0    % Если n отрицательно, дать сообщение об ошибке

                                        disp('Input must be positive');

                                  elseif rem ( n, 2) == 0 % Если n положительно и четно, разделить на 2.

                                        A = n/2;             

                                  else

                                        A = ( n+1) /2; % Если n положительно и нечетно, прибавить 1 и                   

                                                                % разделить на два.

                                  end

Команда if и пустые массивы

Если логическое условие, связанное с if, приводит к нулевому массиву, то оно оценивается как ложное. Например, если А является пустым массивом, то следующий блок

 

                                                          if A

                                                              S1

                                                          else

                                                              S0

                                                          end

 

выполняет оператор S0.

Команда switch

Команда switch осуществляет обработку определенных операторов, исходя из значения пере-менной или выражения. Ее базовая форма имеет вид

 

                 switch выражение (скаляр или строка символов)

                 case значение 1

                         операторы % Выполняются если выражение ==  значение 1

                 case значение 2

                         операторы % Выполняются если выражение ==  значение 2

                  .

                  .

                  .

                  otherwise

                         операторы % Выполняются если выражение не соответствует не одному

                                                % значению, связанному с командами case

                  end

 

Данный блок состоит из:

Слова switch за которым следует выражение которое нужно оценить..

Любого числа блоков с командами case. Эти блоки состоят из слова case, за которым на той же строке следует возможное значение выражения за словом switch. Последующие строки содержат операторы, которые необходимо выполнить при указанном значении выражения в первой строке за словом switch. Эти строки могут быть любыми допустимыми выражени-ями, включая другие циклы switch. Выполнение группы операторов, связанных с данной ко-мандой case прекращается, когда MATLAB встречает следующую команду case или слово

otherwise. Отметим, что всегда выполняется только первый подходящий блок с case.

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

Заключительной команды end.

 

Блок с командой switch работает путем сравнения входного выражения, которе может быть численным скаляром или строкой символов, с каждым значением ключей case. В случае чис-ленных выражений выполняется какой-либо (первый) блок, если справедливо логическое ра-венство  значение == выражение. При выражениях в виде строки символов, блок выполня-ется, если истинно выражение strcmp(значение,выражение) (команда strcmp осуществляет логическое сравнение строк символов) .

Приведенный ниже код дает простой пример использования команды switch. Он проверяет переменную input_ num и сравнивает ее с заданными числами. Если значения input_ num равны –1, 0, или 1, команды case производят вывод значений на экран в виде текста. Если переменная input_ num не равна не одному из указанных значений, выполнение переходит к строке otherwise и программа выводит на экран текст ' other value'другое значение»).

 

                                                    switch input_num

                                                    case –1

                                                            disp('negative one');

                                                    case 0

                                                        disp('zero');

                                                    case 1

                                                            disp('positive one');

                                                    otherwise

                                                            disp('other value');

                                                   end

Внимание ! В отличие от соответствующих операторов языка C, оператор switch в MATLAB-е «доходит» только до первого оператора case, который удовлетворяет заданному входному выражению; остальные операторы case при этом не проверяются.

 

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

 

                                                    switch var

                                                    case 1

                                                           disp('1')

                                                    case {2,3,4}

                                                           disp('2 or 3 or 4')

                                                    case 5

                                                       disp('5')

                                                    otherwise

                                                           disp('something else')

                                                    end

 

Команда while

Циклы с командой while обрабатывают оператор или группу операторов, находящихся в теле цикла, до тех пор, пока истинно проверяемой логическое условие при данной команде. Иными словами, операторы внутри цикла могут выполнться любое неопределенное заранее число раз. Ее синтаксис в общем случае имеет вид

 

                                                           while expression

                                                                 statements

                                                           end

 

Если логическое выражение expression имеет матричный вид, то для продолжения выполне-ния цикла все его элементы должны быть истинными, то есть равны логической единице. Чтобы привести матричное условие к скалярному, следует воспользоваться функциями all и any. Например, следующий цикл находит первое целое число n, для которого факториал n! является 100-значным числом

 

                                                        n = 1;

                                                        while prod(1:n) < 1e100

                                                             n = n + 1;

                                                        end

 

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

 

Дата: 2019-05-28, просмотров: 229.