Anar al contingut

Operador relacional

De L'Enciclopèdia, la wikipedia en valencià

En ciències de la computació, un operador relacional és una construcció d'un llenguage de programació o un operador que comprova o definix algun tipo de relació entre dos entitats. Inclouen l'igualtat numèrica (com per eixemple, 5 = 5) i les desigualtats (com per eixemple, 4 ≥ 3).

En els llenguages de programació que inclouen un tipo de senya llògica distint en el seu sistema de tipos, com Pascal, Ada o Java, estos operadors generalment s'evaluen com a verdader o fals, depenent de si la relació condicional entre els dos operants es complix o no. En llenguages com C, els operadors relacionals tornen els número entero 0 o 1, a on 0 representa fals i qualsevol valor distint de zero representa verdader.

Una expressió creada utilisant un operador relacional forma lo que es denomina una expressió relacional o una condició. Els operadors relacionals poden vore's com a casos especials de predicats llògics.

Igualtat

[editar | editar còdic]

L'igualtat s'utilisa en moltes construccions de llenguages de programació i tipos de senyes. S'ampra per a provar si un element ya existix en un conjunt, o per a accedir a un valor a través d'una clau. S'utilisa en selecció de casos per a enviar el fluix de control a la branca correcta i durant el procés d'unificació en programació llògica.

Un possible significat de l'igualtat és que "si a és igual a b, llavors a o b poden usar-se indistintament en qualsevol context sense notar cap diferència". Pero esta afirmació no necessàriament es complix, particularment quan es té en conte la mutabilidad junt en l'igualtat del contingut.

Igualtat d'ubicació front a igualtat de contingut

[editar | editar còdic]

A voltes, particularment en programació orientada a objectes, la comparació planteja preguntes sobre tipos de senyes i herència, igualtat i identitat. A sovint és necessari distinguir entre:

  • Dos objectes diferents del mateix tipo, per eixemple, dos mans
  • Dos objectes iguals pero distints, per eixemple, dos billets de 10 dólars
  • Dos objectes iguals pero en representació diferent, per eixemple, un billet d'1 dólar i una moneda d'1 dólar
  • Dos referències diferents al mateix objecte, per eixemple, dos renoms per a la mateixa persona

En molts llenguages de programació moderns, s'accedix a objectes i estructures de senyes a través de referències. En tals llenguages, sorgix la necessitat de comprovar dos tipos diferents d'igualtat:

  • Igualtat d'ubicació (identitat): si dos referències (A i B) fan referència al mateix objecte. Les interaccions en l'objecte a través de sò indistinguibles de les mateixes interaccions a través de B i, en particular, els canvis en l'objecte a través des reflectixen a través de B.
  • Igualtat de contingut: si els objectes referenciados per dos referències (A i B) són equivalents en algun sentit:
  • Igualtat estructural (és dir, els seus continguts són iguals) que pot ser superficial (comprovar solament subpartes immediates) o profunt (comprovar l'igualtat de subpartes de forma recursiva). Una forma senzilla de conseguir-ho és per mig de l'igualtat representacional: comprovant que els valors tinguen la mateixa representació.
  • Alguna atra igualtat feta a mida, preservant el comportament extern. Per eixemple, 1/2 i 2/4 es consideren iguals quan es consideren número racional. Un possible requisit seria que "A = B si i solament si totes les operacions sobre els objectes A i B tindran el mateix resultat", ademés de reflexividad, simetria i transitividad.


El primer tipo d'igualtat sol implicar el segon (llevat coses com "no és un número" (NaN) que no són iguals a sí mateixes), pero ho contrarie no és necessàriament cert. Per eixemple, dos objectes com cadenes de caràcters poden ser objectes distints (desiguals en el primer sentit) pero contindre la mateixa seqüència de caràcters (iguals en el segon sentit). Consulte's identitat per a obtindre més informació sobre este problema.

Els número real, incloses moltes fracciones simples, no es poden representar exactament en menge flotant i pot ser necessari provar l'igualtat dins d'una tolerància determinada. No obstant, dita tolerància pot trencar fàcilment propietats desijades com la transitividad, mentres que la reflexividad també es trenca: l'estàndart de menge flotant IEEE requerix que "NaN ≠ NaN" es complixca. Pel contrari, l'estàndart privat aritmètic per a úmeros en format posit (2022) (els promotors de la proposta pretenen reemplaçar els valors de menge flotant IEEE) té un concepte similar, NaR (Not a Real), a on es complix NaR = NaR.[1]

Atres elements de programació, com les funcions computables, poden no tindre cap sentit d'igualtat o tindre una igualtat que no siga computable. Per estes raons, alguns llenguages definixen una noció explícita de "comparable", en forma de classe base, interfaç, traça o protocol, que s'utilisa explícitament, per mig de declaració en el còdic font, o implícitament, a través de l'estructura del tipo involucrat.

Comparació de valors de diferents tipos

[editar | editar còdic]

En JavaScript, PHP, VBScript i alguns atres llenguages escrits dinàmicament, l'operador d'igualtat estàndar s'evalua com "verdader" si dos valors són iguals, inclús si tenen tipos diferents, lo que fa que el número 4 es compare en la cadena de text "4", per eixemple. En dits llenguages també sol estar disponible un operador d'igualtat escrit que torna verdader sol per a valors en tipos idèntics o equivalents (en PHP, 4=== "4" és fals encara que 4== "4" és verdader).[2][3] Per a llenguages de programació en els que el número 0 pot interpretar-se com "fals", este operador pot simplificar coses com verificar zero (ya que x== 0 seria verdader si x fora tant 0 com "0", utilisant l'operador d'igualtat independent del tipo).

Ordenació

[editar | editar còdic]

La comparació "major que" i "menor que" de senyes no numèriques es realisa d'acort en una convenció de classificació (com, per a les cadenes de text, l'orde lexicogràfic) que pot estar integrada en el llenguage de programació i/o ser configurable per mig de programació.

Quan es desija associar un valor numèric en el resultat d'una comparació entre dos elements de senyes, digam a i b, la convenció habitual és assignar −1 si a < b, 0 si a = by 1 si a > b. Per eixemple, la funció C cadenes de text en C realisa una comparació a tres sentits i torna −1, 0 o 1 segons esta convenció, i qsort espera que la funció de comparació torne valors segons esta convenció. En algoritmes d'ordenament, l'eficiència del còdic de comparació és fonamental, ya que és un dels principals factors que contribuïxen al rendiment de la classificació.


La comparació de tipos de senyes definits pel programador (per als que el llenguage de programació no té comprensió incorporada) es pot portar a terme per mig de funcions de biblioteca o escrites a mida (com la strcmp mencionada anteriorment) o, en alguns llenguages, per mig de sobrecarrega d'un operador de comparació, és dir, que assigna un significat definit pel programador que depén dels tipos de senyes que es comparen. Una atra alternativa és utilisar alguna convenció, com la comparació entre membres.

Vore també

[editar | editar còdic]

Referències

[editar | editar còdic]


Referències

[editar | editar còdic]