FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Jeu de dames
Aujourd'hui à 22:52 par papydall

» Une boîte à rythmes DRUMBOX
Aujourd'hui à 22:38 par papydall

» Version instantanée du 16 mai 2012: PANORAMIC V 0.9.23i6
Aujourd'hui à 21:52 par Klaus

» MÉTHODE du plus petit carré (régression linéaire)
Aujourd'hui à 21:01 par Severin

» libérer toutes les variables d'un programme sans le fermer
Aujourd'hui à 20:02 par Jean Claude

» boîtes de messages multi-langue
Aujourd'hui à 19:54 par Severin

» BAR und FORM keine Möglichkeit
Aujourd'hui à 19:38 par Severin

» Plugicielle pour Panoramic
Aujourd'hui à 18:39 par Klaus

» Exécution d'un script en Panoramic SANS compiler !
Hier à 13:00 par Klaus

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2012
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partager | 
 

 DLL EVAL : Evaluation d'expressions mathématiques

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
jean_debord



Nombre de messages: 184
Age: 57
Localisation: Limoges
Date d'inscription: 21/09/2008

MessageSujet: DLL EVAL : Evaluation d'expressions mathématiques   Jeu 30 Sep 2010 - 15: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
JL35



Nombre de messages: 3044
Localisation: 77
Date d'inscription: 29/11/2007

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Jeu 30 Sep 2010 - 16: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord



Nombre de messages: 184
Age: 57
Localisation: Limoges
Date d'inscription: 21/09/2008

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Ven 1 Oct 2010 - 9:15

Merci de ton intérêt JL35 Smile

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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
JL35



Nombre de messages: 3044
Localisation: 77
Date d'inscription: 29/11/2007

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Ven 1 Oct 2010 - 13: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
cosmos70



Nombre de messages: 2226
Localisation: France-Comté Haute-Saône
Date d'inscription: 07/08/2009

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Ven 1 Oct 2010 - 14:01

Je viens de faire un petit teste.
Bon travail.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude



Nombre de messages: 1753
Date d'inscription: 07/05/2009

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Ven 1 Oct 2010 - 17: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 Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
cosmos70



Nombre de messages: 2226
Localisation: France-Comté Haute-Saône
Date d'inscription: 07/08/2009

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Ven 1 Oct 2010 - 18: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?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude



Nombre de messages: 1753
Date d'inscription: 07/05/2009

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Ven 1 Oct 2010 - 19:29

Je l'ai trouvé avec google en tapant jean debord....
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord



Nombre de messages: 184
Age: 57
Localisation: Limoges
Date d'inscription: 21/09/2008

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Sam 2 Oct 2010 - 9:25

Bonjour à tous et merci encore pour votre intérêt Smile

La page principale de mon site est la suivante :

http://www.unilim.fr/pages_perso/jean.debord/index.htm

Il 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
jjn4



Nombre de messages: 1072
Date d'inscription: 13/09/2009

MessageSujet: +++   Sam 2 Oct 2010 - 11:50

Fabuleux, ces dll !
Décidément, il faudra que je m'y colle
quand j'aurai plus de temps !
alien
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
jean_debord



Nombre de messages: 184
Age: 57
Localisation: Limoges
Date d'inscription: 21/09/2008

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Mar 12 Oct 2010 - 9:46

Une autre DLL, proposée par un membre du forum FreeBASIC :

http://www.unilim.fr/pages_perso/jean.debord/tpmath/evalpan.zip

Celle-ci a les fonctions hyperboliques, que je vais devoir ajouter à ma DLL si je veux rester dans la course Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
JL35



Nombre de messages: 3044
Localisation: 77
Date d'inscription: 29/11/2007

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Mar 12 Oct 2010 - 13: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 Very Happy ) 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 ! Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord



Nombre de messages: 184
Age: 57
Localisation: Limoges
Date d'inscription: 21/09/2008

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Mar 12 Oct 2010 - 13:46

Oui j'ai vu ce message aussi dans le forum FB Smile

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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Mar 12 Oct 2010 - 16:45

bonjour à tous !

moi, je connaissais cette formule : Very Happy
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...
tongue
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



Nombre de messages: 3044
Localisation: 77
Date d'inscription: 29/11/2007

MessageSujet: Re: DLL EVAL : Evaluation d'expressions mathématiques   Mar 12 Oct 2010 - 17: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... Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 

DLL EVAL : Evaluation d'expressions mathématiques

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant

 Sujets similaires

-
» DLL EVAL : Evaluation d'expressions mathématiques
» Nouvelles fonctions mathématiques
»  Module 06 : Notions de mathématiques appliquées à l'informatique
» Ah les mathématiques, ça explique tout...
» Notions de mathématiques appliquées à l'informatique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-