Régle de précédence
Fermé
oceane36
Messages postés
13
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
6 avril 2013
-
Modifié par oceane36 le 31/12/2011 à 20:37
oceane36 Messages postés 13 Date d'inscription vendredi 3 décembre 2010 Statut Membre Dernière intervention 6 avril 2013 - 3 janv. 2012 à 13:29
oceane36 Messages postés 13 Date d'inscription vendredi 3 décembre 2010 Statut Membre Dernière intervention 6 avril 2013 - 3 janv. 2012 à 13:29
A voir également:
- Régle de précédence
- Regle telephone - Guide
- Gmail regle de classement - Guide
- Regle excel - Guide
- Tableau règles de ponctuation - Guide
- En complément de mon précédent mail ✓ - Forum Windows
4 réponses
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
31 déc. 2011 à 21:39
31 déc. 2011 à 21:39
Je ne comprend pas trop ton problème, étant donné que ces fonctions s'applique directement sur la variable entre parenthèses, donc elles sont à considérer comme un élément unique...
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
2 janv. 2012 à 02:43
2 janv. 2012 à 02:43
L'ordre d'évaluation des différents opérandes dépend des langages.
En C, l'ordre d'évaluation est laissé libre au compilateur qui, en fonction des optimisations demandées, choisira ce qui lui semble le mieux adapté. Ainsi une expression du style:
A ma connaissance, en C, aucune fonction n'est prioritaire par rapport à une autre.
Bonne continuation.
En C, l'ordre d'évaluation est laissé libre au compilateur qui, en fonction des optimisations demandées, choisira ce qui lui semble le mieux adapté. Ainsi une expression du style:
x = f(++x) + g(x);est à proscrire car on ne sera jamais certain du résultat. Par contre, pour ce qui concerne les opérateurs && ou ||, la norme spécifie que l'opérande de gauche doit d'abord être evaluée et ensuite, si nécessaire celui de droite. Il en est de même en Perl, sinon une ligne comme:
open FICHIER or die "FICHIER non trouvé";n'aurait aucun sens.Par contre, en Basic, les deux opérandes des opérateurs logiques (AND, OR, ...) sont systématiquement évalués.
A ma connaissance, en C, aucune fonction n'est prioritaire par rapport à une autre.
Bonne continuation.
oceane36
Messages postés
13
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
6 avril 2013
Modifié par oceane36 le 2/01/2012 à 19:46
Modifié par oceane36 le 2/01/2012 à 19:46
Bonsoir,
Merci infiniment pour vos réponses. Et je suis sincèrement gênée de devoir vous demander encore quelques éclaircissements.
Nicocorico: oui, une fonction et son paramètre forment un tout indissociable. Aussi, les fonctions sont toujours prioritaires sur leurs paramètres entre parenthèses, mais ce que je cherche à comprendre depuis le début, c'est la priorité de la fonction par rapport aux "autres" parenthèses figurant dans l'expression dont je dois calculer le résultat. Dois-je déduire de tes propos ci-dessus que la fonction est égale en terme de priorité aux parenthèses de manière générale (indépendemment de celles qui lui sont associées) et est donc calculée au moment même où elle est rencontrée???
loupius: "En C, aucune fonction n'est prioritaire par rapport à une autre". cela laisse t-il supposer l'existence d'exceptions dans d'autres langages.
Encore MILLE MERCIS pour l'attention que vous m'accordez si aimablement et pour vos encouragements rassurants.
Merci infiniment pour vos réponses. Et je suis sincèrement gênée de devoir vous demander encore quelques éclaircissements.
Nicocorico: oui, une fonction et son paramètre forment un tout indissociable. Aussi, les fonctions sont toujours prioritaires sur leurs paramètres entre parenthèses, mais ce que je cherche à comprendre depuis le début, c'est la priorité de la fonction par rapport aux "autres" parenthèses figurant dans l'expression dont je dois calculer le résultat. Dois-je déduire de tes propos ci-dessus que la fonction est égale en terme de priorité aux parenthèses de manière générale (indépendemment de celles qui lui sont associées) et est donc calculée au moment même où elle est rencontrée???
loupius: "En C, aucune fonction n'est prioritaire par rapport à une autre". cela laisse t-il supposer l'existence d'exceptions dans d'autres langages.
Encore MILLE MERCIS pour l'attention que vous m'accordez si aimablement et pour vos encouragements rassurants.
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 2/01/2012 à 21:56
Modifié par nicocorico le 2/01/2012 à 21:56
2ème fois que ça se produit, après moults essais, impossible de mettre un message de plus de 2 lignes, le sujet est bloqué. je te le met dans ta boite...
oceane36
Messages postés
13
Date d'inscription
vendredi 3 décembre 2010
Statut
Membre
Dernière intervention
6 avril 2013
3 janv. 2012 à 13:29
3 janv. 2012 à 13:29
Salut, Effectivement je te réponds en MP aussi. Encore Merci.
1 janv. 2012 à 01:31
Merci nicocorico pour ta réponse.
Je vais reformuler mon problème d'une façon plus claire.
Si on considère par exemple qu'on a l'expression suivante:
A= abs(x)+(v+z)/(x+y)
L'ordinateur considère t-il que la priorité est aux parenthèses et commece alors par calculer:
R1: v+z .... puis:
R2: x+y
R3: abs(x)
R4: R1/R2
R5: R3+R4
ou bien considère t-il que les fonctions ont la même priorité que les parenthèses et effectue donc le calcul de la façon suivante:
R1: abs(x)
R2: v+z
R3:x+y
R4:R2/R3
R5: R1+R4
...
Et encore MERCI.
Modifié par nicocorico le 1/01/2012 à 10:24
Mais en fait l'ordre du calcul n'est pas déterminé par l'ordinateur (qui se contente de faire ce qu'on lui dit en fait), mais par le compilateur ou la routine qui prend en charge le calcul, donc ta question est plus compliquée qu'on pourrait le croire, et je pense que c'est trop intimement lié au comportement du programme qui traduira la formule pour avoir une réponse certaine.
On peut imaginer par exemple que la décomposition se fasse par une fonction récursive, qui est appelée pour chaque 'binôme' et qui détermine si le calcul entre les 2 est prioritaire sur le précédent ou le suivant, puis effectue le calcul.
Mais en fait cette routine peut calculer le 1er terme abs(x) , faire un appel récursif pour décomposer la suite (v+z)/(x+y) , puis additionner;
ou bien elle peut peut faire le calcul du terme qui la concerne uniquement après avoir fait l'appel récursif, au choix, ce qui inverserait l'ordre de l'ensemble des calculs...
De plus, il est également possible que l'ajout de parenthèses cernant la formule, ne modifiant pas le résultat, modifie le comportement de la routine et donc l'ordre de réduction;
Difficile d'avoir une réponse claire donc !
Le chêne aussi était un gland, avant d'être un chêne
Modifié par oceane36 le 1/01/2012 à 13:16
Merci beaucoup nicocorico. Je constate qu'il est effectivement difficile d'avoir une réponse claire.
Les divers manuels et polycopiés traitant d'Algorithmes et déstinés aux débutants comme moi, simplifient les choses au point où je fus poussée à considérer que le complilateur ne faisait qu'obéir à une méthode de calcul prélablement définie et commune à tous les langages de programmation. Or, je découvre que chaque compilateur est susceptible de générer son propre code machine.
Alors pourquoi se targuer à vouloir nous apprendre cette règle de précédence d'une manière bête et disciplinée à cette étape de notre formation. Où est l'interêt de perdre du temps sur des exercices qui obéissent à une méthode qui n'est qu'à moitié justifiée!!!! Je me demande qu'elle réponse je peux proposer à l'exercice ci-dessus quand je sais qu'en réalité il n'y a point de réponse vraiment claire?!
Encore Merci pour l'aide que tu m'apportes.
1 janv. 2012 à 15:40
Et je pense que ton exercice de précédence ne porte que sur la justesse de l'algorithme et donc du résultat, pas sur la façon de le faire;
Dans ce cas, il t'es sûrement demandé de faire les calculs dans l'ordre en te préoccupant simplement des priorités, donc :
R1: abs(x)
R2: v+z
R3:x+y
R4:R2/R3
R5: R1+R4
Modifié par oceane36 le 2/01/2012 à 01:15
Merci nicocorico.
R1: abs(x). Ceci implique alors que supposant que l'expression (A) est graduellement executée de gauche à droite, je peux considèrer que les fonctions se classent avec les parenthése en terme de "priorité" et non après -dûment que le résultat est le même [sinon on aurait eu R1: v+z.]
Je viens de lire une autre bizarerie sur l'un de mes polycopiés, c'est que parmi toutes les fonctions il y a une qui est considérée comme une "puissance **" et qui prend donc la même priorité que celle-ci... et c'est la fonction SQRT(). Qu'en penses-tu de cette exception à la règle (Personnellement je n'y vois aucun interêt) ??.
Ce cours m'ennuie vraiment et dire que ce n'est qu'une légère introduction à toute une discipline!!!!!
Encore Millle MEERCIS.