ulysse2531
Messages postés5Date d'inscriptionvendredi 7 juillet 2017StatutMembreDernière intervention24 juillet 2017
-
7 juil. 2017 à 10:39
Whismeril
Messages postés18414Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023
-
21 juil. 2017 à 19:53
Bonjour,
Je dois effectué un "petit" programme en Java dans le cadre de mon PFE. On m'a demandé de le faire en Java (super j'ai découvert un nouveau langage POO).
Dans ce projet j'ai besoin de traduire une expression mathématique entré par un utilisateur (ex : x1+x1*x2+x3).
J'ai donc considérer de séparer la chaînes en unité "mathématiques" (ex : x1+sin(3*x2) => "x1", '+', "sin", '(', 3, '*',"x2" et ')' ). Mon soucis vient de la reconnaissance de mes variables.
Ma question est simple : comment faire comprendre que x1 est une unité ?
Voici la partie de mon code pour les variables :
// Rencontre d’une variable, d’un nom de fonction (sin,…) donc un mot
Else if(lexical.ttype=StreamTokenizer.TT_WORD){
String s = lexical.sval.toLowerCase();
// rencontre de “x” suivit ou non par un nombre
If (s.equals(« x »)){
Lexical.nextToken() ;// on passe au caractère suivant pour l’analyser et voir si un chiffre suit « x » immédiatement
/* Est-ce que c’est bien ce qu’il fait ???? */
If(lexical.ttype==StreamTokenizer.TT_NUMBER){
Double res = lexical.nvat; // sauvegarde du chiffre
Resultat = new Variable(s+res) ; // création de la variable
Lexical.nextToken() ;
}
Else if (lexical.ttype!=StreamTokenizer.TT_NUMBER){ // on a une seule variable “x”
Resultat = new Variable(s);
Lexical.nextToken();
}
Else { // erreur de syntaxe
throw new ErreurDeSyntaxe(s+": identificateur non reconnu");
}
}
Else if (s.equals(“sin”)){
Lexical.nextToken():
Expression expression= analyserExpression();
Resultat = new Sinus(expression);
}
// … pour cos, exp,…
// …
Whismeril
Messages postés18414Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 21 juil. 2017 à 19:52
Bonsoir,
Si je peux me permettre, je ne code pas en Java, cependant je sais une chose importante sur ce langage.
Il n'est pas orienté objet. Il est "tout" objet.
Un langage orienté objet va utiliser autre chose que les objets, du séquentiel, de l'événementiel etc...
Un langage objet ou tout objet n'utilise que des objets.
En Java un entier possède des méthodes car c'est un objet, en vba (par exemple) un entier est un type sans rien de plus.
Quand on débute ça ne paraît passe important cette différence, mais pour exploiter au mieux Java, C# et autres langages tout objet, il est important de le savoir et d'en tenir compte.
Whismeril
Messages postés18414Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 21 juil. 2017 à 19:53
PS, pense à mettre le sujet résolu, avec le lien dédié sous le titre de la discussion.