function abre definição de função
endfunction encerra definição de função

## Descrição

    function <lhs_arguments>=<function_name><rhs_arguments>
    <statements>
    endfunction

Onde

<function_name>

  é o nome da função

<rhs_arguments>

  é a lista de argumentos de entrada. Pode ser:

  - uma seqüência separada por vírgula de nomes de variáveis encerrada por parênteses, como `(x1,...,xm)`. O último nome de variável pode ser a palavra-chave `varargin` (ver varargin)

  - a seqüência `()` ou nada, se a função não possui argumentos de entrada.

<lhs_arguments>

  é a lista de argumentos de saída. Pode ser:

  - uma seqüência separada por vírgula de nomes de variáveis encerrada por colchetes, como `[y1,...,yn]`. O último nome de variável pode ser a palavra-chave `varargout` (ver varargout)

  - a seqüência `[]`, se a função não possui argumentos de saída. neste caso, a sintaxe também, pode ser: `function <function_name><rhs_arguments>`

<statements>

  conjunto de instruções Scilab (declarações). Esta sintaxe pode ser usada para definir funções (ver functions) inline ou em arquivo script (ver exec). Para compatibilidade com versões Scilab antigas, as funções podem ser definidas em um arquivo script contendo apenas definições de funções podem ser "carregadas" no Scilab através da função `exec`.

A seqüência `function <lhs_arguments>=<function_name><rhs_arguments>` não pode ser separada em várias linhas. Esta seqüência pode ser seguida por declarações na mesma linha, se uma vírgula ou ponto-e-vírgula for adicionado ao seu fim.

Note that `<function_name>` must respect some syntax rules (see names).

Definições de funções podem ser aninhadas.

## Exemplos

    //definição inline
    function [x,y]=myfct(a,b)
    x=a+b
    y=a-b
    endfunction

    [x,y]=myfct(3,2)

    //uma definição de função de uma linha
    function y=sq(x),y=x^2,endfunction

    sq(3)

    //definição de função aninhada
    function y=foo(x)
    a=sin(x)
    function y=sq(x), y=x^2,endfunction
    y=sq(a)+1
    endfunction

    foo(%pi/3)

    // definição em um arquivo script (ver exec)
    exec SCI/modules/elementary_functions/macros/asinh.sci;

## Ver Também

- functions
- exec
- names

## Histórico

6.0.0 `function` and `endfunction` are now protected: Assignments like `function=1` or `endfunction=2` are no longer possible.