CALCUL : ANALYSE D'EXPRESSIONS ALGÉBRIQUES GRÂCE À LA RÉCURSIVITÉ (UTILISATION D

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 16 sept. 2007 à 12:33
lovejava Messages postés 9 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 25 septembre 2007 - 6 oct. 2007 à 21:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44093-calcul-analyse-d-expressions-algebriques-grace-a-la-recursivite-utilisation-des-template-egalement

lovejava Messages postés 9 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 25 septembre 2007
6 oct. 2007 à 21:08
Ajout des la gestion des fonctions.
lovejava Messages postés 9 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 25 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és 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
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és 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
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és 9 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 25 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és 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
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...
Rejoignez-nous