next up previous contents
Siguiente: Operadores relacionales Subir: Operadores básicos Anterior: Operadores básicos   Índice General

Operadores aritméticos

Los lenguajes de programación permiten utilizar los cuatro operadores aritméticos básicos (+, -,*, /). En Ada podemos utilizarlos con cualquier constante o variable de tipo entero o flotante. Podemos mezclar variables de subtipos (ya que son variables del mismo tipo, cuya única diferencia es el margen de valores), pero no podemos mezclar directamente variables de tipos diferentes. Por ejemplo:

         procedure Ejemplo_Operadores is
            Numero : Natural := 3;
            Total  : Integer := 0;
            Maximo : Float;
         begin
            Total  := Total + 4 * Numero;   --  Correcto
            Maximo := 3 * Total;            --  ILEGAL !!
         end Ejemplo_Operadores;

La primera expresión es correcta ya que Ada puede realizar el producto de la constante $4$ por el contenido de la variable natural Número (obteniendo como resultado el número natural 12) y sumarlo con el contenido de la variable entera total, ya que el natural es un subtipo de los enteros. Sin embargo, el resultado de multiplicar Total por la constante entera $3$ no podemos guardarla en la variable Máximo porque es de tipo Float. Si queremos guardar el contenido de una variable entera en una variable float (o viceversa) debemos utilizar la conversión de tipos. Para convertir un tipo numérico en otro tipo numérico debemos anteponer el nombre del tipo resultante y poner entre paréntesis la variable (o expresión) que queremos convertir. Por ejemplo:

            Maximo := Float (3 * Total);    --  Correcto.

El operador numérico abs devuelve el valor absoluto de un valor de tipo Integer o Float3.1

Cuando realizamos la división entre dos enteros, el operador / solamente proporciona la parte entera del cociente. Por ejemplo, 9 / 4 es 2. Los operadores mod (módulo) y rem (remainder) proporcionan el resto de la división. Por ejemplo, 9 mod 4 es 1. Si los dos datos son positivos mod y rem producen el mismo resultado, pero con valores negativos mod da el signo del denominador y rem da el signo del numerador.

El operador de exponenciación se expresa mediante dos asteriscos consecutivos (**). Requiere una base de tipo Integer o Float y un exponente de tipo Integer y retorna un valor del mismo tipo que la base. Por ejemplo:

         procedure Ejemplo_Exponenciacion is
            Numero_1 : Natural;
            Numero_2 : Float;
         begin
            Numero_1 := 3 ** 3;
            Numero_2 := 3.0 ** 3;
         end Ejemplo_Exponenciacion;

Al ejecutar este programa en la variable Numero_1 se guarda el valor natural $9$ y en la variable Número_2 el valor $9.0$.



Notas al pie

...Float3.1
Como es un operador unario, podemos omitir los paréntesis y escribir B := abs A.

next up previous contents
Siguiente: Operadores relacionales Subir: Operadores básicos Anterior: Operadores básicos   Índice General
Javier Miranda 2002-10-03