FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Bug avec la priorité des opérations arithmétiques ? Emptypar Klaus Aujourd'hui à 9:32

» item_index(résolu)
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Bug avec la priorité des opérations arithmétiques ? Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Bug avec la priorité des opérations arithmétiques ? Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Bug avec la priorité des opérations arithmétiques ? Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Bug avec la priorité des opérations arithmétiques ? Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Bug avec la priorité des opérations arithmétiques ? Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Bug avec la priorité des opérations arithmétiques ? Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Bug avec la priorité des opérations arithmétiques ? Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Bug avec la priorité des opérations arithmétiques ? Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Display Star Wars Unlimited Ombres de la Galaxie : ...
Voir le deal

 

 Bug avec la priorité des opérations arithmétiques ?

Aller en bas 
5 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12299
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 17:26

Je pense avoir trouvé un bug avec la priorité des opérations arithmétiques. En principe, Deux divisions successives doivent se dérouler l'une après l'autre, en évaluant l'expression de gauche à droite. C'est vrai avec une expression simple:
Code:
print 18/2/3
imprime bien le bon rfésultat: 3.

Or, ce n'est plus vrai avec une expression plus complexe. Il suffit de regarder le code suivant:
Code:
dim x%,w%,sp%,t%

w% = 80
sp% = 3
t% = 21

x% = int((w%-sp%-t%)/sp%/2)


memo 1 : width 1,500 : height 1,400 : font_size 1,12
item_add 1,"w%="+str$(w%)
item_add 1,"sp%="+str$(sp%)
item_add 1,"t%="+str$(t%)
item_add 1,""

item_add 1,"w%-sp%-t%="+str$(w%-sp%-t%)
item_add 1,"(w%-sp%-t%)/sp%="+str$((w%-sp%-t%)/sp%)
item_add 1,"(w%-sp%-t%)/sp%/2="+str$((w%-sp%-t%)/sp%/2)+" <== erreur ici !"
item_add 1,"int((w%-sp%-t%)/sp%/2)="+str$(int((w%-sp%-t%)/sp%/2))
item_add 1,""

item_add 1,"Le résultat devrait être: "+str$(int((w%-sp%-t%)/sp%*2))

end

La formule complète est donnée en ligne 7. La ligne 19 affiche le résultat réel de Panoramic, et ce résultat est faux. Il faut remplacer la dernière division par une multiplication pour obtenir le bon résultat, comme en ligne 22. Or, cela ne s'explique que si "sp%*2" est effectué avant la division de ")/sp%". Et ce n'est pas normal.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
topmozika

topmozika


Nombre de messages : 79
Age : 62
Localisation : Antananarivo - Madagascar
Date d'inscription : 09/06/2012

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 18:19

C'est vrai. Y a un bug que j'ai souvent rencontré mais je l'ai minimisé car en mettant la première division entre parenthèse et ainsi de suite tu aura le vrai résultat. C'est à dire que PANORAMIC ne prend en priorité que les opérations entre parenthèse. Mais ça reste un bug où Jack devrait revoir s'il a un peu de temps.
Code:
print "(80-10+20)/9/5 = DONNE UN RESULTAT FAUX = "+ str$((80-10+20)/9/5)
print "===> La 2eme division devient multiplication"
print "((80-10+20)/9)/5 = DONNE UN RESULTAT VRAI = "+ str$(((80-10+20)/9)/5)
A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12299
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 18:26

Tu as raison. Avec les parenthèses, on peut "forcer" l'ordre d'exécution des opérations. Cela reste néanmoins un bug, et je suis certain que Jack aura à coeur de corriger cela. Sinon, à quoi servirait la notion de priorité des opérateurs, si l'on devait placer des parenthèses partout pour forcer l'ordre d'exécution !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
topmozika

topmozika


Nombre de messages : 79
Age : 62
Localisation : Antananarivo - Madagascar
Date d'inscription : 09/06/2012

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 18:32

En fait dans les opérations arithmétiques, la deuxième division d'une opération par un nombre X est égale à la multiplication de ladite opération par l'inverse du nombre X, mais PANORAMIC multiplie non pas l'inverse du nombre mais le nombre en question.
A+
Revenir en haut Aller en bas
topmozika

topmozika


Nombre de messages : 79
Age : 62
Localisation : Antananarivo - Madagascar
Date d'inscription : 09/06/2012

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 18:33

En fait dans les opérations arithmétiques, la deuxième division d'une opération par un nombre X est égale à la multiplication de ladite opération par l'inverse du nombre X, mais PANORAMIC multiplie non pas l'inverse du nombre mais le nombre en question.
A+
Revenir en haut Aller en bas
topmozika

topmozika


Nombre de messages : 79
Age : 62
Localisation : Antananarivo - Madagascar
Date d'inscription : 09/06/2012

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 18:35

Ouuppss! mille excuses, j'ai envoyé 2 fois un même texte. Razz Razz Razz
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12299
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 18:46

Exact. Mais cela ne se produit que si'il s'agit d'une expression complexe. La preuve:
print 18/2/3 imprime bien 3 et non 27 !

Tout dépend comment ce mécanisme est implémenté. Dans une machine virtuelle à une seule pile, on trouverait sur la pile:
0: 18
1: 2
2: / <== SP
exécution, résultat:
0: 9
puis on continue:
0: 9
1: 3
3: / <== SP
exécution, résultat:
0: 3 <== SP

En occurrence, c'est le cas. Or, dans mon exemple, à la place du "18", on devrait trouver le résultat de la parenthèse qui précède le premier "/", car comme cette expression est placée entre parenthèses, elle est obligatoirement évaluée d'abord. Et on doit forcément en venir au cas de figure de cet exemple: 3 valeurs liées par 2 divisions successives. C'est un cas d'école.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
sergeauze

sergeauze


Nombre de messages : 391
Age : 71
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 19:19

mais si j'en crois ce code
Code:

dim a
 a=24
 print a/2/2/2/2
Il n'y a pas d'erreur
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
Klaus

Klaus


Nombre de messages : 12299
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 19:32

Mais là, il y a erreur:
Code:
dim a, b
 a=10
 b=14
 print "(a+b)/2/2/2/2="+str$((a+b)/2/2/2/2)
 a = 24
 print "a/2/2/2/2="+str$(a/2/2/2/2)
 

Pourtant, le résultat devrait être identique !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 19:42

Perso j'ai toujours rajouté des parenthèses pour éviter toute ambiguïté...
normalement en notation mathématique on a :
{[(a x b)+2.5] / 56} donc pourquoi ne pas appliquer le même principe en basic (au style de parenthèse pres)

Je trouve que cette écriture est plus "limpide" :
((a * b) + 2.5 ) / 56

que ça :

a * b + 2.5 / 56

je crois que l'on a déjà parlé des priorités sur les opérateurs....


Dernière édition par Nardo26 le Mar 30 Oct 2012 - 19:43, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


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

Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? EmptyMar 30 Oct 2012 - 19:43

Oui effectivement il y a un os.

Je me suis permis de simplifier pour la démonstration
Code:
print 18/2/3
print 9+9/2/3:' si l'on fait cette formule sur la calculatrice le résultat est 3
print (9+9)/2/3:' ????
print (9+9/2)/3:' ????
print ((9+9)/2)/3::' c'est OK

A+

PS: on s'est croisé....
Revenir en haut Aller en bas
Contenu sponsorisé





Bug avec la priorité des opérations arithmétiques ? Empty
MessageSujet: Re: Bug avec la priorité des opérations arithmétiques ?   Bug avec la priorité des opérations arithmétiques ? Empty

Revenir en haut Aller en bas
 
Bug avec la priorité des opérations arithmétiques ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Erreur dans la priorité des opérations
» Encore un mystère, mais avec les opérations
» Opérateurs arithmétiques
» Priorité des évènements...
» Transitivité des opérations

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: