Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




Лабораторная работа №3

Использование подпрограмм в системе MATLAB

Цель работы: Знакомство с организацией функций в MATLAB, особенностями их работы.

Согласно одному из принципов структурного программирования, повторяющиеся фрагменты программы, а также логически целостные ее фрагменты можно оформить в виде подпрограмм (процедур и функций). Подпрограммы представляют собой относительно самостоятельные фрагменты программы, для оформления и вызова которых используют специальные синтаксические средства. Подпрограмма может быть многократно вызвана из разных частей программы. В MATLAB подпрограммы реализованы в виде функций.

В отличие от программ-сценариев (скриптов) функция может иметь входные и выходные параметры, при вызове функция создает новую рабочую область. Напомним, что рабочей областью называют область памяти, в которой размещены переменные. Так как функция создает новую рабочую область, внутри функции не будут видны переменные, объявленные вне ее кода. Поэтому входные и выходные параметры используются для связи функции с внешним кодом.

Функции, так же как и скрипты, оформляются в отдельном m-файле. Файл, содержащий функцию и файл скрипта, вызывающего эту функцию, должны содержаться в одном каталоге.

В общем виде программа функции имеет следующую структуру:

function [y1,...,yN] = имя_функции(x1,...,xM)

оператор_1

оператор_2

оператор_n

end

Функция начинается с ключевого слова function, за которым следуют в квадратных скобках через запятую имена выходных переменных. Далее следует знак «=» и имя функции. Имя функции подчиняется тем же правилам, что и имена переменных. Имя функции обязательно должно совпадать с именем файла, в котором она определена. После имени функции в круглых скобках через запятую следуют имена входных параметров. Следующие строки содержат тело функции (любые допустимые выражения MATLAB). Конец функции определяет ключевое слово end, однако оно не является обязательным, и его можно опустить. Если функция возвращает только один параметр, то его не обязательно заключать в квадратные скобки, например:

function s = triaArea(a, b)

% вычисление площади прямоугольного треугольника

% a, b - катеты треугольника

s = a * b / 2;

end

Если функция не имеет возвращаемых параметров, то после ключевого слова function следует имя функции, например:

function hellowWorld

% пример функции без входных и выходных параметров

disp('Hello world!');

end

Для вызова функции применяется следующий синтаксис:

[k1,..., kN] = имя_функции(z1,...,zM)

где k1,..., kN – переменны, куда будут записаны выходные значения функции, а z1,...,zM – аргументы функции.

В случае, если функция возвращает только один параметр, квадратные скобки можно опустить, например:

Area = triaArea(1,2)

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

 

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

· фактический параметр – аргумент, передаваемый в функцию при ее вызове;

· формальный параметр – аргумент, указываемый при определении функции.

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

Рассмотрим функцию, вычисляющую площадь и периметр параллелограмма. Функция содержится в файле ParArea.m:

function [s, p] = ParArea(a, b, alfa)

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

% двум сторонам и углу между ними

% a, b, alfa - входные параметры (две стороны и угол), скаляры

% s, p - площадь и периметр треугольника соответственно, скаляры

% a, b, alfa, s, p являются формальными параметрами, то есть

% объявленные в определении функции.

% С входными параметрами можно работать, как с обычными переменными.

% Выходным параметрам необходимо присвоить какое-либо значение

 

% Площадь параллелограмма

s = a*b*sin(alfa);

% Периметр параллелограмма

p = 2*(a+b);

end

 

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

>> a = 2;

>> b = 3;

>> [area, perimetr] = ParArea(a, b, pi/3)

area =

5.1962

perimetr =

 

При вызове функции ParArea параметры a, b, pi/3, area, perimeter являются фактическими. При вызове функции фактические параметры подставляются в формальные, поэтому их имена могут быть различными.

Для корректной работы функции при ее вызове имеет значение порядок следования переменных. Так, если в предыдущем примере поменять местами переменные perimeter и area, результат, который вернет функция, по смыслу будет неверным:

>> a = 2;

>> b = 3;

>> [perimetr, area] = ParArea(a, b, pi/3)

perimetr =

5.1962

area =

Рабочая область функции

 

В MATLAB рабочие области бывают двух типов:

· base workspace – базовая рабочая область;

· function workspace – рабочая область функции.

 

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

function [] = demoLocaLVar()

% пример локальной переменной

x = 2;

end

И введем следующие команды в командное окно MATLAB:

>> x = 0

x =

>> demoLocalVar()

>> x

x =

Как видно из примера, даже не смотря на то, что в функции была создана переменная x и ей было присвоено значение 2, это никак не повлияло на переменную x, созданную в базовой рабочей области.

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

 





Поделиться с друзьями:


Дата добавления: 2017-02-28; Мы поможем в написании ваших работ!; просмотров: 1607 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2257 - | 2143 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.