русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Функции с переменным числом аргументов


Дата добавления: 2015-07-23; просмотров: 854; Нарушение авторских прав


Функции подсчета числа аргументов

При создании функций со специальными свойствами весьма полезны две приведенные ниже функции:

· nargin — возвращает число входных параметров данной функции;

· nargout — возвращает число выходных параметров данной функции.

Пусть, к примеру, мы хотим создать функцию, вычисляющую сумму квадратов пяти аргументов xl, х2, хЗ, х4 и х5.

Обычный путь состоит в следующем — создаем функцию с именем sum2_5:

function f=sum2_5(x1,x2,x3,x4,x5) ;

f=x1^2+x2^2+x3^2+x4*2+x5^*2;

Теперь проверим ее в работе:

» sum2_5(l,2.3.4.5)

ans =

» sum2_5(l,2)

??? Input argument 'хЗ' is undefined.

Error in ==> C:\MATI_AB\bin\sum2_5.m

On line 2 ==> f=x1^2+x2^2+x3^2+x4^2+x5^2;

Итак, при наличии всех пяти аргументах функция работает корректно. Но если аргументов менее пяти, она выдает сообщение об ошибке. С помощью функции nargin можно создать функцию sum2_5m, которая работает корректно при любом числе заданных входных аргументов в пределах от 1 до 5:

f unction f=sum2m_5(x1 ,x2 , хЗ ,x4 , x5) ;

n=nargin;

if n==1 f=x1^2; end

if n==2 f=x1^2+x2^2;end

if n==3 f=x1^2+x2^2+x3^2; end

if n==4 f=x1^2+x2 ^ 2+x3^2+x4 ^ 2: end

if n==5 f=x1^2+x2^2+x3^2+x

В данной функции используется условный оператор i f...end, который будет детально описан далее. Но и без этого ясно, что благодаря применению функции nargin и условного оператора вычисления всякий раз идут по формуле с числом слагаемых, равным числу входных аргументов — от одного до пяти. Это видно из приведенных ниже примеров:

» sum2_5m(1)

ans =

» sum2_5m(1,2)

ans =

» sum2_5m( 1,2,3)

ans =

» sum2_5m(1,2,3,4)

ans =

» sum2_5m(1,2,3,4,5)

ans=

» sum2_5m(1,2,3,4,5,6)

??? Error using ==> sum2_5m

Too many input arguments.

Итак, при изменении числа входных параметров от 1 до 5 вычисления проходят корректно. При большем числе параметров выводится сообщение об ошибке. Этс уже действует встроенная в интерпретатор MATLAB система диагностики ошибок



Переменные varargin и varargout

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

function myplot(x,varargin)

plot(x,varargin{:}) function [s,varargout] = mysize(x)

nout = max(nargout.1)-1;

s = size(x);

for 1=1:nout, varargout(i) = {s(i)}; end

Эта переменная вбирает в себя все входные параметры и опции начиная со второго аргумента. При обращении к данной функции

myplot(sin(0:.1:1),'color'.[.5 .7 ,3],'linestyle',':')

varargin представляет массив ячеек размера 1x4, включающий а себя значения

'color', [.5 .7 .3], 'linestyle' u ':'.

Аналогично varagin переменная varargout объединяет любое число выходных параметров в массив ячеек. Эта переменная, кстати, как и varargin, должна быть последней в списке аргументов. Обычно эта переменная не создается при вызове функций. Приведенный ниже пример поясняет ее создание с помощью цикла:

function [s,varargout] = rnysize(x)

nout = max(nargout,l)-l:

s = size(x);

for i=1:nout.

varargout(i)= (s(i)}: end

Более подробно циклы будут рассмотрены в дальнейшем описании. В данном случае цикл использован для объединения всех параметров начиная со второго в значение переменной varargout.



<== предыдущая лекция | следующая лекция ==>
Обработка ошибок | Особенности выполнения m-файлов функций


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.12 сек.