Index du Forum


 
 Index du ForumFAQRechercherS’enregistrerConnexion

:: Progrmmation avec scilab (6):Test des arguments d'une fonction ::

 
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 - 12:01 (2011)    Sujet du message: Progrmmation avec scilab (6):Test des arguments d'une fonction Répondre en citant

 



Dans certains cas, il est nécessaire de tester les arguments d'une fonction, leur nombre, les types des arguments en entrée, éventuellement dimensions et valeurs; on peut aussi initialiser des arguments par défaut s'ils ne sont pas fournis.

Exemple : la fonction resol_trinome définie ci-dessus nécessite deux paramètres en entrée de type scalaire numérique, et deux paramètres en sortie.

[r1,r2] = resol_trinome(1) // erreur car le deuxième parametre est manquant
r1 = resol_trinome(1,-2) // ne donne que la première racine
[r1,r2,r3] = resol_trinome(1,-2) // erreur car trop d'argument en sortie

On peut alors complèter la fonction resol_trinome afin de tester les arguments :
// 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)

// test des arguments
nargout = argn(1); // nombre d'arguments en sortie lors de l'appel
nargin = argn(2); // nombre d'arguments en entrée lors de l'appel

if nargout~=2 then
error('il faut deux arguments en sortie')
end

// affecter des valeurs par défaut en entrée
// si les arguments n'ont pas été fournis
if nargin<1 then
b=0;
end
if nargin<2 then
c=0;
end

// tester le type des arguments en entrée
if ~(...
type(b)==1 & ... // test si b est de type numérique
type(c)==1 & ... // test si c est de type numérique
length(b)==1 & ... // test si b est un scalaire
length(b)==1 ... // test si c est un scalaire
) then
error('les arguments en entrée doivent etre scalaires (réels ou complexes)')
end

// les instructions de la fonction
delta = b*b-4*c;
r1 = (-b-sqrt(delta))/2;
r2 = (-b+sqrt(delta))/2;

endfunction

puis tester les différents instructions :

resol_trinome(1,2) // ERREUR
[r1,r2,r3] = resol_trinome(1,2) // ERREUR
[r1,r2] = resol_trinome([1,2],"3") // ERREUR
[r1,r2] = resol_trinome() // OK : b=c=0
[r1,r2] = resol_trinome(3) // OK : c=0
_________________
A friend In need Is a friend Indeed


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


Revenir en haut
Skype
Publicité






MessagePosté le: Jeu 17 Nov - 12:01 (2011)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
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