Файлы функций
В процессе работы с системой ML мы уже сталкивались с встроенными функциями, например, sin (х). У таких функций есть только один входной аргумент (для приведенной функции - это х). В математике это аргумент, а в программировании говорят – параметр.
Мы записывали последовательность команд в скрипт-файл (такой файл еще называют иначе - файл-программа или сценарий). У скрипт-файла нет ни заголовка, ни входных, ни выходных параметров. Все объекты, используемые внутри script-файла, считаются глобальными, т.е. они доступны и их можно использовать до и после выполнения скрипт-файла. Все данные, которые находятся в рабочем пространстве, можно использовать, а после выполнения скрипта использовать данные, созданные с его помощью. Вызвать такой файл можно указав просто его имя в командной строке.
Однако если учесть, что зачастую приходится выполнять одинаковые действия с разными данными, то для решения такого рода задачи рассмотренный ранее подход не годится. Надо уметь описывать свои собственные функции, которые производят необходимые действия с входными параметрами, которые могут быть разными при разных вызовах функции, и возвращают результат в виде выходных параметров.
Такая необходимость возникает прежде всего при решении задач, использующих численные методы, при программировании собственных приложений и реализуется в виде файла-функций. Файл-функция, так же как и файл-программа, создаются в редакторе ML и имеют расширение m. Можно создавать файл-функцию с любым количеством входных и выходных параметров.
Файл-функция имеет заголовок, который состоит из ключевого слова function, в квадратных скобках указываются один или несколько выходных параметров (вектор выходных значений), знака равенства, имени функции и в круглых скобках списка входных параметров.
Синтаксическая конструкция заголовка файла-функции:
function [рез1, рез.2…рез.N] = <имя функции> (пар.1, пар.2,…пар.N)
После заголовка записываются операторы, реализующие алгоритм поставленной задачи. Они составляют тело функции. Заканчивается файл-функция ключевым словом – end (не обязательным)
Переменным из списка выходных параметров в процессе работы функции присваиваются значения, вычисленные в функции. Выходных параметров может быть столько, сколько необходимо, их список перечисляется через запятую в квадратных скобках:
В общем случае при вызове (активизации) файла-функции нужно указать в квадратных скобках список фактических выходных параметров, имя функции и в круглых скобках список фактических входных параметров.
Вызвать (активизировать) файл-функцию можно так:
[y1, y2,…,yn]=<имя функции>(<список вх. факт. параметров>)
Вызов можно осуществить либо в командном режиме, либо из других файлов-программ или файлов-функций. Имя функции используется только для вызова и не несёт результата.
Вызов файла-функции c одним выходным параметром будет иметь вид:
<имя функции>(<список входных фактических параметров>)
В таком случае вызов может использоваться в операторах присваивания или в выражении:
<имя переменной>=<имя функции>(<список входных фактических параметров>)
Если выходной параметр один, то [] не записываются. Функция может не возвращать никакого результата. В этом случае заголовок имеет вид:
function <имя функции> (пар.1, пар.2,…пар.n)
При написании файла-функции следует помнить, что при сохранении m-файла, его имя должно совпадать с именем функции.
Все переменные, используемые внутри файла-функции, а также входные и выходные параметры являются локальными. Они доступны только внутри функции.
