Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_5.3(учебник).DOC
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.18 Mб
Скачать

4.4. Функции nargin и nargout

     Функции nargin и nargout позволяют определить количество входных и выходных аргументов вызываемой функции. Эту информацию в дальнейшем можно использовать в операторах условия для изменения хода вычислений. В примере 4.1 приведена m-функция ctrb, в которой имеется оператор error. Этот оператор сообщает об ошибке, если значение переменной nargin не равно 2. Рассмотрим еще один пример использования функции nargin.

     Пример 4.2. Использование функции nargin.

function y = tst(a,b)

if(nargin = = 1)

y = a.^5 +1;

elseif (nargin = = 2)

y = a^2+ b^2;

end

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

4.5. Локальные и глобальные переменные

     Обычно каждая m-функция, задаваемая в виде m-файла, имеет собственные локальные переменные, которые отличны от переменных других функций и переменных рабочей области. Однако если несколько функций и рабочая область объявляют некоторую переменную глобальной, то все они используют единственную копию этой переменной. Любое присваивание этой переменной распространяется на все функции, где она объявлена глобальной. Пример использования команды global приведен в разделе 4.8 (см. пример 4.8)

     Для работы с глобальными переменными необходимо:

  • объявить переменную как глобальную в каждой m-функции, которой необходима эта переменная. Для того чтобы переменная рабочей области была глобальной, необходимо объявить ее как глобальную в m-сценарии;

  • в каждой функции использовать команду global перед первым появлением переменной; рекомендуется указывать команду global в начале m-файла.

     Передавать значения переменных можно также осущестлять за счет введения дополнительных входных переменных в m-функции (см. пример 4.7).

4.6. Управление последовательностью выполнения

операторов

     Существуют четыре основных оператора управления последовательностью исполнения инструкций:

  • оператор условия if, в сочетании с оператором else и elseif выполняет группу инструкций в соответствии с некоторыми логическими условиями;

  • оператор переключения switch, в сочетании с операторами case и otherwise выполняет различные группы инструкций в зависимости от значения некоторого логического условия;

  • оператор условия while выполняет группу инструкций неопределенное число раз, в соответствии с некоторым логическим условием завершения;

  • оператор цикла for выполняет группу инструкций фиксированное число раз. Все операторы управления включают оператор end, чтобы указать конец блока, в котором действует этот оператор управления.

     Рассмотрим подробней эти операторы.

     1) Оператор условия if .... end вычисляет некоторое логическое выражение и выполняет соответствующую группу инструкций в зависимости от значения этого выражения. Если логическое выражение истинно, то Matlab выполнит все инструкции между if и end, а затем продолжит выполнение программы в строке после end. Если условие ложно, то Matlab пропускает все утверждения между if и end и продолжит выполнение в строке после end. Операторы if ... else ... end и if ... elseif ... end создают дополнительные ветвления внутри тела оператора if. Оператор elseif может многократно использоваться внутри оператора условия if. Если в операторе if условное выражение является пустым массивом, то такое условие ложно. Пример использования оператора if….end приведен в разделе 4.8 (пример 4.5).

     2) Оператор switch ... case 1 ... case k ... otherwise ... end выполняет ветвления, в зависмости от значений некоторой переменной или выражения. Ключевые слова case и otherwise разделяют эти группы. Оператор switch работает, сравнивая значение вычисленного выражения со значениями групп case. Для числовых выражений оператор case выполняется, если  <значение>== <выражение>. Для строковых выражений, оператор case истинен, если strcmp(значение, выражение) истинно.

     Пример 4.3. Применение оператора switch. В качестве примера рассмотрим следующий m-сценарий:

X=input('X=');

Y=input('Y=');

switch(X==Y)

case 0, 'не равны'

case 1, 'равны'

otherwise

error ('ошибка')

end

     3) Оператор цикла for .... end выполняет инструкцию или группу инструкций предопределенное число раз. По умолчанию приращение равно 1. Можно задавать любое приращение, в том числе отрицательное. Для положительных индексов выполнение завершается, когда значение индекса превышает <конечное значение>; для отрицательных приращений выполнение завершается, когда индекс становится меньше чем <конечное значение>. Иллюстрация использования оператора for….end приведена в примере 4.5.

     4) Оператор цикла с неопределенным числом операций while ... end многократно выполняет инструкцию или группу инструкций, пока управляющее выражение истинно. Если выражение использует массив, то все его элементы должны быть истинны для продолжения выполнения. Чтобы привести матрицу к скалярному значению, следует использовать функции any и all. Иллюстрация использования оператора while….end приведена в примере 4.6.

     Кроме того, для управления последовательностью выполнения операторов используется оператор break. Этот оператор позволяет прерывать выполнение циклов for и while. При использовании оператора break во вложенных циклах выход осуществляется только из самого внутреннего цикла.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]