функции Scilab-процедуры и Scilab-объекты Описание Функции являются процедурами Scilab ("макрос", "функция" и "процедура" имеют одно и то же значение). Определение функции Обычно они определяются в файлах с помощью редактора и загружаются в Scilab, используя функцию exec или через библиотеку (см. lib либо genlib). Однако, они также могут быть определены во время исполнения программы (см. deff либо function). Функция определяется двумя составляющими: часть "синтаксис определения", как например: ряд Scilab-инструкций. Строка "синтаксиса определения" указывает "полный" синтаксис вызова этой функции. yi - выходные переменные, вычисленные в зависимости от входных переменных xi и переменные, существующие в Scilab'е в момент исполнения функции. Вызов функции Обычно синтаксис вызова функции следующий: [y1,...,yn]=foo(x1,...,xm). Можно использовать более короткий список входных или выходных аргументов, чем определённый. В таких случаях используются или устанавливаются только самые первые переменные, начиная слева. Функция argn может быть использована для получения фактического количества аргументов при вызове. Можно определять функцию с неопределённым максимальным количеством входных или выходных аргументов. Это можно сделать, используя ключевые слова varargin и varargout. Также можно использовать "именованный аргумент" для определения входных аргументов: предположим, что функция fun1, определённая как function y1 = fun1(x1, x2, x3), тогда её можно вызвать следующим синтаксисом: y = fun1(x1=33, x3=[1 2 3]); внутри fun1 переменная x2 не будет определена. Её можно также вызвать следующим синтаксисом: y = fun1(x1=33, y='foo'). В таком случае переменная y будет доступна в контексте функции fun1. Обратите внимание, что максимальное количество аргументов должно быть меньше или равно числу формальных входных аргументов, используемых в части синтаксиса функции. Проверить определены ли переменные можно с помощью функции exists. Когда у функции нет аргументов слева и она вызывается только с аргументами символьных строк, синтаксис вызова может быть упрощён: что эквивалентно: Прочие вопросы Функции являются Scilab-объектами (с номерами типа 13 или 11). И ими можно управлять (создавать, сохранять, загружать, передавать в качестве аргументов, и т. д.) как и другими типами переменных. Коллекции функций можно собирать в библиотеки. Функции, которые начинаются со знака % (например, %foo) часто используются чтобы перегрузить (см. перегрузку) операции или функции для нового типа данных. Заметьте, что имя функции должно удовлетворять некоторым правилам синтаксиса (см. имена). Примеры Смотрите также function deff exec comp lib getd genlib exists varargin varargout имена