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
» Exemple d'une nouvelle version d'un GRID
par Minibug Mer 16 Jan 2019 - 18:23

» Peut-être un bug de l'éditeur pour Jack
par jjn4 Lun 14 Jan 2019 - 17:45

» Wordpic.2
par jjn4 Sam 12 Jan 2019 - 16:34

» Fichier <-> Datas
par jjn4 Sam 12 Jan 2019 - 16:23

» Version instantanée V 0.9.29i6 du 08/01/2019
par Jack Mer 9 Jan 2019 - 7:50

» Make_Exe avec la version V 0.9.29i6
par Jack Mar 8 Jan 2019 - 20:14

» caret_yb_position
par jjn4 Mar 8 Jan 2019 - 19:34

» Problème avec l'analyseur syntaxique de Panoramic.
par jjn4 Lun 7 Jan 2019 - 14:44

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Dim 6 Jan 2019 - 18:39

» Bonne année 2019
par silverman Sam 5 Jan 2019 - 12:02

» Blocage Editeur
par Minibug Mar 1 Jan 2019 - 15:54

» Un texte clignotant
par JL35 Mar 1 Jan 2019 - 13:50

» Bonnes fêtes de fin d'année !
par JL35 Mar 1 Jan 2019 - 0:04

» ON_CLICK sur HVIEWER
par JL35 Lun 31 Déc 2018 - 16:56

» Logiciel de soutien scolaire.
par Pedro Alvarez Lun 31 Déc 2018 - 7:51

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2019
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Problème de parenthèses.

Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

Nombre de messages : 1232
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 : 6063
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 : 6063
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 : 42
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 : 735
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 : 5736
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 : 1232
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 : 5736
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 Intellibox
» Problème ComboBox
» Problème d'alimentation ??
» [Resolu] Problème logiciel...

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: