Opérateurs de comparaisons

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut,

Je co-écris actuellement un cours de C++, et une question m'est venue, concernant non pas le C++ mais les maths : les opérateurs de comparaison égal, non égal, supérieurs (strict et large), et inférieurs (strict et large) sont-ils bien les seuls opérateurs de comparaison en maths ? Comme ça, ça peut paraître bête comme question, mais je veux être sur de ne pas écrire de choses fausses.

Merci d'avance !

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+1 -0
Staff

Cette réponse a aidé l'auteur du sujet

Je ne pense pas que la dénomination « opérateur de comparaison » soit la plus courante, je parlerai plutôt de « relation d'ordre ».

Et, non, il y a de très, très, multiples relations d'ordres.

Par exemple, une relation un peu exotique : https://fr.wikipedia.org/wiki/Théorème_de_Charkovski

Édité par Holosmos

Ce n’est pas en répétant « Hom, Hom », qu’on démontre des théorèmes sérieux - Siegel Mon Twitter

+2 -0
Auteur du sujet

Merci de ta réponse, Holosmos. Je vais donc dire que toutes les relations d'ordre mathématiques courantes existent en C++. Ceci est-il correct ?

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Ah mais du coup ça incluerait aussi ET, OU,…
Et puis parler de binaire dans un cours d'info, ça porte à confusion.
Je dirais inutile d'aller chercher le terme mathématique exact, c'est un cours d'info, pas de maths. Ca sert à comparer des nombres, donc opérateurs de comparaison irait très bien, c'est compréhensible. Inutile de dire que "tous sont présents", vu qu'il n'y en a pas beaucoup, tu vas tous les citer de toute façon.

Staff

Je dirais inutile d'aller chercher le terme mathématique exact, c'est un cours d'info, pas de maths. Ca sert à comparer des nombres, donc opérateurs de comparaison irait très bien, c'est compréhensible.

Bien sûr. Je disais ça au passage. Je connais pas plus juste comme dénomination mathématique, c'est tout.

Édité par Holosmos

Ce n’est pas en répétant « Hom, Hom », qu’on démontre des théorèmes sérieux - Siegel Mon Twitter

+2 -0

Pas la peine de se compliquer la vie avec du formalisme mathématique, dire que les opérateurs de comparaison courants sont présents, c'est parfaitement correct ici. Ca tient plus de la définition d'opérateur (operator machin) que des maths (l'opérateur de déférencement n'a aucun "sens utile" en mathématique, ni celui de résolution des noms).

+0 -0

Cette réponse a aidé l'auteur du sujet

La notion de comparaison est fortement liee a ce que l'on compare.

En l'occurrence, en C++ tu as des types informatiques qui sont une projection plus ou moins fiable des ensembles mathematiques. Par exemple, les nombres entiers sont representes via l'arithmetique modulaire, les nombres reels sont representes par l'arithmetique flottante.

Ces types informatiques possedent des operateurs eux aussi informatiques (leurs regles sont differentes. Par exemple, l'operation d'addition des flottants n'est pas commutative associative).

La question 'les operateurs mathematiques sont-ils les meme en C++ et en mathematiques' n'as pas vraiment de sens. Le corps $(\mathbb{R}, +, \times )$ est different du corps des flottants $(\mathcal{F}, +, \times )$ par exemple. Sur papier, rien ne t'empeche de travailler avec l'un ou l'autre. En informatique, on ne peut representer en memoire l'ensemble $\mathbb{R}$ et donc on se contente en general de travailler sur $(\mathcal{F}, +, \times )$ ou sur tout autre corps possedant des proprietes interessantes, proche de $(\mathbb{R}, +, \times )$.

En particulier en C++, les POD arithmetiques implementent les operations sur $(\mathcal{F}, +, \times )$. Si a supposer que par 'operateurs de comparaison mathematiques' tu voulais faire reference implicitement aux operateurs sur l'ensemble des nombres reels, alors la reponse est: le C++ n'en dispose d'aucun puisque le C++ travaille nativement sur le corps des flottants.

Édité par KFC

+2 -0
Auteur du sujet

C'est vrai, mais en fait c'était juste pour placer le débutant en terrain connu pour qu'il soit à l'aise.

(par contre, en quoi l'opération d'addition des flottants n'est pas commutative ? float1 + float2 == float2 + float1 il me semble ?)

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Cette réponse a aidé l'auteur du sujet

C'est vrai, mais en fait c'était juste pour placer le débutant en terrain connu pour qu'il soit à l'aise.

(par contre, en quoi l'opération d'addition des flottants n'est pas commutative ? float1 + float2 == float2 + float1 il me semble ?)

mehdidou99

Bien sur, ma remarque est technique et peu d'utilisateurs feront de toute maniere du calcul numerique assez pousse pour rencontrer ce genre de problematiques. Ceci dit, ta question etait aussi plus ou moins technique.

Pour l'arithmetique, je voulais bien evidemment dire associative (et distributive). La commutativite n'est pas assuree par le standard C++ car il n'impose pas le respect de l'IEEE 754, mais au final je suppose que tres peu de materiel n'ont pas d'operation sur les flottants qui soit commutative.

Édité par KFC

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte