Index du Forum


 
 Index du ForumFAQRechercherS’enregistrerConnexion

:: Programmation avec scilab (6) ::

 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> ~~ semestre 1~~ -> l'algorithmique et langage C
Sujet précédent :: Sujet suivant  
Auteur Message
Admin
Administrateur

Hors ligne

Inscrit le: 28 Oct 2011
Messages: 94
Point(s): 346
Moyenne de points: 3,68
Groupe: GROUPE 1

MessagePosté le: Jeu 17 Nov - 11:50 (2011)    Sujet du message: Programmation avec scilab (6) Répondre en citant

  1. Scripts et fonctions
Un script est un fichier contenant un ensemble de commandes SCILAB (par convention, l'extension d'un tel fichier est .sce)

Pour exécuter un fichier script :

on peut l'ouvrir dans l'éditeur de SCILAB puis le charger (Ctrl-l),

ou bien le charger directement dans la fenêtre de commandes SCILAB avec la routine exec.
 
 

_________________
A friend In need Is a friend Indeed


ما الفشل إلا هزيمة مؤقتة تخلق لك فرص النجاح


Revenir en haut
Skype
Publicité






MessagePosté le: Jeu 17 Nov - 11:50 (2011)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Admin
Administrateur

Hors ligne

Inscrit le: 28 Oct 2011
Messages: 94
Point(s): 346
Moyenne de points: 3,68
Groupe: GROUPE 1

MessagePosté le: Jeu 17 Nov - 11:55 (2011)    Sujet du message: Programmation avec scilab (6) Répondre en citant

2.Définition d'une fonction  

  

  
Il est possible d'écrire des scripts avec des paramètres d'entrées et/ou des paramètres de sorties afin de créer de nouvelles routines.

Un tel script s'écrit en indiquant en début de script un en-tête de la forme

function =nom (liste_entrees)

avec :

nom : le nom de la routine,

liste_entrees : la suite des paramètres d'entrée (séparés par des virgules). S'il n'y a pas de paramètres d'entrée, on peut ne pas mettre pas les parenthèses.

liste_sorties : la suite des paramètres des sorties (séparés par des virgules). S'il n'y a pas de paramètres de sortie ou un seul paramètre de sortie, on peut ne pas mettre pas les crochets.





Par convention, les fichiers contenant des fonctions ont l'extension .sci

Exemple : script resol_trinome.sci avec deux paramètres d'entrée et deux en sortie :

// resol_trinome : résolution de l'équation x*x+b*x+c = 0
// syntaxe [r1,r2] = resol_trinome(b,c)
// Entrées : b,c = coefficients du binome
// Sorties : r1,r2 = les deux racines
function [r1,r2] = resol_trinome(b,c)

delta = b*b-4*c;
r1 = (-b-sqrt(delta))/2;
r2 = (-b+sqrt(delta))/2;

endfunction

Créez ce fichier avec l'éditeur de SCILAB..

La fonction doit d'abord être chargée dans SCILAB avant d'être utilisée :

- à partir de la fenêtre d'édition (Ctrl-L),

- ou dans la fenêtre de commandes à l'aide de l'instruction
getf("resol_trinome.sci");

Une fois chargée, la fonction peut être utilisée comme une fonction prédéfinie de SCILAB

Exemple :

[r1,r2] = resol_trinome(-6,5) // deux racines distinctes
[r1,r2] = resol_trinome(-6,9) // racine double
[r1,r2] = resol_trinome(0,4) // racines complexes

Note : IMPORTANT : si on modifie le fichier correspondant à une fonction, le fichier doit être rechargé dans SCILAB pour les modifications soient prises en compte.

Il suffit de se souvenir de taper les séquences de touches Ctrl-S puis Ctrl-L après une modification dans la fenêtre d'édition.

Une fonction peut aussi être définie directement dans SCILAB à l'aide de la commande deff.

Exemple : définition de la fonction
avec

  
deff('[z] = f(x,y)', ...
['r2 = x.^2+y.^2;'; ...
'z = ones(r2)./(1+r2);']);
Le premier paramètre est une chaine de caractères représentant l'en-tête de la fonction, et le deuxième paramètre est un vecteur-colonne dont chaque élément est une chaine de caractères représentant une instruction.

La fonction ci-dessus aurait pu être définie à l'aide d'un fichier ou bien en tapant directement la définition de la fonction dans la fenêtre de commandes SCILAB :

function [z] = f(x,y)
r2 = x.^2+y.^2;
z = ones(r2)./(1+r2);
endfunction

Note : l'utilisation des opérateurs "élément par élément" (avec le point) permet d'utiliser ses fonctions avec des matrices de valeurs.

Exemple : évaluation de la fonction sur une grille de points.

[x,y] = meshgrid(0:3,-2:2)
z = f(x,y)

  

_________________
A friend In need Is a friend Indeed


ما الفشل إلا هزيمة مؤقتة تخلق لك فرص النجاح


Revenir en haut
Skype
Admin
Administrateur

Hors ligne

Inscrit le: 28 Oct 2011
Messages: 94
Point(s): 346
Moyenne de points: 3,68
Groupe: GROUPE 1

MessagePosté le: Jeu 17 Nov - 11:56 (2011)    Sujet du message: Programmation avec scilab (6) Répondre en citant

3.Utilisation de plusieurs fonctions 

 
Un fichier .sci peut contenir la définition de plusieurs fonctions.

Exemple : créez le fichier suivant en le nommant exemple_2_fonctions.sci

function f1()
printf("Fonction f1\n");
endfunction

function f2()
printf("Fonction f2\n");
endfunction

puis chargez-le dans SCILAB, et tapez les instructions suivantes :

f1()
f2()

Note : : comme en C, l'appel à une fonction sans paramètre doit se faire avec les parenthèses.

Si une première fonction nécessite l'usage d'une deuxième fonction définie dans un autre fichier, alors cette deuxième fonction doit être chargée par la première à l'aide de la routine getf.

Exemple : créer les deux fichiers suivants :

- script fonction1.sci
function R1()
getf("fonction2.sci");
printf("Fonction R1\n");
R2();
end

- script fonction2.sci
function R2()
printf("Fonction R2\n");
endfunction

puis charger le script fonction1.sci et taper l'instruction
R1()

Par défaut, chaque variable est locale à la fonction où est elle définie.

Si on souhaite utiliser une même variable dans plusieurs routines, il faut la déclarer en début de script/fonction à l'aide du mot-clé global .

Exemple :

function main()

global a

a = 2;
printf("main : a = %d\n", a);
R2();
R1();
R2();
printf("main : a = %d\n", a);

endfunction

function R1()

global a
printf("R1 : a = %d\n", a);

endfunction

function R2()

global a
a=a+1;
printf("R2 : a = %d\n", a);

endfunction

Note : le nom d'une fonction est celui défini dans l'en-tête (et non pas celui du nom du fichier dans lequel est éventuellement définie la fonction).

Note : une fonction définie dans SCILAB devient une variable qui peut être supprimée à l'aide de la commande clear.

Note : quand on utilise différentes fonctions dont le code source n'est pas trop long, il est préférable de les définir dans un même fichier, afin de les chargeant ensemble (raccourci Ctrl-L de l'éditeur SCILAB).
 

 

_________________
A friend In need Is a friend Indeed


ما الفشل إلا هزيمة مؤقتة تخلق لك فرص النجاح


Revenir en haut
Skype
Admin
Administrateur

Hors ligne

Inscrit le: 28 Oct 2011
Messages: 94
Point(s): 346
Moyenne de points: 3,68
Groupe: GROUPE 1

MessagePosté le: Jeu 17 Nov - 11:57 (2011)    Sujet du message: Programmation avec scilab (6) Répondre en citant

4.Récursivité 

 

 
Il est possible d'écrire des fonctions récursives.

Exemple : la fonction "factorielle"

// définition de la fonction
function p=fact(n)
if n<1 then
p=1;
else
p=n*fact(n-1);
end
endfunction

// appel
fact(5)
fact(0)

 

_________________
A friend In need Is a friend Indeed


ما الفشل إلا هزيمة مؤقتة تخلق لك فرص النجاح


Revenir en haut
Skype
Admin
Administrateur

Hors ligne

Inscrit le: 28 Oct 2011
Messages: 94
Point(s): 346
Moyenne de points: 3,68
Groupe: GROUPE 1

MessagePosté le: Jeu 17 Nov - 11:59 (2011)    Sujet du message: Programmation avec scilab (6) Répondre en citant

5.Paramètre de type fonction 

 
Une fonction définie par l'utilisateur peut être passée en entrée comme paramètre d'une autre routine.

Exemple :

\\ définition de la fonction y=x*x
function y=f(x)
y = x.*x;
endfunction

\\ définition de la fonction y=cos(x)
function y=g(x)
y = cos(x);
endfunction

\\ définition d'une routine évaluant une fonction f en des valeurs x
function y=eval_f(f,x)
y = f(x)
endfunction

\\ utilisation de eval_f
x = 0:5
y = eval_f(f,x)
y = eval_f(cos,x)
y = eval_f(g,

 

_________________
A friend In need Is a friend Indeed


ما الفشل إلا هزيمة مؤقتة تخلق لك فرص النجاح


Revenir en haut
Skype
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 19:31 (2017)    Sujet du message: Programmation avec scilab (6)

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> ~~ semestre 1~~ -> l'algorithmique et langage C Toutes les heures sont au format GMT
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Texno x0.3 © theme by Larme D'Ange 2006
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com