les fonctions en Scilab
1. définition d’une fonction
Pour définir une fonction (ou procédures) en Scilab, la méthode la plus courante est de l’écrire dans un fichier, dans lequelon pourra d’ailleurs mettre plusieurs fonctions (en regroupant par exemple les fonctions qui correspondent à un même thèmeou une même application). Chaque fonction doit commencer par l’instruction :
function [y1,y2,...,yn]=nomfonction(x1,x2,...,xp)
<instructions>
endfunction
où les xi sont les arguments d’entrée (ou paramètres), les yj étant les arguments de sortie (ou résultats). Une fonction peutavoir 0, 1 ou plusieurs paramètres (placés entre parenthèses) ainsi que 0, 1 ou plusieurs résultats (placés entre crochets).Dans l’exemple suivant, nous définissons la fonction myfunction, qui prend l’argument d’entrée x, le multiplie par 2, et renvoie la valeur dans l’argument de sortie y.
function y = myfunction ( x )
z=2*x
endfunction
l'instruction function y = myfunction (x) est l’en-tête de la fonction tandis que le corps de la fonction est constitué de l’instruction y = 2 * x. Le corps d’une fonction peut contenir une, deux ou plusieurs instructions.
Supposons que la fonction simplef est définie avec 2 arguments d’entrée et 2 arguments de sortie, comme suit.
function [y1 , y2] = simplef ( x1, x2 )
y1 = 2 * x1
y2 = 3 * x2
endfunction
En fait, le nombre d’arguments de sortie d’une telle fonction peut être 0, 1 ou 2. Lorsqu’il n’y a pas d’argument de sortie,la valeur du premier argument de sortie est stockée dans la variable ans. Nous pouvons également définir la variable y1 uniquement. Enfin, nous pouvons utiliser tous les arguments de sortie, comme prévu. l’exemple suivant présente toutes ces séquences d’appel.
--> simplef ( 1 , 2 )
ans =
2.
--> y1 = simplef ( 1 , 2 )
y1 =
2.
--> [y1,y2] = simplef ( 1 , 2 )
y2 =
6.
y1 =
2.
2. Instruction return
Dans le corps d’une fonction, return permet de revenir immédiatement, c’est-à-dire qu’elle quitte immédiatement lafonction en cours. Cette déclaration peut être utilisée dans les cas où le reste de l’algorithme n’est pas nécessaire.
La fonction suivante calcule la somme des entiers de istart à iend. Dans des situations normales, il utilise la fonction sum poureffectuer son travail. Mais si la variable istart est négative ou si la condition istart <= iend n’est pas satisfaite, la variablede sortie y est mise à 0 et la fonction retourne immédiatement.
function y = mysum ( istart , iend )
if ( istart < 0 ) then
y=0
return
end
if ( iend < istart ) then
y=0
return
end
y = sum ( istart : iend )
endfunction
l’exemple suivant permet de vérifier que l’instruction return est correctement utilisée par la fonction mysum.
--> mysum ( 1 , 5 )
ans =
15.
--> mysum ( -1 , 5 )
ans =
0.
--> mysum ( 2 , 1 )
ans =
0.