• No se han encontrado resultados

Operadores aritméticos y precedencia de operadores

In document Programacion Java (página 73-78)

Una de las características más importantes de una computadora es su habilidad para calcular. Se pueden utilizar los operadores aritméticos estándar para manipular tipos de datos integrales y de punto flotante.

Java tiene cinco operadores aritméticos:

Operadores aritméticos: + (adición), - (sustracción o negación), * (multiplicación), / (divi- sión), % (mod, (módulo o residuo))

Se pueden utilizar estos operadores con tipos de datos integrales y de punto flotante. Cuando se utiliza / con el tipo de datos integrales, proporciona el cociente en forma entera. Es decir, la división integral trunca cualquier parte fraccional; no hay redondeo. De manera similar, cuando se utiliza

% con el tipo de datos integrales, proporciona el residuo en forma integral. (Los ejemplos 2-2 y 2-3 clarifican cómo funcionan los operadores / y % con tipos de datos integrales y de punto flotante.) Es probable que desde la secundaria haya trabajado con expresiones aritméticas como las si- guientes: (i) -5 (ii) 8 - 7 (iii) 3 + 4 (iv) 2 + 3 * 5 (v) 5.6 + 6.2 * 3 (vi) x + 2 * 5 + 6 / y

En la expresión (vi), x y y son algunos valores desconocidos. De manera formal, una expre-

sión aritmética se construye empleando operadores aritméticos y números. Los números y

los símbolos alfabéticos en la expresión se denominan operandos. Además, los números y los símbolos alfabéticos utilizados para evaluar un operador se denominan los operandos para ese operador.

En la expresión (i), el operador - (sustracción) se utiliza para especificar que el número 5 es negativo. Además, en la expresión -5, - tiene sólo un operando, que es 5. Los operadores que únicamente tienen un operando se denominan operadores unarios.

En la expresión (ii), el símbolo - se utiliza para restar 7 a 8. En esta expresión, - tiene dos ope- randos, 8 y 7. Los operadores que tienen dos operandos se denominan operadores binarios.

Operador unario: operador que sólo tiene un operando. Operador binario: operador que tiene dos operandos.

Operadores aritméticos y precedencia de operadores | 37

2

En la expresión (iii), 3 y 4 son los operandos para el operador +. Debido a que el operador +

tiene dos operandos, en esta expresión, + es un operador binario. Ahora considere la siguiente expresión:

+27

En esta expresión, el operador + se utiliza para indicar que el número 27 es positivo. Aquí, debido a que + tiene sólo un operando, actúa como un operador unario.

De la explicación anterior, se concluye que - y + pueden ser operadores aritméticos unarios o binarios. Sin embargo, los operadores aritméticos *, / y % son binarios y deben tener dos operandos.

Los siguientes ejemplos muestran cómo funcionan los operadores aritméticos; en especial / y

%, con los tipos de datos integrales. Como se puede ver en estos ejemplos, el operador / repre- senta el cociente en la división ordinaria cuando se utiliza con tipos de datos integrales.

E J E M P L O 2 - 2 EXAMPLE 2-1

Expresión

aritmética Resultado Descripción

2 + 5 7

13 + 89 102 34 - 20 14 45 - 90 -45 2 * 7 14

5 / 2 2 En la división 5 / 2, el cociente es 2 y el residuo es 1. Por tanto, 5 / 2 con los operandos integrales se evalúa al cociente, el cual es 2.

14 / 7 2 En la división 34 / 5, el cociente es 6 y el residuo es 4. Por tanto, 34 % 5 se evalúa al residuo, que es 4.

34 % 5 4

4 % 6 4 En la división 4 / 6, el cociente es 0 y el residuo es 4. Por tanto, 4% 6 se evalúa al residuo, que es 4.

El siguiente programa en Java evalúa las expresiones anteriores:

// Este programa ilustra como se evaluan las expresiones integrales.

public class Example2_2 {

public static void main(String[] args) {

System.out.println("2 + 5 = " + (2 + 5)); System.out.println("13 + 89 = " + (13 + 89)); System.out.println("34 - 20 = " + (34 - 20)); System.out.println("45 - 90 = " + (45 - 90));

System.out.println("2 * 7 = " + (2 * 7)); System.out.println("5 / 2 = " + (5 / 2)); System.out.println("14 / 7 = " + (14 / 7)); System.out.println("34 % 5 = " + (34 % 5)); System.out.println("4 % 6 = " + (4 % 6)); } }

Ejecución del ejemplo:

2 + 5 = 7 13 + 89 = 102 34 - 20 = 14 45 - 90 = -45 2 * 7 = 14 5 / 2 = 2 14 / 7 = 2 34 % 5 = 4 4 % 6 = 4

NOTA Se debe tener cuidado al evaluar el operador mod con operandos de enteros negativos. Puede que no se obtenga la respuesta esperada. Por ejemplo, –34 % 5 = -4, ya que en la divi- sión -34 / 5, el cociente es -6 y el residuo es -4. De manera similar, 34 % -5 = 4, dado que en la división -34 / 5, el cociente es –6 y el residuo es 4. Además, -34 % -5 = -4, debido a que en la división -34 / -5, el cociente es 6 y el residuo es -4.

E J E M P L O 2 - 3 EXAMPLE 2-1

El siguiente programa en Java evalúa varias expresiones de punto flotante. (Los detalles se dejan como ejercicio.)

// Este programa ilustra como se evaluan las expresiones de punto // flotante.

public class Example2_3 {

public static void main(String[] args) { System.out.println("5.0 + 3.5 = " + (5.0 + 3.5)); System.out.println("3.0 + 9.4 = " + (3.0 + 9.4)); System.out.println("16.4 - 5.2 = " + (16.4 - 5.2)); System.out.println("4.2 * 2.5 = " + (4.2 * 2.5)); System.out.println("5.0 / 2.0 = " + (5.0 / 2.0)); System.out.println("34.5 / 6.0 = " + (34.5 / 6.0)); System.out.println("34.5 % 6.0 = " + (34.5 % 6.0)); System.out.println("34.5 / 6.5 = " + (34.5 / 6.5)); System.out.println("34.5 % 6.5 = " + (34.5 % 6.5)); } }

Operadores aritméticos y precedencia de operadores | 39

2

Ejecución del ejemplo:

5.0 + 3.5 = 8.5 3.0 + 9.4 = 12.4 16.4 - 5.2 = 11.2 4.2 * 2.5 = 10.5 5.0 / 2.0 = 2.5 34.5 / 6.0 = 5.75 34.5 % 6.0 = 4.5 34.5 / 6.5 = 5.3076923076923075 34.5 % 6.5 = 2.0

Orden de precedencia

Cuando en una expresión se utiliza más de un operador aritmético, Java utiliza las reglas de pre- cedencia de operadores para determinar el orden en que las operaciones se realizan para evaluar la expresión. De acuerdo con las reglas del orden de precedencia para operadores aritméticos:

*, /, %

tienen un nivel de precedencia mayor que:

+, -

Observe que los operadores *, / y % tienen el mismo nivel de precedencia. De manera similar, los operadores + y - tienen el mismo nivel de precedencia.

Cuando los operadores aritméticos tienen el mismo nivel de precedencia, las operaciones se realizan de izquierda a derecha. Para evitar confusión se pueden utilizar paréntesis para agrupar expresiones aritméticas.

E J E M P L O 2 - 4 EXAMPLE 2-1

Uso de las reglas del orden de precedencia,

3 * 7 - 6 + 2 * 5 / 4 + 6

significa lo siguiente:

(((3 * 7) - 6) + ((2 * 5) / 4)) + 6 = ((21 - 6) + (10 / 4)) + 6 (Evalua *)

= ((21 - 6) + 2) + 6 (Evalua /. Observe que esta es una division de enteros).

= (15 + 2) + 6 (Evalua -)

= 17 + 6 (Evalua primero +)

= 23 (Evalua +)

Debido a que los operadores aritméticos se evalúan de izquierda a derecha, a menos que haya paréntesis, la asociatividad de los operadores aritméticos se dice que es de izquierda a derecha.

NOTA Aritmética de caracteres: como el tipo de dato char también es un tipo de dato integral, Java permite realizar operaciones aritméticas en datos char. Esta habilidad se debe utili- zar con cuidado. Hay una diferencia entre el carácter '8' y el entero 8. El valor entero de 8 es 8. El valor entero de '8' es 56, que es la secuencia de intercalación en Unicode del carácter '8'.

Al evaluar expresiones aritméticas, 8 + 7 = 15, '8' + '7' = 56 + 55, da 111 y '8' + 7 = 56 + 7, da 63. Además, '8' * '7' = 56 * 55 = 3080.

Estos ejemplos ilustran que muchas cosas pueden salir mal cuando se efectúa aritmética de caracteres. Si se deben utilizar operaciones aritméticas sobre los datos de tipo char, se re- quiere hacerlo con precaución.

Expresiones

Hasta este punto sólo se han analizado los operadores aritméticos. En esta sección se explican a detalle las expresiones aritméticas. (Las expresiones aritméticas se introdujeron en la sección anterior.)

Si todos los operandos (es decir, números) en una expresión son enteros, la expresión se de- nomina expresión integral. Si todos los operandos en una expresión son números de punto flotante, la expresión se denomina expresión de punto flotante o decimal. Una expresión integral produce un resultado integral; una expresión de punto flotante produce un resultado de punto flotante. Estas definiciones se aclararán con algunos ejemplos.

E J E M P L O 2 - 5 EXAMPLE 2-1

Considere las siguientes expresiones integrales en Java:

2 + 3 * 5 3 + x - y / 7

x + 2 * (y - z) + 18

En estas expresiones, x, y y z representan variables de tipo integral; es decir, pueden contener valores enteros. (Las variables se analizan más adelante en este capítulo.)

Expresiones | 41

2

E J E M P L O 2 - 6 EXAMPLE 2-1

Considere las siguientes expresiones de punto flotante en Java:

12.8 * 17.5 - 34.50 x * 10.5 + y - 16.2

Aquí, x y y representan variables del tipo de punto flotante; es decir, pueden contener valores de punto flotante. (Las variables se analizan más adelante en este capítulo.)

La evaluación de una expresión integral o de punto flotante es sencilla. Como ya se hizo no- tar, cuando los operadores tienen la misma precedencia, la expresión se evalúa de izquierda a derecha. Para evitar confusión siempre se pueden utilizar paréntesis para agrupar operandos y operadores.

In document Programacion Java (página 73-78)