Diferencia entre revisiones de «Operadores estándares»
Línea 39: | Línea 39: | ||
* "'''x'''": un [[objeto]] de [[tipo]] numérico. | * "'''x'''": un [[objeto]] de [[tipo]] numérico. | ||
* "'''y'''": un [[objeto]] de [[tipo]] numérico. | * "'''y'''": un [[objeto]] de [[tipo]] numérico. | ||
− | * '''Acción''': equivalente en cuanto a tratamiento '''físico''' de los [[objetos]] al [[operador]] de igualdad. Asigna la parte entera del [[objeto]] de [[tipo]] numérico | + | * '''Acción''': equivalente en cuanto a tratamiento '''físico''' de los [[objetos]] al [[operador]] de igualdad. Asigna la parte entera del [[objeto]] "y" de [[tipo]] numérico al [[objeto]] de [[tipo]] numérico "x". |
* '''Devuelve''': devuelve el propio [[objeto]] "x". | * '''Devuelve''': devuelve el propio [[objeto]] "x". | ||
Revisión del 15:32 14 mar 2012
Dentro del Paradigma eWa, se define un conjunto de operadores estándares que son utilizados de igual manera para cualquiera de los Lenguajes de Programación eWa. Algunos de ellos son los mismos que se utilizan en otros lenguajes de programación (incluso tradicionales), pero existen numerosos operadores propios y algunos que, con la misma sintaxis, producen diferentes resultados.
Generalmente se dividen en grupos dependiendo de su cometido. A su vez, cada grupo se subdivide generalmente en dos, diferenciando los operadores atómicos y los operadores vectoriales que se aplican, respectivamente, a objetos atómicos u conjuntos.
Al crear una clase, se pueden sobrescribir los procedimientos heredados de los operadores estándares.
Sumario
Operadores de asignación
Igual a ("a:A = b:B")
a igual a b
- "a": un objeto del tipo "A".
- "b": un objeto del tipo "B". El tipo "B" puede ser el propio tipo "A".
- Acción: asigna, campo a campo, el valor del objeto "b" al objeto "a".
- Si una propiedad de "b" no existe en "a", no se asigna. Si una propiedad de "a" no existía en "b", se deja como está, es decir, con el valor anterior o el valor por defecto del tipo "A".
- Si se detecta que el objeto "a" es el mismo objeto que el objeto "b" (porque sea el mismo o porque sea un alias), el estándar especifica que se debe ignorar este operador de asignación en tiempo de compilación.
- Si el objeto "a" no existe pero está definido (es una estructura #DEFINED), se crea previamente el objeto "a" de tipo "A".
- Devuelve: devuelve el propio objeto "a" ya modificado.
Idéntico a ("a2:A <=> a1:A")
a2 idéntico a a1
- "a2": un objeto del tipo "A".
- "a1": un objeto del tipo "A".
- Acción: hace que el objeto "a2" sea el mismo (a nivel físico) que el objeto "a1".
- El objeto "a2" no se destruye por defecto, lo que puede generar basura inorgánica si se creó un objeto previamente.
- Devuelve: devuelve el propio objeto "a2", que también es "a1".
Esta operación se puede considerar equivalente a que "a2" pase a ser un alias de "a1".
Clonación de ("a2:A >=< a1:A")
a2 clonación de a1
- "a2": un objeto del tipo "A".
- "a1": un objeto del tipo "A".
- Acción: crea un objeto de tipo "A" que asigna con el alias "a2", para luego hacer que "a2" sea igual a "a1", consiguiendo que finalmente el objeto "a2" sea una copia (clon) independiente del objeto "a1".
- Hay que destacar que el objeto "a2" original no se destruye; por lo tanto, si los dos objetos fueran el mismo (x >=< x) y no tuvieran ningún alias, se perdería la referencia generando basura inorgánica.
- Devuelve: devuelve el propio objeto "a2".
Igual a la parte entera de ("x =/ y")
x igual a la parte entera de y
- "x": un objeto de tipo numérico.
- "y": un objeto de tipo numérico.
- Acción: equivalente en cuanto a tratamiento físico de los objetos al operador de igualdad. Asigna la parte entera del objeto "y" de tipo numérico al objeto de tipo numérico "x".
- Devuelve: devuelve el propio objeto "x".
Operadores aritméticos
Los operadores aritméticos están estandarizados para como interfaz de los objetos de tipo numérico. Son operadores destinados a realizar operaciones entre números o datos que se puedan considerar o tratar como tales.
Aritmética elemental
Estos operadores se centran en las operaciones aritméticas elementales. Todos utilizan:
- "x": un objeto del tipo "A", generalmente numérico.
- "y": un objeto del tipo "B", generalmente numérico.
Más ("x:A + y:B")
x más y
- Devuelve: un nuevo objeto numérico que contenga el valor de sumar "x" con "y".
Menos ("x:A - y:B")
x menos y
- Devuelve: un nuevo objeto numérico que contenga la diferencia de "y" a "x".
Multiplicado por ("x:A * y:B")
x multiplicado por y
- Devuelve: un nuevo objeto numérico que contenga el producto de "x" por "y".
Dividido entre ("x:A / y:B")
x dividido entre y
- Devuelve: un nuevo objeto numérico que contenga el cociente de "x" entre "y". El estándar suele trabajar con precisión infinita, por lo tanto, se puede utilizar una organización en forma de quebrados para no perder la precisión.
Aritmética entera
Generalmente la división entera es una operación que en la informática tradicional se utiliza habitualmente. La idea de las aritmética entera está muy presente en la estandarización de las operaciones aritméticas del Proyecto eWa.
Suma entera con ("x:A +/ y:B")
x suma entera con y
- Devuelve: un nuevo objeto numérico entero que contenga el valor de sumar "x" con "y".
Resta entera con ("x:A -/ y:B")
x resta entera con y
- Devuelve: un nuevo objeto numérico entero que contenga la diferencia de "y" a "x".
Multiplicación entera con ("x:A */ y:B")
x multiplicación entera con y
- Devuelve: un nuevo objeto numérico entero que contenga el producto de "x" por "y".
División entera con ("x:A // y:B")
x división entera con y
- Devuelve: un nuevo objeto numérico entero que contenga el cociente de "x" entre "y".