procedimentos Scilab e objetos Scilab
Funções são procedimentos Scilab ("macro", "função" e "procedure" possuem o mesmo significado).
Geralmente, elas são definidas em arquivos com um edito e carregadas no Scilab através da função exec ou através de uma biblioteca (ver lib ou genlib). Mas também podem ser definidas on-line (ver deff ou function. Uma função é definida por dois componentes:
uma parte "definição de sintaxe" como segue:
function [y1, ..., yn]=foo(x1, ...,xm) function [y1, ..., yn, varargout]=foo(x1, ...,xm,varargin)
uma seqüência de instruções Scilab.
A linha de "definição de sintaxe" fornece a sintaxe de chamamento
"completa" para esta função. As variáveis yi
são
variáveis de saída calculadas em função das variáveis de entrada
xi
e variáveis existentes no Scilab quando a função é
executada.
A sintaxe de chamamento de função usual é
[y1,...,yn]=foo(x1,...,xm)
. Listas de argumentos de
entrada ou saída mais curtos que as da definição podem ser usadas. Em
tais casos, apenas as primeiras variáveis da esquerda para direita são
usadas ou definidas.
A função argn pode ser utilizada para se o número total real de argumentos de chamada.
É possível definir funções com número máximo indeterminado de argumentos de entrada ou saída. Isto pode ser feito utilizando-se as palavras-chave varargin e varargout keywords. Veja os links para detalhes.
Também é possível utilizar "argumentos nomeados" para
especificar argumentos de entrada: suponha que a função fun1
seja
definida como function y1=fun1(x1, x2, x3)
, então pode ser chamada com uma sintaxe
como y = fun1(x1=33, x3=[1 2 3])
. Dentro de
fun1
x2
será indefinida.
Também pode ser chamada com sintaxe como
y = fun1(x1=33, y='foo')
. Em tal caso, a variável
y
estará disponível no contexto da função
fun1
.
![]() | Note que o número máximo de argumentos deve
ser menor que ou igual ao número de argumentos de entrada fornais
utilizados na parte de sintaxe da função. |
É possível buscar por variáveis definidas através da função exists.
Quando uma função não possui argumento de lado esquerdo e é chamada apenas com argumentos strings, a sintaxe de chamamento pode ser simplificada:
fun('a','toto','a string')
is equivalent to:
fun a toto 'a string'
Funções Scilab são objetos (com números de tipo 13 ou 11). Elas podem ser manipuladas (construídas, salvas, carregadas, passadas como argumentos,...) como outros tipos de variáveis.
Coleções de funções podem ser reunidas em bibliotecas. Funções que
começam pelo sinal %
(ex: %foo
) são
geralmente utilizadas para operações de sobrecarga (ver overloading) ou são funções para novos tipos
de dados.