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.
Transitivité des opérations Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Transitivité des opérations Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Transitivité des opérations Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Transitivité des opérations Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Transitivité des opérations Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Transitivité des opérations Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Transitivité des opérations Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Transitivité des opérations Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Transitivité des opérations Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Transitivité des opérations Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Transitivité des opérations Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Transitivité des opérations Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Transitivité des opérations Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Transitivité des opérations Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Transitivité des opérations 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 :
Boutique Nike : -25% dès 50€ sur TOUT le ...
Voir le deal

 

 Transitivité des opérations

Aller en bas 
3 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Transitivité des opérations Empty
MessageSujet: Transitivité des opérations   Transitivité des opérations EmptyMer 6 Avr 2011 - 23:18

Essayez cela :
Code:
print 4/22*100
print 4*100/22
Le premier donne : 0.00181818181818182
et le second donne: 18.18181818182

Dites-moi : c'est moi qui suis très fatigué
ou bien il y a un bug sur la dernière version ?
(il s'agit de la 09.21i4)
???????????
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyMer 6 Avr 2011 - 23:45

Essaie ceci:
Code:
print (4/22)*100
print 4*100/22

!!!!!!!!!!!!!!!!
Il y a manifestement un bug...
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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyMer 6 Avr 2011 - 23:54

C'est pour cette raison que j'utilise (de manière excessive peut être) les parenthèses...
il n'y a pas d'ambiguïté. la lecture de gauche à droite ne marche pas de ce cas :

La multiplication est prioritaire par rapport à la division :
print 4 / 22 * 100
revient à écrire :
print 4 / (22 * 100)
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyJeu 7 Avr 2011 - 0:18

A l'évidence, c'est le cas, mais cela ne correspond pas aux règles mathématiques. Multiplication et division doivent avoir la même priorité, et donc s'exécuter de gauche à droite, tout comme addition et soustraction. Car dans l'exemple 4/(22*100), cela revient à transformer la multiplication en division: 4/22/100. Cela devrait être modifié.
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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyJeu 7 Avr 2011 - 0:27

Je ne connais pas les ordres de priorité des opérateurs en delphi mais je suppose que cela doit être normalisé quelque soit le langage.
En C cela donne :
* , / , %(modulo), +, -,

Mais il doit y avoir quand même un problème car si on se réfère à la liste ci-dessus,
print 7 - 2 + 5
devrait donner 0 ce qui n'est pas le cas...

confused

Edit : perso, je trouve que les parenthèses offrent pas mal d'avantage :
pas d'ambiguite et on gagne en lisibilité...

[Parenthèse] Wink
Pour revenir à un vieux post :
Je ne comprend pas qu'il faut faire a% = int(a%/2) (chose qui me parait redondant) et qu'à côté de ça on utilise pas les parenthèses.
Pourquoi être rigoureux à l'extrême dans un cas et pas dans l'autre ?...
[/Parenthèse]
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyJeu 7 Avr 2011 - 1:30

En Delphi, il y a une longue liste des priorités des opérations. * et / ont la même priorité, et + et - également, mais la priorité de ces dernières est inférieure aux premières. Ceci donne:
2+3*5-4/2
se calcule comme
(2+(3*5))-(4/2)
et produit ainsi le résultat escompté, soit 15.

En Panoramic, dans le cas de
a% = int(a%/2)
le calcul se déroule de la manière suivante:
a% = round(int(float(a%)/2.0))
si tu omets le int():
a% = 3
a% = a%/2
alors Panoramic calcule
a% = round(3.0) : ' résultat: 3
a% = round(float(a%)/2.0) : résultat: 2 car float(a%)/2.0 donne 1.5, ce qui donne 2 en arrondissant.
Il faut savoir (communication de Jack) que Panoramic ne CONNAIT PAS la représentation interne des entiers sur 32 bits, dans les calculs. Cette représentation eciste UNIQUEMENT pour le stockage final en mémoire, et c'est pour cela qu'un ROUND implicite est effectué chaque fois qu'on fait a%=...

Mais revenons à nos priorités des opérateurs: on devrait avoir les priorités suivantes:
priorite(*) = priorité(/) > priorité(+) = priorité(-)
Toute autre règle constitue une anomalie aux conventions normales de priorités des opérations en arithmétique, et devrait être documentée dans Panoramic, ce qui n'est pas le cas. Donc, soit il faut mettre à jour la doc, soit il faut corriger la priorité.
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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyJeu 7 Avr 2011 - 1:51

Je suis d'accord avec toi:
la doc aurait besoin d'une petite mise à jour sur ce sujet.
Quand au entier, je comprend très bien tes explications,
mais au final, je ne comprend toujours pas pourquoi il existe le type entier en Panoramic puisqu'en interne c'est des floats...
Il y a une subtilité qui m'echappe... Neutral
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations EmptyJeu 7 Avr 2011 - 9:03

Je pense que les variables a% existent en Panoramic parce que cela est un élément important de tous les langages Basic, tout comme les variables $. Mais Jack a certainement jugé inutile de développer deux arithmétiques indépendantes, une pour flottants et une pour entiers.

J'aurais peut-être une suggestion à faire à Jack: on pourrait peut-être imaginer une directive du type #ROUND_TO INTEGER_OFF/ON qui instruirait le compilateur de tronquer/arrondir lors de la conversion de flottant en entier, avec #ROUND_TO_INTEGER_ON par défaut. On pourrait aussi imaginer un tout nouveau menu dans le compilateur qui serait "Propriétés", comme cela existe dans d'autres logiciels de ce genre, dans lequel on pourrait sélectionner des options du genre:
Tronquer flottant vers entier Oui/Non défaut: Non
Répertoire par défaut pour FILE_OPEN, FILE_LOAAD, ...: répertoire du *.EXE/répertoire du *.BAS
Palette de couleurs par défaut
etc
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Transitivité des opérations Empty
MessageSujet: Re: Transitivité des opérations   Transitivité des opérations Empty

Revenir en haut Aller en bas
 
Transitivité des opérations
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Opérations sur des fichiers PDF
» Opérations de repérage sur un SYNEDIT
» Bug avec la priorité des opérations arithmétiques ?
» Erreur dans la priorité des opérations
» Encore un mystère, mais avec les 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: