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

» item_index(résolu)
Transitivité des opérations Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Transitivité des opérations Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Transitivité des opérations Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Transitivité des opérations Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Transitivité des opérations Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Transitivité des opérations Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Transitivité des opérations Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Transitivité des opérations Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Transitivité des opérations Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Transitivité des opérations Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Transitivité des opérations Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Transitivité des opérations Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Transitivité des opérations Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Transitivité des opérations 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 : -26%
Bosch BBS8214 Aspirateur Balai Multifonction sans fil ...
Voir le deal
249.99 €

 

 Transitivité des opérations

Aller en bas 
3 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2709
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 : 12299
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 : 55
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 : 12299
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 : 55
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 : 12299
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 : 55
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 : 12299
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: