matina
Newbiiiie
![Newbiiiie Newbiiiie](images/rangs/1.gif)
Messages: 2
|
Posté le:
Sam 31 Déc 2011 - 21:58 |
![Répondre en citant Répondre en citant](templates/webigv3/images/lang_french/icon_quote.gif) ![Revenir en haut Revenir en haut](templates/webigv3/images/icon_up.gif) |
Bonjour,
Je suis débutante en programmation. et je viens d'avoir affaire au cours concernant la priorité relative aux opérateurs. Bref en mathématiques c'est simple:
n°1/ ()
n°2/ ** alias ^
n°3/ *, /
n°4) +,-
Mais en informatique il y a quelques nouveaux intrus: par exemple \ et mod qui viennent s'insérer respectivement entre le n° 3 et le 4. Il me reste que je n'arrive à saisir l'ordre que prennent les fonctions( abs, sqrt, sin, tan...), est-ce qu'elles sont exécutées au même temps que les parenthèses ou après celles-ci.
Je vous serai très reconnaissante si vous pouviez m'éclairer sur ce point. |
|
|
floriannn
Forumeur occasionnel
![Forumeur occasionnel Forumeur occasionnel](images/rangs/2.gif)
Messages: 22
|
Posté le:
Dim 01 Jan 2012 - 18:10 |
![Répondre en citant Répondre en citant](templates/webigv3/images/lang_french/icon_quote.gif) ![Revenir en haut Revenir en haut](templates/webigv3/images/icon_up.gif) |
Salut,
C'est un peu comme en maths avec les fonctions de type f(x). Imaginons l'expression :
Code: |
maVariable1 := 2;
4 + maVariable1 * (sqrt(9) * 2) |
En mémoire, on a (en gros) :
Code: |
4 + 2 * (sqrt(9) * 2) |
On commence par le calcul de parenthèse, vu qu'elle a la plus grande priorité. Sauf qu'on va avoir du mal à calculer sqrt(9)*2, vu qu'on ne sait pas quelle est la valeur de sqrt(9). Pour pouvoir calculer la valeur de l'expression, on a donc besoin de connaître la valeur de sqrt(9), et donc, d'exécuter la fonction. Ce qui nous donne :
On connaît maintenant tous les membres de la parenthèse, donc on peut effectuer son calcul :
Priorité suivante : la multiplication, donc on calcule 2 * (6) :
Pour finir, on fait l'addition :
____________
Dans ce cas précis, on donne donc la priorité à la fonction. Par contre, il y a un cas où c'est plus vague où ça dépend du compilateur. Par exemple :
Code: |
sqrt(9) + 2 * (4 * 2) |
On commence par le calcul de parenthèse, vu qu'elle a la plus grande priorité. On calcule donc 4*2 :
Priorité suivante : la multiplication, donc on calcule 2 * (8 ) :
Pour finir, on fait l'addition, mais on ne connaît pas la valeur de sqrt(9), donc on va avoir du mal à faire le calcul. On a donc besoin de connaître la valeur de sqrt(9), et donc, d'exécuter la fonction. Ce qui nous donne :
On peut enfin faire l'addition :
____________
Dans cet exemple, on a choisi d'exécuter la fonction que lorsque l'on avait vraiment besoin de connaître sa valeur. Cependant, on aurait très bien pu décider de procéder autrement, en calculant d'abord la valeur de sqrt(9), puis en effectuant les opérations suivantes (donc : calcul de fonction, puis calcul de la parenthèse, puis multiplication, et enfin addition !).
Donc, tout dépend du compilateur et du langage choisis, mais au final, ça a peu d'importance, le principal étant d'obtenir le bon résultat, quelle que soit l'implémentation retenue.
J'espère avoir répondu à ton interrogation. |
|
|