IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

entrer une fonction en argument d'une autre fonction


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut entrer une fonction en argument d'une autre fonction
    Bonjour,

    J'aurai voulu savoir comment il est possible d'entrer un fonction dans les arguments d'un fonction.

    par exemple je voudrais creer une fonction integral qui prend en entrée le nom de la fonction et les bornes d'intégration et renvoi le resultat.
    J'ai vu qu'il y avait un moyen en vb.net avec des fonction déléguées mais je n'ai rien trouvé à ce propos dans VB...

    Merci de votre aide

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Désolé je ne comprends pas .
    Tu voudrais quelque chose comme
    lret=Mafonction(Mafonction2(x))
    ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je pense qu'on parle de la meme chose mais je vais essayer d'etre plus clair:

    si je défini une fonction quelconque f

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function f1(x)
    f1=3*x+2
    end function
    Et je veux ensuite pouvoir la mettre en argument d'une autre fonction:

    l'exmeple le plus bete serait une fonction évaluation qui prendrait en entrée le nom de la fonction ainsi que le poit ou l'évaluer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    function eval(f,x)
    eval=f(x)
    end function
    Et donc je voudrais pouvoir appeler eval(f1,9) par exemple

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    A ma connaissance ce n'est pas possible sous vb de passer le nom d'une fonction comme argument d'une autre.
    Mais je peux me tromper.

  5. #5
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    c'est tout a fait faisable faisable. Partant du principe qu'une fonction renvoie toujours une valeur alors c'est faisable.

    Pour ton exemple voila une adaptation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function f1(x as integer) as Long
        f1=3*x+2
    end function
    ensuite tu as l'autre fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function eval(ByVal x as long) as Long
        eval=x
    end function
    Et pour appeler tu fait

  6. #6
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je suis d'accord, mais ce qu'il veut, c'est passer le nom de la fonction en argument et là j'avoue ne pas savoir comment on pourrais faire

  7. #7
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par Delbeke
    mais ce qu'il veut, c'est passer le nom de la fonction en argument
    je ne vois pas trop bien

  8. #8
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Exemple non fonctionnel:

    Public Function Test(Fonction as ????, Parametre as Long)
    et
    Public Function LaFonction1(Param as Long) as long
    Public Function LaFonction2(Param as Long) as long
    Public Function LaFonction3(Param as Long) as long

    On pourait alors faire Test(LaFonction1,Param) ou Test(LaFonction2,Param) etc
    Du moins c'est ce que j'ai compris de la question

    On est proche du Polymorphise je crois

  9. #9
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    La comme ca je crois aussi que ca ne peut pas etre possible. Mais s'il nous disais exactment ce qu'il veux faire je crois que j'ai une petite astuce qui lui permetrais de faire ce qu'il veux.

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Effectivement mon exemple était un peu simpliste puisqu'il ne demande qu'une seule évaluation de la fonction f1.
    En fait la fonction que je veux vraiment créer c'est une fonction d'intégration numérique qui doit evaluer la fonction à intéger en plusieurs points


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function integral(f,a,b,n)
    int=0
    For i=0 to n
    int=int+f(a+(b-a)/n*i)*(b-a)/n
    next i
    end funtion
    Ici on a besoin d'évaluer n fois la f. Cette synthaxe ne marche donc pas mais est t'il possible de passer par un pointeur ou quelque chose comme ça pour appeler la fonction f, le but étant de ne par récrire la routine à chaque changement de fonction à intégrer?

  11. #11
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function integral(f,a,b,n)
    int=0
    For i=0 to n
    int=int+f(a+(b-a)/n*i)*(b-a)/n
    next i
    end funtion
    alors la je plante au rouge. est qu'il serais possible de voir le code de f ??

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ce qui se comprend bien s'ennonce clairement... j'ai un peu de mal...

    alors je veux pouvoir définir une fonction intégration:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function integral(f,a,b,n)
    int=0
    For i=0 to n
    int=int+f(a+(b-a)/n*i)*(b-a)/n
    next i
    end funtion
    puis plusieurs fonctions du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function f1(x)
    f1=3*x+2
    end function
     
    function f2(x)
    f2=tan(x)
    end fucntion

    et ensuite pouvoir executer integral(f1,4,6), integral(f2,2,5).....

  13. #13
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Bon c'est vrai maintenant c'est plus clair, et je comprend a present ce que tu veux faire.

    Voila une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    'Tout d'abord ne change rien a tes fonction (f1,f2, ...)
    'Change ta focntion integrale par celle ci 
     
    function integral(Fontion as string, a as integer, b as integer, n as integer)
                                                  'pour les types je les ai pris au hasard
         int=0
     
         Select case  Fonction
                 case f1 :   For i=0 to n
                                     int=int+f1(a+(b-a)/n*i)*(b-a)/n
                                next i
     
                 case f2 :   For i=0 to n
                                     int=int+f2(a+(b-a)/n*i)*(b-a)/n
                                next i
     
                etc ... 
    end funtion
    Bon comme je disais c'est juste un contour du probleme.

    Ainsi pour appeler ta fonction tu fait

    et ca marche impect, enfin selon ceque tu veux.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    ok merci ça devrait me permettre de m'en sortir mais j'aurai bien aimé une fonction plus générique qui aurait permis d'integrer n'importe quelle fonction sans retoucher le code de "integral"... mais ça j'ai l'impression que c'est pas possibe...

  15. #15
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Pas sous Vb en tout cas

  16. #16
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par Delbeke
    Pas sous Vb en tout cas
    Tu en es sûr ?

  17. #17
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Non, je n'en suis pas sur. Quelqu'un de beaucoup plus fort que moi pourrai trouver une solution en faisant joujou avec les pointeurs.

  18. #18
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par Delbeke
    une solution en faisant joujou avec les pointeurs.
    Avec les pointeur ?? je croyais que ca n'existait pas en VB (enfin je l'est lu quelque part).

  19. #19
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ce n'est pas censé exister, Nuance

    Il existe des fonctions non documentées genre : varPrt,strPrt,ObjPtr
    et des documentées : AdressOf

  20. #20
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Merci pour les fonctions (vraiment on en apprent tous les jours sur ce forum ). Je vais jetter un coup d'oeil dessus.

Discussions similaires

  1. Résultat d'une fonction en argument d'une autre fonction.
    Par xess91 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/04/2009, 15h15
  2. Fonction en argument d'une autre fonction
    Par bonjour69 dans le forum Fortran
    Réponses: 2
    Dernier message: 12/03/2008, 16h17
  3. Passer une connexion en argument d'une fonction
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2008, 11h52
  4. [scipy] Séries mathématiques - fonction comme argument d'une autre
    Par sebsainte dans le forum Calcul scientifique
    Réponses: 6
    Dernier message: 20/09/2007, 00h59
  5. une url comme argument d'une fonction
    Par khayyam90 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/10/2004, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo