Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Ajuda Scilab >> Funções > functions

functions

procedimentos Scilab e objetos Scilab

Descrição

Funções são procedimentos Scilab ("macro", "função" e "procedure" possuem o mesmo significado).

Definição de Função

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.

Chamada de Função

  • 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'

Miscelânea

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.

Exemplos

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

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

//definição inline (ver deff)
deff('[x,y]=myfct(a,b)',['x=a+b';
                         'y=a-b'])
// definição em um arquivo ASCI (ver exec)
exec SCI/modules/elementary_functions/macros/asinh.sci;

Ver Também

  • function — abre definição de função
  • deff — definição on-line de função
  • exec — execução de arquivo script ("script" significa roteiro)
  • comp — compilação de função Scilab
  • lib — definição de biblioteca
  • getd — retorna todas as funções definidas em um diretório
  • genlib — constrói biblioteca a partir de funções em um diretório
  • exists — verifica existência de variáveis
  • varargin — variável do número de argumentos de saída em uma lista de argumentos de entrada
  • varargout — variável do número de argumentos de saída em uma lista de argumentos de saída
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Apr 02 17:37:06 CEST 2013