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
» Logiciel de planétarium.
Bug avec la priorité des opérations arithmétiques ? Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Bug avec la priorité des opérations arithmétiques ? Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Bug avec la priorité des opérations arithmétiques ? Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Bug avec la priorité des opérations arithmétiques ? Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Bug avec la priorité des opérations arithmétiques ? Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Bug avec la priorité des opérations arithmétiques ? Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Bug avec la priorité des opérations arithmétiques ? Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Bug avec la priorité des opérations arithmétiques ? Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Bug avec la priorité des opérations arithmétiques ? Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Bug avec la priorité des opérations arithmétiques ? Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Bug avec la priorité des opérations arithmétiques ? Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Bug avec la priorité des opérations arithmétiques ? Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Bug avec la priorité des opérations arithmétiques ? Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

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

Aller en bas 
5 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
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 : 63
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 : 12331
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 : 63
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 : 63
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 : 63
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 : 12331
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 : 72
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 : 12331
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 : 56
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 : 70
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...
» Opérations sur des fichiers PDF

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: