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
» Fonctionnement du caret_x_position(N)
par Jack Hier à 20:36

» Problèmes en cours.
par Jack Hier à 20:31

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Hier à 19:55

» Exemple d'une nouvelle version d'un GRID
par Minibug Hier à 17:36

» Comment faire fonctionner \qj en RTF ?
par jjn4 Mer 12 Déc 2018 - 19:25

» Mais où est donc passé Klaus ?!
par Jicehel Mer 12 Déc 2018 - 13:38

» Problème avec SaveStringList.
par Klaus Mer 12 Déc 2018 - 12:14

» Je suis de retour !
par Klaus Mer 12 Déc 2018 - 12:10

» Connexion au forum
par mindstorm Mer 5 Déc 2018 - 19:09

» Version instantanée V 0.9.29i5 du 17/11/2018
par silverman Ven 30 Nov 2018 - 10:37

» imprimer avec Print.dll
par JL35 Jeu 29 Nov 2018 - 21:33

» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
par Minibug Dim 25 Nov 2018 - 15:37

» Impression de documents
par JL35 Ven 23 Nov 2018 - 19:45

» Logiciel de soutien scolaire.
par Marc Jeu 22 Nov 2018 - 20:51

» Logiciel de soutien en langues.
par Marc Jeu 22 Nov 2018 - 19:39

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 Problème de parenthèses.

Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

Nombre de messages : 1226
Date d'inscription : 19/01/2014

MessageSujet: Problème de parenthèses.   Mer 30 Mai 2018 - 15:46

Bonjour.

J'ai simplifié le code précédent au maximum.
Et voilà que le résultat est toujours différent !

Les expressions entre parenthèses étant évaluées en priorité, ne devrait-on pas obtenir deux résultats strictement identiques ?

La valeur (y) doit être évaluée en premier, et donc on reviendrait au cas précédent !

Pourrait-on éclairer ma lanterne ?

Code:
dim crlf$, x, l1, l2, y, ct1

crlf$=chr$(10)+chr$(13)

ct1=180/pi

x=2.3438093
y=-2589.47

l1=x+y/3600/ct1
l2=x+(y)/3600/ct1

message str$(l1)+crlf$+str$(l2)
terminate

Le code suivant en Blitzbasic donne 2,33126 pour les deux résultats !

Code:
ct1#=180/3.1416

x#=2.3438093
y#=-2589.47

l1#=x#+y#/3600/ct1#
l2#=x#+(y#)/3600/ct1#
Notify Str$(l1#)+" : "+Str$(l2#)

Panoramic indique la valeur -38,87 pour l2 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 6056
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Problème de parenthèses.   Mer 30 Mai 2018 - 16:40

Je pense que tu as raison, Pedro.
Pour moi, il y a un problème dans ce cas.
C’est à toi Jack de trancher.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 6056
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Problème de parenthèses.   Mer 30 Mai 2018 - 16:49

Code:

dim a,b,c,d,l1,l2
a = 5
b = -5
c = 14/7
d = 2
l1 = a + b / c / d
l2 = a + (b) / c / d
print l1
print l2



Le résultat doit-être le même, à savoir 3.75
Mais Panoramic voit les choses autrement




Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Navigateur

avatar

Nombre de messages : 41
Age : 70
Localisation : Les Clayes-sous-bois 78340
Date d'inscription : 02/09/2016

MessageSujet: Re: Problème de parenthèses.   Mer 30 Mai 2018 - 18:37

Bonjour,

L'explication est (peut-être) dans le changement de la priorité des opérations ou groupe d'opérations qui suivent la variable qui a été mise entre parenthèses.

Code:
Dim x, y, z, ct1
Dim l1, l1_bis, l2, l2_bis

x   = 2.3438093
y   = -2589.47
z   = 3600
ct1 = 180/pi

l1      =  x  +  y  /  z  /  ct1
l1_bis  = (x) + (y) / (z) / (ct1)
l2      =  x  + (y) /  z  /  ct1
l2_bis  =  x  +  y  / (z  /  ct1)


print "  x  +  y  /  z  /  ct1  : ", l1
print " (x) + (y) / (z) / (ct1) : ", l1_bis
print "  x  + (y) /  z  /  ct1 : ",  l2
print "  x  +  y  / (z  /  ct1) : ", l2_bis


l1      =  x  +  y  /  z  *  ct1
l1_bis  = (x) + (y) / (z) * (ct1)
l2      =  x  + (y) /  z  *  ct1
l2_bis  =  x  +  y  / (z  *  ct1)

print
print "  x  +  y  /  z  *  ct1  : ", l1
print " (x) + (y) / (z) * (ct1) : ", l1_bis
print "  x  + (y) /  z  *  ct1 : ",  l2
print "  x  +  y  / (z  *  ct1) : ", l2_bis


l1      =  x  +  y  *  z  *  ct1
l1_bis  = (x) + (y) * (z) * (ct1)
l2      =  x  + (y) *  z  *  ct1
l2_bis  =  x  +  y  * (z  *  ct1)

print
print "  x  +  y  *  z  *  ct1  : ", l1
print " (x) + (y) * (z) * (ct1) : ", l1_bis
print "  x  + (y) *  z  *  ct1 : ",  l2
print "  x  +  y  * (z  *  ct1) : ", l2_bis


l1      =  x  +  y  *  z  /  ct1
l1_bis  = (x) + (y) * (z) / (ct1)
l2      =  x  + (y) *  z  /  ct1
l2_bis  =  x  +  y  * (z  /  ct1)

print
print "  x  +  y  *  z  /  ct1  : ", l1
print " (x) + (y) * (z) / (ct1) : ", l1_bis
print "  x  + (y) *  z  /  ct1 : ",  l2
print "  x  +  y  * (z  /  ct1) : ", l2_bis

A priori, quand une variable/expression est mise entre parenthèses, Panoramic fait d'abord l'évaluation des variables/expressions à sa droite avant d'effectuer le reste des autres opérations en respectant les règles de priorité "classiques" (sauf si une autre variable est mise entre parenthèses).

Navigateur

PS : à vérifier avec des opérateurs de priorité différente peut-être.
: en Freebasic pas de problème avec une variable mise entre parenthèse :

x + y / z / ct1 : 2.331255205775772
(x) + (y) / (z) / (ct1) : 2.331255205775772
x + (y) / z / ct1 : 2.331255205775772
x + y / (z / ct1) : -38.86892055972071


Dernière édition par Navigateur le Mer 30 Mai 2018 - 18:59, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 724
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: Problème de parenthèses.   Mer 30 Mai 2018 - 18:37

C'est un bug, la position des parenthèses en interne est mauvaise:
Code:
dim b,c,d,l1,l2

b = -5  :  c = 14/7  :  d = 2

l1 =  b / c / d :' = ( b / c ) / d
l2 = (b) / c / d :' = b / ( c / d )

print l1
print ( b / c ) / d :' ---> ok
print l2
print b / ( c / d ) :' ---> erreur
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5733
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Problème de parenthèses.   Mer 30 Mai 2018 - 20:30

Bonsoir,

Je me pose une question: quelle est l'intérêt de mettre une variable seule entre parenthèses. Question

Exemple du code de Silverman: l2 = (b) / c / d :' = b / ( c / d )
.
drunken drunken drunken

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Pedro Alvarez

avatar

Nombre de messages : 1226
Date d'inscription : 19/01/2014

MessageSujet: Problème de parenthèses.   Mer 30 Mai 2018 - 20:39

Bonsoir.

L'intérêt est justement de montrer l'erreur de l'analyseur syntaxique !!

Le code proposé est un raccourci du code montré plus haut !!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5733
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Problème de parenthèses.   Mer 30 Mai 2018 - 20:53

Oh ! je ne l'avais pas vu sous cet angle. Embarassed

Montrer l'erreur de l'analyseur syntaxique, OK, mais je pense qu'il y a bien d'autres cas où l'analyse n'est pas au top.

Néanmoins, tu as débusqué un lièvre.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Problème de parenthèses.   

Revenir en haut Aller en bas
 
Problème de parenthèses.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Problème avec psg tv
» Problème avec roll over qui "clignote"
» problème ps2
» Problème avec Java
» Gros problème avec des .swf sur mon site

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: