Expresiones y operadoresLuis Fernando Gómez Casillas
Que es expresion
• Una expresión es una combinación de operadores y
operandos de cuya evaluación se obtiene un valor.
Los operandos pueden ser nombres que denoten
objetos variables o constantes, funciones, literales
de cualquier tipo adecuado de acuerdo con los
operadores u otras expresiones más simples. La
evaluación de una expresión da lugar a un valor de
algún tipo, una expresión se dice que es del tipo de
su resultado. Ejemplos de expresiones:
Ejemplos de expresion
• a + 5*b(a >= 0) and ((b+5) > 10)a-a * 2 + b-b +
sqrt(b**2 - 4*a*c) length(s) > 0
Que es un operador
• Ada agrupa los operadores en 6 categorías, de
menor a mayor precedencia. Los operadores
binarios se usan en formato infijo
(<operando_izquierdo> <operador>
<operando_derecho>), como en "a + b". Los
operadores unarios se usan en formato prefijo
(<operador> <operando> ), como en "-5".
Operadores logicos
• Están predefinidos para cualquier tipo, T, que
designe un booleano, modular o un array
monodimensional de componentes booleanos:
• function "and"(Left, Right : T) return Tfunction
"or" (Left, Right : T) return Tfunction "xor"(Left,
Right : T) return T
Operadores relacionales
• Los operadores de igualdad están predefinidos para
todos los tipos no limitados. Sea T un tipo con estas
características:
• function "=" (Left, Right : T) return
Booleanfunction "/="(Left, Right : T) return
Boolean
Operadores binarios de
adicion
• Los operadores de adición predefinidos para
cualquier tipo numérico, T, son:
• function "+"(Left, Right : T) return T function "–
"(Left, Right : T) return T
Operadores unarios de
adicion
• Los operadores unarios de adición predefinidos
para cualquier tipo númerico, T, son la identidad y la
negación:
• function "+"(Right : T) return T function "–"(Right
: T) return T
• Ejemplo de uso en expresiones (sean A y B de tipo
T):
• B := -A;
Operadores multiplicativos
• Los operadores de multiplicación y división están predefinidos entre diversas combinaciones de enteros y reales:
• function "*" (Left, Right : T) return T function "/" (Left, Right : T) return T function "*"(Left : T; Right : Integer) return T function "*"(Left : Integer; Right : T) return T function"/"(Left : T; Right : Integer) return Tfunction "*"(Left, Right : root_real) return root_real function "/"(Left, Right : root_real) return root_real function "*"(Left : root_real; Right : root_integer) return root_realfunction "*"(Left : root_integer; Right : root_real) return root_real function "/"(Left : root_real; Right : root_integer) return root_realfunction "*"(Left, Right : universal_fixed) return universal_fixed function "/"(Left, Right: universal_fixed) return universal_fixed
Operadores de máxima
prioridad
• Los operadores de máxima prioridad son: el operador de cálculo del valor absoluto, definido para cualquier tipo numérico, T1, el operador de negación lógica, definido para cualquier tipo booleano, modular o arraymonodimensional de componentes booleanos, T 2, y el operador de exponenciación, definido para cualquier tipo entero, T3, o para cualquier tipo real en coma flotante, T4. Cada uno, de acuerdo con las siguientes especificaciones:
• function "abs"(Right : T) return Tfunction "not"(Right : T) return Tfunction "**"(Left : T; Right : Natural) returnTfunction "**"(Left : T; Right : Integer'Base) return T
Sobrecarga de operadores
• Ada permite que el programador sobrecargue los
operadores del lenguaje, esto es, que pueda
redefinirlos dándoles nuevos significados. Para
sobrecargar un operador, simplemente hay que
definir una función cuyo nombre sea el operador
entre comillas y que tenga los parámetros
adecuados. Por ejemplo, dado el siguiente tipo:
• type Complejo is record PReal, PImag:
float;end record;
Top Related