Brian_-_Matlab_R2007_s_nulya_33 (771739), страница 23
Текст из файла (страница 23)
Как и в случае с циклом Еок, использование отступов в представленных выше командах необязательно; оно помогает при чтении кода и производится в программе МАТЮКАВ автоматически с помощью встроенного модуля ЕО11ог/ОеЬцддвг (Редактор/Отладчик). и Большинство примеров в этой главе будут выводить специфические результаты, если при вводе применять типы данных, отличающиеся от запланированных. Например, М-файл аЬвча1зп создан только для скалярных вещественных значений х, но не для комплексных чисел или векторов.
Если, например, х является комплексным, тогда выражение х > О проверяет только, не является ли отрицательной вещественная часть х, а вывод значения у будет комплексным в любом случае. Программа МАТ1.АВ имеет встроенную функцию аЬв, которая корректно работает с векторами и комплексными числами. Как правило, за командой аЕ в той же самой строке должно следовать условное выражение, которое программа МАТ(.АВ будет проверять на истинность или ложность; смотрите ниже раздел «Логические выражения», в котором рассматриваются доступные выражения и их выполнение.
После нескольких промежуточных команд должно следовать (как с командой Еок) выражение ело. В середине может быть одно или более выражений е1яеЕЕ (см. ниже) и/или выражений е1ве (см. выше). Если результат проверки условного выражения положителен, программа МАТ(АВ выполняет все команды между выражением аЕ и первым выражением а1веЕЕ, е1ве или ела, затем пропускает все другие команды до выражения ало. Если результат проверки условного выражения ложный, программа МАТ(.АВ пропускает все до первого выражения е1веЕЕ, е1ве или ежа и продолжает с этого места программы, производя новую проверку в случае присутствия выражения а1веЕЕ.
В представленном ниже примере мы перепишем файл аЬвча1.т таким образом, чтобы не требовалось никаких команд, если результат проверки ложный, устраняя необходимость в выражении е1ве. Еицскйоц у = аЬязга1(х) у а хз ЕЕу< О у~ уа МАРВ 11В Выражение е1ве1б полезно, если существует более чем две альтернативы, и их можно различить серией тестов на истинность и ложность. В сущности, это эквивалентно выражению е1ее, за которым немедленно следует вложенное выражение 1б. В представленном ниже примере мы используем выражение е1ве1б в М-файле Ывппш.т, который выполняет следующую функцию 1 х>0 ып(х) = 0 х=О -1 х<0 (Программа МАТЮКАВ имеет встроенную функцию ейдх, которая обеспечивает выполнение этой функции для основных элементов ввода, которые мы здесь рассматриваем.) ЙипоИ.оп у вйазпеэ(х) 1йх>О у*1з е1веЫ х =~ О у Оз е1ее у" -1з Здесь, если значение х положительно, тогда значение у задается равным 1, и все команды от выражения е1веХЕ до выражения ежа пропускаются.
(В частности, не выполняется проверка в выражении е1ве1б.) Если значение х не положительно, тогда программа МАТ(.АВ переходит к выражению е1ве1й и проверяет, равно ли значение х нулю. Если это так, значение у задается равным нулю, в противном случае значение у задается равным -1. Обратите внимание, что программа МАТ(.АВ для проверки равенства требует введения двойного знака равенства ( ); одинарный знак равенства зарезервирован для присвоения значений переменным.
зГ Подобно команде Кок и другим программным командам, с которыми вы столкнетесь, команда 1б и ассоциированные с ней команды можно использовать в окне Сопвпапб 1эвпбоэт (Командное окно). Это может быть полезным для приобретения практических навыков по работе с этими командами, но в основном они предназначены для использования в М-файлах. В нашем обсуждении темы ветвления мы главным образом рассматриваем М-файлы- функции; в М-файлах-сценариях ветвление используется не так часто.
Глава 6. Программирование Логические выражения В представленном выше примере мы использовали операторы отношения, такие как >~, > и, для формирования логического выражения, и давали программе МАТОВ инструкции выбора между различными командами, в зависимости от того, истинно или ложно логическое выражение.
Чтобы познакомиться со всеми доступными операторами отношения, введите команду Ье1р ке1ор. Некоторые нз этих операторов, такие как а (АЯ))) (логическое И) и ) (ОК) (логическое ИЛИ) можно использовать для формирования логических выражений, более сложных, чем для простого сравнения двух чисел. Например, выражение (х > О) (у > О) будет истинным, если х или у (нли оба значения) положительны, и ложным, если ни один из них положительным не является. В этом частном примере круглые скобки не являются необходимыми, но обычно составные логические выражения, подобные этим, легче читать, и они меньше подвержены ошибкам, если скобки используются, чтобы избежать неясности. До сих пор в нашем обсуждении темы ветвления мы рассматривали только те выражения, которые можно выполнить как истинные или ложные.
Для многих целей этих выражений вполне достаточно, однако вы также можете дополнить ай или е1аеак любым выражением, которое программа МАТ) АВ может выполнить в числовой форме. Фактически программа МАТ1 АВ почти не делает различий между логическими выражениями и обычными числовыми выражениями. Давайте посмотрим, что произойдет, если вы введете логическое выражение отдельно в окне Сопмпалд )лллбое (Командное окно): »2>3 При вычислении логического выражения программа МАТ(.АВ присваивает результату значение 0 (Ложь) или 1 (Истина).
Таким образом, если вы введете 2 < 3, ответом будет 1. С операторами отношения программа МАТ(.АВ работает так же, как и с арифметическими операторами, так как вывод их результатов является числовым. (/ Программа МАТ(АВ делает различие между выводом операторов отношения и обычных чисел. Например, если вы введете эгЬов после приведенной выше команды, вы увидите, что апа является логическим массивом.
Ниже мы приведем пример, как эта возможность может использоваться в краткой форме. Для получения более полной информации введите команду )зе1р 1одвоа1. Вот др)той пример: » 2 ( 3 апа = МАТ(АВ 120 Оператор «логическое ИЛИ», выраженный знаком (, выдает ответ О, если оба операнда нулевые, и выдает 1, если это не так. Таким образом, в то время как вывод операторов отношения всегда есть 0 или 1, любое не равное нулю значение, вводимое с операторами й (логическое И), ( (логическое ИЛИ) и - (логическое отрицание), рассматривается программой МАТ(АВ, как истина, и только 0 рассматривается как ложь.
Если с операторами отношения используются векторы или матрицы, а не скаляры, тогда, подобно арифметическим операциям + и .*, логическая операция осуществляется поэлементно, и вывод представляет собой массив нулей и единиц. Ниже представлено несколько примеров: » [2 3) < [3 2) 1 О » х = -2:2; х = О апя 1 1 О О 1 Во втором случае х поэлементно сравнивается со скаляром О. Для получения бо- лее полной информации введите команду Ье1р ке1ор. Тот факт, что параметром вывода для операторов отношения является логический массив, вы можете использовать для выбора элементов массива, отвечающих определенным условиям. Например, выражение х(х >=0) дает в качестве результата вектор, состоящий только из неотрицательных элементов х (если точнее, имеющих вещественную часть, не равную нулю). Таким образом, если х -2: 2, как указано выше, то результат будет такой: » х(х >=0) 0 1 2 Если логический массив используется для выбора элементов из другого массива, то два массива должны иметь одинаковый размер.
Элементы, соответствующие единице в логическом массиве, выбираются, а элементы, соответствующие нулю— нет. В приведенном выше примере результат является таким же, как если бы мы ввели х(3: 5), но в этом случае 3: 5 представляет собой простой числовой массив, задающий числовые индексы элементов для выбора. Далее рассмотрим, как команды Ы и е1ееИ решают, истинно или ложно выражение. Для выражения, которое вычисляет скалярное вещественное число, условие такое же, как и рассмотренное выше — число, не равное нулю, обрабатывается как истина, а число, равное нулю — как ложь. Причем для комплексных чисел рассматривается только вещественная часть, таким образом, в выражениях 15 и е1ее15 любое число с вещественной частью, не равной нулю, обрабатывается Глава 6.