Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

règle de précédence (priorité des opérateurs)

Posté par
oceane36
31-12-11 à 21:11

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. Ceci dit, le problème qui se pose et que je n'arrive pas à 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.

Posté par
jtorresm
re : règle de précédence (priorité des opérateurs) 31-12-11 à 21:36

Salut.

Par exemple: sqrt(x² - 1)

On calcule d'abord les parenthéses: x² - 1

Après on extrait la racine carrée.

sqrt(x²)-1

On calcule x²
On calcule la racine carrée
On retranche 1.

Johnny

Posté par
Bachstelze
re : règle de précédence (priorité des opérateurs) 01-01-12 à 00:26

Bonjour

Juste pour préciser quelque chose :

Citation :
est-ce qu'elles sont exécutées au même temps que les parenthèses ou après celles-ci.


Un ordinateur ne sait pas exécuter deux opérations d'un même programme "en mêem temps". Obligatoirement, c'est après ou avant. En l'occurrence, quand on a une fonction, on calcule d'abord la valeur des arguments, puis on appelle la fonction avec les valeurs qui conviennent.

Posté par
oceane36
Clarification 01-01-12 à 01:20


Re

Merci à Johnny ainsi qu'à Bachstelze d'avoir bien voulu me répondre.

Concernant Jhonny, je n'ai pas saisi pourquoi avoir retirer le (-1) d'entre les parentheses de la fonction et n'avoir gardé que le x². c'est à dire:
A= sqrt(4-1) est-il équivalent à sqrt(3)=1.73 ou bien à : A= sqrt(4)-1 =1 ????

Concernant Bachstelze, Merci pour la remarque judicieuse, effectivement le traitement se fait de gauche à droite elément par élément, mais ce que je voulai dire et que si on a  l'expreesion mathématique 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
...

Encore Merci pour l'attention que vous m'accordez.

Posté par
Bachstelze
re : règle de précédence (priorité des opérateurs) 01-01-12 à 01:28

Tout dépend du langage. En C par exemple, l'ordre dans lequel les opérations sont effectuées dépend de l'ordre dans lequel elles apparaissent dans le code machine généré par le compilateur; et en l'occurrence, le compilataur a le droit de générer du code machine qui effectue les opérations dans l'ordre qu'il veut, du moment que ça ne change pas le résultat.

Posté par
oceane36
Merci Bachstelze 01-01-12 à 01:58

Merci beaucoup Bachstelze. Maintenant tout s'explique: tout dépend du code machine généré par le compilateur, dûment que le résultat soit exact. C'est pour cela que  je m'étonnais cet après-midi devant un policopié traitant du Visual Basic et où l'auteur affirmait que les fonctions sont considérées de la même manière que les parenthèses, tandis que son confrère traitant du Matlab soutenait qu'elles arrivaient en priorité n°2.  

Encore Mille MERCIS pour l'attention et le temps que vous m'avez aimablement offerts.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !