lovejava
Messages postés9Date d'inscriptionmardi 21 novembre 2000StatutMembreDernière intervention25 septembre 2007 6 oct. 2007 à 21:08
Ajout des la gestion des fonctions.
lovejava
Messages postés9Date d'inscriptionmardi 21 novembre 2000StatutMembreDernière intervention25 septembre 2007 6 oct. 2007 à 15:30
Luthor, voila, j'ai rajouté le support des variables, merci pour l'idée (je n'aurais pas eu tendance à forcément l'implémenter sinon)
Je prévois normalement pour la prochaine version le support des fonctions usuelles mais également de ses propres fonctions définissables par exemple par : f:x ---> 3x+2abc(1-2^3)
+
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 3 oct. 2007 à 18:57
Il est dommage qu'on ne puisse pas ajouter de variable dans une expression dont on demanderait ensuite l'évaluation en fournissant les valeurs de chaque variable. Sans cela, cet analyseur me semble inutile (en tout cas pour moi).
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 3 oct. 2007 à 18:54
Je pense aussi qu'il faut également privilégier la lisibilité et l'élégance du code. De toute facon, un analyseur de ce type n'a pas besoin d'etre performant vu la puissance des ordinateurs. Qu'il mette 1ms ou 10ms, ca sera la meme chose pour l'utilisateur.
Avant de faire un stackoverflow, a mon avis, tu pourras en mettre des parenthèses. Pour remplir 1mo d'appel de fonction, faut y aller. Dans tous les cas, suffit juste de faire une petite vérification pour éviter le stackoverflow.
lovejava
Messages postés9Date d'inscriptionmardi 21 novembre 2000StatutMembreDernière intervention25 septembre 2007 16 sept. 2007 à 14:06
Yop,
en effet la récursivité coûte ici assez cher...c'est plutôt la lisibilité du code et l'élégance que je trouve sympa surtout ^^ on est d'accord qu'un système d'exploitation de calculatrice n'utiliserait pas ce code...
cs_Forman
Messages postés600Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 6 avril 20101 16 sept. 2007 à 12:33
Bonjour,
code intéressant pour le principe mais je ne crois pas qu'il soit judicieux de parler de "puissance de la récursivité" dans ce cas. En effet, les analyseurs "standards" utilisent des automates finis à pile d'états pour fonctionner, et tout est complètement itératif, c'est à dire que si tu donnes une expression compliquée avec un "arbre d'évaluation" très profond, ce sont juste des boucles qui tournent. Seule la pile d'états peut augmenter de taille, au prix de quelques realloc.
En revanche avec la récursivité il est très facile de remplir la stack avec les appels de fonctions récursives imbriquées. En plus, il est vraisemblable que ça ira plus lentement (la version itérative est très facilement optimisable). Je n'ai pas compilé ton code, mais as-tu essayé de lui donner une expression très, très longue? Vraisemblablement ça provoquera un stack overflow.
Mais bon, c'est vrai que ça rend le code plus lisible...
6 oct. 2007 à 21:08
6 oct. 2007 à 15:30
Je prévois normalement pour la prochaine version le support des fonctions usuelles mais également de ses propres fonctions définissables par exemple par : f:x ---> 3x+2abc(1-2^3)
+
3 oct. 2007 à 18:57
3 oct. 2007 à 18:54
Avant de faire un stackoverflow, a mon avis, tu pourras en mettre des parenthèses. Pour remplir 1mo d'appel de fonction, faut y aller. Dans tous les cas, suffit juste de faire une petite vérification pour éviter le stackoverflow.
16 sept. 2007 à 14:06
en effet la récursivité coûte ici assez cher...c'est plutôt la lisibilité du code et l'élégance que je trouve sympa surtout ^^ on est d'accord qu'un système d'exploitation de calculatrice n'utiliserait pas ce code...
16 sept. 2007 à 12:33
code intéressant pour le principe mais je ne crois pas qu'il soit judicieux de parler de "puissance de la récursivité" dans ce cas. En effet, les analyseurs "standards" utilisent des automates finis à pile d'états pour fonctionner, et tout est complètement itératif, c'est à dire que si tu donnes une expression compliquée avec un "arbre d'évaluation" très profond, ce sont juste des boucles qui tournent. Seule la pile d'états peut augmenter de taille, au prix de quelques realloc.
En revanche avec la récursivité il est très facile de remplir la stack avec les appels de fonctions récursives imbriquées. En plus, il est vraisemblable que ça ira plus lentement (la version itérative est très facilement optimisable). Je n'ai pas compilé ton code, mais as-tu essayé de lui donner une expression très, très longue? Vraisemblablement ça provoquera un stack overflow.
Mais bon, c'est vrai que ça rend le code plus lisible...