Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Português


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 — in-line definition of a (anonymous) function in Scilab language
  • exec — execução de arquivo script ("script" significa roteiro)
  • lib — loads a library of Scilab functions and variables, and sets its name
  • getd — retorna todas as funções definidas em um diretório
  • genlib — builds a library from a set of *.sci files defining functions in a given directory
  • 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
Report an issue
<< boolean types hypermatrices >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:42:11 CEST 2023