Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| DLL EVAL : Evaluation d'expressions mathématiques | |
| | Auteur | Message |
---|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: DLL EVAL : Evaluation d'expressions mathématiques Jeu 30 Sep 2010 - 16:55 | |
| Cette DLL permet d'évaluer une expression mathématique passée sous forme de chaîne de caractères. - Code:
-
dll_on "eval.dll"
dim x, i%, variable$, expression$, result
i% = dll_call0("InitFunc")
print i%, " fonctions initialisées dans la DLL EVAL"
variable$ = "x" x = rnd(1)
i% = dll_call2("SetVariable", adr(variable$), adr(x))
print print "Nom de la variable : ", variable$ print "Numéro d'ordre : ", i% print "Valeur : ", x
expression$ = "cos(x)^2 + sin(x)^2"
i% = dll_call2("Eval", adr(expression$), adr(result))
print print "Expression : ", expression$ print "Resultat : ", result print "Code d'erreur : ", i%
dll_off
end
A télécharger ici: http://www.unilim.fr/pages_perso/jean.debord/tpmath/eval.zip | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Jeu 30 Sep 2010 - 17:16 | |
| Intéressant, merci ! J'ai vu ton site, c'est du costaud, pas à la portée du premier venu !
Tiens, je remarque une autre chose intéressante également, c'est l'apparition (c'est nouveau) d'un ascenseur dans les codes présentés sur le forum, ça évitera les codes kilométriques au détriment des commentaires. | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Ven 1 Oct 2010 - 10:15 | |
| Merci de ton intérêt JL35 Voici un exemple plus "parlant" : une petite calculatrice avec ici 4 variables (mais on peut aller jusqu'à 26) - Code:
-
dim i%, variable$, expression$, value, result label On_Click_Button_13
left 0,225 top 0,200 width 0,470 height 0,225 caption 0,"Calculatrice" alpha 1 left 1,20 top 1,20 caption 1,"Variables :"
alpha 2 left 2,20 top 2,50 width 2,27 height 2,20 caption 2,"A = "
edit 3 left 3,50 top 3,50 text 3, "1"
alpha 4 left 4,20 top 4,80 width 4,28 caption 4,"B = "
edit 5 left 5,50 top 5,80 text 5, "2"
alpha 6 left 6,20 top 6,110 width 6,29 caption 6,"C = "
edit 8 left 8,50 top 8,110 text 8, "3"
alpha 9 left 9,20 top 9,140 width 9,29 caption 9,"D = "
edit 10 left 10,50 top 10,140 text 10, "4"
alpha 11 left 11,220 top 11,20 width 11,170 caption 11,"Saisissez une formule, puis cliquez sur Evaluer :"
edit 12 left 12,220 top 12,50 width 12,225 text 12, "A + B + C + D"
button 13 left 13,261 top 13,90 width 13,140 caption 13,"Evaluer" on_click 13, On_Click_Button_13
alpha 14 left 14,220 top 14,140 width 14,62 caption 14,"Résultat = "
edit 15 left 15,290 top 15,140 width 15,150 text 15,""
dll_on "eval.dll" i% = dll_call0("InitFunc")
end
On_Click_Button_13:
variable$ = "A" : value = val(text$(3)) i% = dll_call2("SetVariable", adr(variable$), adr(value)) variable$ = "B" : value = val(text$(5)) i% = dll_call2("SetVariable", adr(variable$), adr(value))
variable$ = "C" : value = val(text$(8)) i% = dll_call2("SetVariable", adr(variable$), adr(value)) variable$ = "D" : value = val(text$(10)) i% = dll_call2("SetVariable", adr(variable$), adr(value))
expression$ = text$(12) i% = dll_call2("Eval", adr(expression$), adr(result))
text 15, str$(result) return
La DLL est basée sur un programme publié il y a quelques années sur le forum FreeBASIC. Je l'ai juste un peu modifié et simplifié pour l'adapter à Panoramic. Il n'y a que 3 fonctions exportées : InitFunc, SetVariable et Eval. Les exemples montrent comment appeler ces fonctions. La documentation est en anglais mais cela ne devrait pas poser de problèmes car en pratique on ne la consultera que pour avoir la liste des opérateurs et des fonctions mathématiques disponibles. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Ven 1 Oct 2010 - 14:37 | |
| Je confirme, ton exemple est intéressant, même pour de l'algèbre ou de la trigo élémentaires, et ça ouvre des horizons pour aller plus loin. Je vais me rajouter un petit bouton pour afficher la liste des opérateurs et des fonctions, pour mémoire. | |
| | | Invité Invité
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Ven 1 Oct 2010 - 15:01 | |
| Je viens de faire un petit teste. Bon travail. |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Ven 1 Oct 2010 - 18:49 | |
| Ce qui m'impressione avec les DLL c'est que le code panoramic est réduit à sa plus simple expression. Voila une calculette bien pratique. J'ai fait un petit tour sur ton site et j'ai regardé WinReg Version 3.3 (juste la présentation), Heu... Ben La Ché pa quoi dir. Tu l'as dit JL35: c'est du costaud, pas à la portée du premier venu !Je me sent tout petit | |
| | | Invité Invité
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Ven 1 Oct 2010 - 19:17 | |
| Une question certainement idiote de ma part. Je vais sur ce site la plupart du temps rapidement par manque de temps. Il est où le site de Jean Debord? |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Ven 1 Oct 2010 - 20:29 | |
| Je l'ai trouvé avec google en tapant jean debord.... A+ | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Sam 2 Oct 2010 - 10:25 | |
| Bonjour à tous et merci encore pour votre intérêt La page principale de mon site est la suivante : http://www.unilim.fr/pages_perso/jean.debord/index.htmIl n'y a pas grand-chose sur Panoramic pour le moment (juste un lien !). Je vais m'efforcer de combler ce manque et notamment de faire une version française des articles que j'ai publiés dans "Back 2 Basic". Quand à WinReg, il est écrit en Delphi avec une DLL tableur qui était fournie par Borland à l'époque de Delphi 1. Malheureusement cette DLL n'existe qu'en version 16 bits. Mon but à long terme serait d'adapter à Panoramic (sous forme de DLL) les sous-programmes de calcul mathématiques que j'ai faits pour FreeBASIC et Delphi. Il y a encore pas mal de problèmes à résoudre, notamment pour ce qui concerne le passage des tableaux et des fonctions. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 2 Oct 2010 - 12:50 | |
| Fabuleux, ces dll ! Décidément, il faudra que je m'y colle quand j'aurai plus de temps ! | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 10:46 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 14:13 | |
| Effectivement, ça ajoutera un intérêt supplémentaire. Pardon si je m'incruste jean_debord, mais je ne veux pas ouvrir un topic uniquement pour ça: le calcul de pi. Je ne connaissais que la série de MacLaurin: pi = 4*(1-1/3+1/5-1/7+1/9...) dont la convergence est très lente, mais j'ai trouvé sur un autre forum (FB ) une formule dont la convergence est très rapide (Formule de Bailey, Borwein et Plouffe): - Code:
-
Dim i%, pi, x1, x2, x3, x4 pi = 0 For i% = 0 to 10 x1 = 4/(8*i%+1) x2 = -2/(8*i%+4) x3 = -1/(8*i%+5) x4 = -1/(8*i%+6) pi = pi + (1/power(16,i%))*(x1 + x2 + x3 + x4) print i%;": "; pi next i% end Évidemment, dans un programme il sera beaucoup plus simple d'écrire pi = 4*ATN(1) Pour ceux que ça intéresse: http://fr.wikipedia.org/wiki/Formule_BBP bon courage ! | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 14:46 | |
| Oui j'ai vu ce message aussi dans le forum FB J'ai un peu modifié le programme pour éviter des calculs inutiles. Cette version devrait être plus rapide (mais je n'ai pas vérifié). - Code:
-
Dim i%, j%, k%, pi, x1, x2, x3, x4
pi = 3.133333333333333 k% = 16
For i% = 1 to 10 j% = 8 * i% x1 = 4/(j%+1) x2 = -2/(j%+4) x3 = -1/(j%+5) x4 = -1/(j%+6) pi = pi + (x1 + x2 + x3 + x4) / k% k% = k% * 16 print i%;": "; pi next i%
print print 4 * atn(1) : ' pour vérifier
end
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 17:45 | |
| bonjour à tous ! moi, je connaissais cette formule : - Code:
-
Que j'aime à faire apprendre ce nombre utile aux sages ! 3 1 4 1 5 9 2 6 5 3 5 Immortel Archimède, artiste ingénieur, 8 9 7 9 Qui de ton jugement peut priser la valeur ? 3 2 3 8 4 6 2 6 Pour moi, ton problème eut de pareils avantages. 4 3 3 8 3 2 7 9 Jadis, mystérieux, un problème bloquait 5 0 2 8 8 Tout l'admirable procédé, l'œuvre grandiose 4 1 9 7 1 6 9 Que Pythagore découvrit aux anciens Grecs. 3 9 9 3 7 5 0 quadrature ! Vieux tourment du philosophe 1 0 5 8 2 9 Insoluble rondeur, trop longtemps vous avez 9 7 4 9 4 4 Défié Pythagore et ses imitateurs. 5 9 2 3 0 Comment intégrer l'espace plan circulaire ? 7 8 1 6 4 0 Former un triangle auquel il équivaudra ? 6 2 8 6 2 0 Nouvelle invention : Archimède inscrira 8 9 9 8 Dedans un hexagone ; appréciera son aire 6 2 8 0 3 4 Fonction du rayon. Pas trop ne s'y tiendra : 8 2 5 3 4 2 1 1 7 Dédoublera chaque élément antérieur ; 0 6 7 9 Toujours de l'orbe calculée approchera ; 8 2 1 4 8 0 Définira limite ; enfin, l'arc, le limiteur 8 6 5 1 3 2 8 De cet inquiétant cercle, ennemi trop rebelle 2 3 0 6 6 4 7 Professeur, enseignez son problème avec zèle 0 9 3 8 4 4
déjà avec les 4 premières lignes, cela fait pas mal de décimales... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 18:35 | |
| Je connaissais effectivement les 4 premières lignes, mais dans la pratique la 1ère doit suffire largement dans la grande majorité des cas. Et puis... les lignes suivantes ne riment pas ??? ça enlève beaucoup de leur intérêt... @jean_debord, ta formulation doit effectivement être plus rapide, mais ce n'est pas visible à l'oeil nu... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 19:00 | |
| oui en effet, C'est pas flagrant... faudrait avoir un compteur de base de temps. (le truc doit durer quelques nanos, donc cela risque d'être dur !) pour pouvoir afficher ensuite le delta.... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques Mar 12 Oct 2010 - 23:57 | |
| Et puis... c'est une opération qui ne se fait évidemment qu'une fois (pas dans une boucle !), alors on n'est pas à quelques nanosecondes près. | |
| | | Contenu sponsorisé
| Sujet: Re: DLL EVAL : Evaluation d'expressions mathématiques | |
| |
| | | | DLL EVAL : Evaluation d'expressions mathématiques | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |