begin process at 2012 02 15 16:57:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > MINI EVALUATEUR D'EXPRESSION ARITHMÉTIQUES

MINI EVALUATEUR D'EXPRESSION ARITHMÉTIQUES


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :analyseur, syntaxique, arithmétique, evaluateur, grammaire Niveau :Débutant Date de création :28/08/2006 Date de mise à jour :21/12/2006 23:08:27 Vu / téléchargé :11 460 / 978

Auteur : tucobouch

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Cette mini classe permet d'évaluer des expressions arithmétiques. Calcule sur des reels (double) et il y a que les opérations suivantes : plus,moins, multiplier,diviser,parentheses,sin,cos.

On peut aussi utiliser des variables

Se base sur la théorie des langages! utilise un analyseur syntaxique qui permet de calculer une expression a partir d'une grammaire.

Pour évaluer l'expression, on utilise une pile.

Voici la grammaire :
  S' -> E
  E -> TE'
  E' -> +TE'
  E' -> -TE'
  E' -> $
  T -> FT'
  T' -> *FT'
  T' -> /FT'
  T' -> $
  F -> id
  F -> (E)

En modifiant légérement la grammaire on peut trés facilement gerer les nombres a virgules (voir dans la méthode F)

La grammaire et la source ont été inspirés du cours de M. Krajecki disponible a l'adresse suivante :

                http://cosy.univ-reims.fr/~mkrajecki/enseignement/ info62/info62Chap3.pdf

Source

  • //utilisation :
  • //on instancie
  • Evalueur e=new Evalueur();
  • //on évalue une expression
  • double r=e.evalue("2*5+10");
  • //le résultat n'est valable que si getErreur() ne renvoi pas d'erreur
  • if (e.getErreur()==Evalueur.NO_ERROR)
  • System.out.println("resultat : "+r);
  • else
  • System.out.println("Erreur de syntaxe");
  • NOUVEAU MAJ : on peut mettre des variables et utiliser des fonctions prédéfinies (sin et cos)
  • Pour evaluer une expression avec une variable :
  • e.addVar("x",5.0);
  • e.evalue("2.5*x");
  • Pour utiliser sin ou cos :
  • e.evalue("cos(2.0)");
  • e.evalue("cos(2.0*x+5.0)+2");
  • e.evalue("sin(2.0)");
  • NOUVEAU : Si l'expression ne change pas, on peut optimiser l'évaluation de l'expression avec reevalue :
  • -la 1ere fois, utiliser evalue pour calculer la formule (genere l'expression)
  • e.addVar("x",5.0);
  • e.evalue("cos(x)");
  • -ensuite, on peut utiliser reevalue qui rejoue la derniere expression mais en prenant compte tout de meme des variables modifiées :
  • e.addVar("x",15.0);
  • e.reevalue();
  • L'execution de reevalue est plus rapide que evalue car reevalue réutilise la pile de fonctions générée par evalue
  • Tout simplement! :)
//utilisation :
//on instancie 
Evalueur e=new Evalueur();

//on évalue une expression
double r=e.evalue("2*5+10");

//le résultat n'est valable que si getErreur() ne renvoi pas d'erreur
if (e.getErreur()==Evalueur.NO_ERROR)
 System.out.println("resultat : "+r);
else
 System.out.println("Erreur de syntaxe");

NOUVEAU MAJ : on peut mettre des variables et utiliser des fonctions prédéfinies (sin et cos)

Pour evaluer une expression avec une variable :
e.addVar("x",5.0);
e.evalue("2.5*x");

Pour utiliser sin ou cos :
e.evalue("cos(2.0)");
e.evalue("cos(2.0*x+5.0)+2");
e.evalue("sin(2.0)");

NOUVEAU : Si l'expression ne change pas, on peut optimiser l'évaluation de l'expression avec reevalue :
-la 1ere fois, utiliser evalue pour calculer la formule (genere l'expression)
e.addVar("x",5.0);
e.evalue("cos(x)");
-ensuite, on peut utiliser reevalue qui rejoue la derniere expression mais en prenant compte tout de meme des variables modifiées :
e.addVar("x",15.0);
e.reevalue();

L'execution de reevalue est plus rapide que evalue car reevalue réutilise la pile de fonctions générée par evalue

Tout simplement! :)

 Conclusion

1) Je sais qu'une autre source pour évaluer des expression est disponible mais la mienne me parait interressante a publier aussi car elle montre l'utilisation de grammaire (utilisé pour faire par exemple des compilateur (c'est génial a faire ;) )). ça peut aider certain qui auront un point de départ pour comprendre les grammaires (ça peut aider en Master info par exemple!! lol)

2) Un exemple d'utilisation est inclus

Sous Windows, pour lancer le test : executez le script run.bat
executez compile.bat pour compiler les classes

En ligne de commande :
Pour executer : tapez java TestEvalueur
Pour compiler : tapez javac *.java

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Evalueur
    • compile.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier21 octets
    • Evalueur$1.classTélécharger ce fichier [Réservé aux membres club]175 octets
    • Evalueur$Fonction.classTélécharger ce fichier [Réservé aux membres club]442 octets
    • Evalueur$FonctionCos.classTélécharger ce fichier [Réservé aux membres club]728 octets
    • Evalueur$FonctionCst.classTélécharger ce fichier [Réservé aux membres club]782 octets
    • Evalueur$FonctionDiv.classTélécharger ce fichier [Réservé aux membres club]696 octets
    • Evalueur$FonctionMoins.classTélécharger ce fichier [Réservé aux membres club]700 octets
    • Evalueur$FonctionMulu.classTélécharger ce fichier [Réservé aux membres club]698 octets
    • Evalueur$FonctionPlus.classTélécharger ce fichier [Réservé aux membres club]690 octets
    • Evalueur$FonctionSin.classTélécharger ce fichier [Réservé aux membres club]728 octets
    • Evalueur$FonctionVar.classTélécharger ce fichier [Réservé aux membres club]860 octets
    • Evalueur.classTélécharger ce fichier [Réservé aux membres club]5 176 octets
    • Evalueur.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 930 octets
    • Evalueur.java.bakTélécharger ce fichier [Réservé aux membres club]12 950 octets
    • run.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier23 octets
    • TestEvalueur.classTélécharger ce fichier [Réservé aux membres club]1 127 octets
    • TestEvalueur.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 147 octets

Télécharger le zip


 Historique

21 décembre 2006 01:14:53 :
ajout des variables. calcul en double. ajout des fonctions cos et sinus
21 décembre 2006 01:34:35 :
rajout de la fonction reevalue pour optimiser l'exécution d'une requête
21 décembre 2006 23:08:27 :
maj du texte

 Sources du même auteur

Source avec Zip Source avec une capture JWOLFENSTEIN 3D !
Source avec Zip Source avec une capture JEU DE LA VIE DE CONWAY
Source avec Zip Source avec une capture PAS TOUCHE !!!
Source avec Zip Source avec une capture COLLISIONS EN 2D : AXES SÉPARATEURS
Source avec Zip Source avec une capture MODELE DE RESCORLA WAGNER

 Sources de la même categorie

Source avec Zip Source avec une capture [J2ME] MAILXPRESS, UNE PETITE APPLICATION D'ENVOI DE MAIL ÉC... par doderic
Source avec Zip CLIENT ET SERVEUR DE MESSAGERIES par lemout
Source avec Zip Source avec une capture NAVIGATEUR HTTP par lemout
Source avec Zip Source avec une capture PROGRAMME DE PARTAGE DE FICHIER EN RESEAUX par billatosco
Source avec Zip JET SPRING JSF PRIMEFACES par mendjijet

 Sources en rapport avec celle ci

Source avec Zip COMPILATEUR PASCAL par youma85
Source avec Zip ANALYSEUR XML GÉNÉRIQUE ET PROGRAMMATION REFLÉXIVE par AlexN
Source avec Zip ANALYSEUR LEXICALE ET SYNTAXIQUE POUR PLUSIEUR LANGAGE par mad_charif
Source avec Zip ANALYSEUR MORPHOLOGIQUE par albert84
Source avec Zip MINI-COMPILATEUR par Bel0

Commentaires et avis

Commentaire de sheorogath le 02/09/2006 12:52:34 administrateur CS

pas mal comme source
je pense qu'elle va pas mal me servir pour essayer de faire un mini interpreteur de script

mais bon ce n'est pas facil tout ca lol

allez encore une bonne source ;)

++

Commentaire de amateur_java le 15/09/2006 15:27:16

exellent ca je pourrais l'utiliser pour mes devoirs de maths

Commentaire de sheorogath le 15/09/2006 18:04:27 administrateur CS

yep moi j'ai vite arreté lol
je n'ai pas le niveau mathematiques :s

Commentaire de o00zeus00o le 31/10/2007 15:10:58 10/10

Très bon ! Utile et basé sur des connaissances serieuses en info, pro quoi ! Merci ^^

Commentaire de missrosa le 18/03/2008 12:34:09

bravo pour votre tolerance et votre simplicité basé sur la métrise des notions informatique
chapeau!!

Commentaire de shomron le 02/02/2009 17:22:18

salut
le code est super vraiment mais ya un truc qui va pas
par exemple  3-2+3 donne 4 alors que c pas vrai !
jai deja depose une question de ce genr sur une autre source
et jai propose de fair 3+(-2)+3 au nivo de lalgo
c comme ca que ca dois se passer?
merci

Commentaire de shomron le 02/02/2009 17:23:09

oups erreur !! desole

Commentaire de boudjaoui19 le 13/05/2009 01:58:33

lol thank's

Commentaire de manouwett le 23/03/2010 19:46:35

c bi1 vue ke j'ai bcp de prblem ds la thorie de langage'compilation'
merciiiiiiii

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Analyseur syntaxique [ par bigrb ] Slt tous le monde, si vous pouvez m'aider a réaliser un simple analyseur syntaxique avec java(Eclipse/JRE) de cette grammaire: E->E+T analyseur syntaxique d'un code java en javacc [ par dounatt ] Bonjour, je cherche à réaliser un analyseur syntaxque en javacc d'un code java, puis extraire les méthodes appelantes et les méthodes applelées de ce analyseur des trame can [ par prettycat ] [^^confus2] salut, svp comment on peux faire un programme d'un analyseur des trames(d'un réseau par exemple informatique)?je veux savoir quel est le développer un analyseur graphique du langage XML [ par ceprin ] bonjour j'ai un projet a remettre aidé moi svp L'objectif de ce projet est de développer un analyseur graphique du langage XML. L'objectif est de vér developper un analyseur graphique [ par ceprin ] je suis un étudiant en réseau mais j'ai un projet qu'il faut réaliser concevoir un analyseur graphique en xml j'ai peu de connaissance en développemen mettre une expression arithmétique sous forme d'un arbre puis la calculer en JAVA [ par Aymanovitch ] Salut tous le monde!!! j'ai un problème je n'arrive pas a mettre une expression arithmétique sous la forme d'un arbre puis la calculer (JAVA).Si quelq générer une arbre syntaxique à partir d'une classe java [ par enemi23 ] bonjour à tous, j'ai un probleme et j'espére avoir de l'aide. je suis entrain de preparer mon projet qui consiste à realiser un plug_in en eclipse po theorie des langages [ par marooh ] Bonjour, je veux ecrire un programme qui permet de transformer n'importe quelle grammaire en sa forme normale de chomsky,en passant bien sur par les e [BAR]Conception d'un programme qui fait l'analyse lexicale [ par cameroon ] soit le programme suivant: ::=DEBPGMFINPGM ::=DEBINSFININS ::=DEBDECLFINDECL ::=,| ::=: ::=#X|,#X ::= [clos] analyseur de detection de signal avec java j2ee [ par Souhayla91 ] Bonjour je suis débutant en Java et J2ee.. et j ai un projet de fin d'etudes a réalisé il s agit de developer une application avec j2ee 1.7 qui nous


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,697 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales