Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.1.0 - Français


functions

procédures Scilab et objets Scilab

Description

Les fonctions Scilab sont des procédures ("macros", "fonction" et "procédures" ont la même signification).

Définition de fonctions

Les fonctions sont tapées dans un éditeur de texte et chargées dans Scilab avec la commande exec ou via une bibliothèque (voir lib ou genlib). Mais elles peuvent être définies en ligne (voir deff ou function). Une fonction est définie en deux parties :

  • une ligne de déclaration formelle

    function [y1, ..., yn]=foo(x1, ...,xm)
    function [y1, ..., yn, varargout]=foo(x1, ...,xm,varargin)
  • une suite d'instructions Scilab.

La "ligne de définition" donne la syntaxe d'appel complète de la fonction. Les yi sont les variables de sortie, calculées à partir des variables d'entrée xi et des variables existantes dans le contexte appelant lorsque la fonction est exécutée. On peut utiliser éventuellement un sous-ensemble de ces variables d'entrée et de sortie.

Appel à une fonction

  • La syntaxe d'appel est habituellement [y1,...,yn]=foo(x1,...,xm). On peut utiliser éventuellement un sous-ensemble de ces variables d'entrée et de sortie. Dans ce cas, seules les premières variables à partir de la gauche sont utilisées. La fonction argnpeut être utilisée pour connaître le nombre effectif d'arguments d'appel.

  • Il est possible de définir des fonction ayant un nombre indeterminé d'arguments d'entrée et/ou de sortie. Ceci peut être fait avec les mots clé varargin et varargout. Voir les liens fournis pour plus de détails.

  • Il est aussi possible d'utiliser des "arguments nommés" pour spécifier les valeurs des arguments d'entrée : supposons que la fonction x2 est définie ainsi function y1=fun1(x1, x2, x3) alors on peut utiliser la syntaxe y = fun1(x1=33, x3=[1 2 3]), et dans x2 ne sera pas défini.

    Il est aussi possible d'appeler la fonction x2 avec une syntaxe comme y = fun1(x1=33, y='foo'). Dans ce cas la variable y sera définie dans le contexte local de la fonction.

    Noter qu'alors il n'est pas possible de passer plus d'arguments d'entrée que le nombre d'arguments formel declarés dans la définition de la syntaxe d'appel de la fonction.

    Il est possible de vérifier quelles sont les variables définies avec la fonction exists.

  • Quand une fonction n'a pas d'argument de sortie et est appelée avec des arguments d'entrée de type chaîne de caractère, la syntaxe d'appel peut être simplifiée :

    fun('a','toto','une chaîne')

    est alors équivalent à:

    fun a toto 'une chaîne'

Divers

Les fonctions sont des objets Scilab (numéro de type 13 ou 11). Elles peuvent être manipulées (passées en argument, sauvées, chargées, ...) comme toute autre variable.

Un ensemble de fonctions peut être assemblé dans une bibliothèque. Les fonctions dont le nom commence par le caractère % (exemple : %foo) sont utilisées pour la surcharge des opérateurs (voir overloading) ou des fonctions pour des nouveaux types de données.

Certaines règles ont été établies quant à la syntaxe des noms de fonctions dans Scilab (voir names).

Exemples

// définition en ligne
function [x, y]=myfct(a, b)
x=a+b
y=a-b
endfunction

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

// autre type de définition en ligne
deff('[x,y]=myfct(a,b)',['x=a+b';
                         'y=a-b'])
// définition dans un fichier texte (voir exec)
exec SCI/modules/elementary_functions/macros/asinh.sci;

Voir aussi

  • function — définition d'une fonction Scilab
  • deff — in-line definition of a (anonymous) function in Scilab language
  • exec — exécution d'un script (fichier de commandes)
  • lib — loads a library of Scilab functions and variables, and sets its name
  • getd — Charge toutes les fonctions contenues dans un répertoire.
  • genlib — builds a library from a set of *.sci files defining functions in a given directory
  • exists — teste l'existence d'une variable
  • varargin — variable number of arguments in an input argument list
  • varargout — arbitrarily long list of output arguments
  • names — Règles de nommage des variables et fonctions
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 Jun 17 17:52:25 CEST 2024