172
Capítulo 5 Instrucciones de control: parte 2
Las expresiones de
inicialización e incremento pueden ser listas separadas por comas de expresiones que nos
permitan utilizar varias expresiones de inicialización, o varias expresiones de incremento. Por ejemplo, aunque
esto no se recomienda, el cuerpo de la instrucción
for
en las líneas 11 y 12 de la fi gura 5.5 podría mezclarse con
la porción del incremento del encabezado
for
mediante el uso de una coma, como se muestra a continuación:
for
(
int
numero =
2
; numero <=
20
; total += numero, numero +=
2
)
;
// instrucción vacía
Buena práctica de programación 5.4
Limite el tamaño de los encabezados de las instrucciones de control a una sola línea, si es posible.
Aplicación: cálculo del interés compuesto
La siguiente aplicación utiliza la instrucción
for
para calcular el interés compuesto. Considere el siguiente pro-
blema:
Una persona invierte $1 000.00 en una cuenta de ahorro que produce el 5% de interés. Supo-
niendo que todo el interés se deposita en la cuenta, calcule e imprima el monto de dinero en
la cuenta al fi nal de cada año, durante 10 años. Use la siguiente fórmula para determinar los
montos:
c = p(1 + r)
n
en donde
pes el monto que se invirtió originalmente (es decir, el monto principal)
res la tasa de interés anual (por ejemplo, use 0.05 para el 5%)
nes el número de años
ces la cantidad depositada al fi nal del n-ésimo año.
Este problema implica el uso de un ciclo que realiza los cálculos indicados para cada uno de los 10 años que
el dinero permanece depositado. La solución es la aplicación que se muestra en la fi gura 5.6. Las líneas 8 a 10
en el método
main
declaran las variables
double
llamadas
monto, principal
y
tasa
, e inicializan
principal
con
1000.0
y
tasa
con
0.05.
Java trata a las constantes de punto fl otante, como
1000.0
y
0.05
, como de tipo
double
. De manera similar, Java trata a las constantes de números enteros, como
7
y
-22
, como de tipo
int
.
La línea 13 imprime en pantalla los encabezados para las dos columnas de resultados de esta aplicación. La
primera columna muestra el año y la segunda, la cantidad depositada al fi nal de ese año. Observe que utilizamos
el especifi cador de formato
%20s
para mostrar en pantalla el objeto
String “Monto en deposito”
. El entero
20
después del
%
y el carácter de conversión
s
indica que el valor a imprimir debe mostrarse con una
anchura
de campo
de 20; esto es,
printf
debe mostrar el valor con al menos 20 posiciones de caracteres. Si el valor a
imprimir tiene una anchura menor a 20 posiciones de caracteres (en este ejemplo son 17 caracteres), el valor se
justifi ca a la derecha
en el campo de manera predeterminada. Si el valor
anio
a imprimir tuviera una anchura
mayor a cuatro posiciones de caracteres, la anchura del campo se extendería a la derecha para dar cabida a todo
el valor; esto desplazaría al campo
monto
a la derecha, con lo que se desacomodarían las columnas ordenadas de
nuestros resultados tabulares. Para indicar que los valores deben imprimirse
justifi cados a la izquierda
, sólo hay
que anteponer a la anchura de campo la
bandera de formato de signo negativo (–)
.
La instrucción
for
(líneas 16 a 23) ejecuta su cuerpo 10 veces, con lo cual la variable de control
anio
varía
de 1 a 10, en incrementos de 1. Este ciclo termina cuando la variable de control
anio
se vuelve 11 (observe que
anio
representa a la
n en el enunciado del problema).
Las clases proporcionan métodos que realizan tareas comunes sobre los objetos. De hecho, la mayoría de los
métodos a llamar deben pertenecer a un objeto específi co. Por ejemplo, para imprimir texto en la fi gura 5.6, la
línea 13 llama al método
printf
en el objeto
System.out
.Muchas clases también cuentan con métodos que
realizan tareas comunes y no requieren objetos. En la sección 3.9 vimos que a estos métodos se les llama
static
.
Por ejemplo, Java no incluye un operador de exponenciación, por lo que los diseñadores de la clase
Math
defi nie-
ron el método
static
llamado
pow
para elevar un valor a una potencia. Para llamar a un método
static
debe
especifi car el nombre de la clase, seguido de un punto (
.
) y el nombre del método, como en
NombreClase.nombreMétodo ( argumentos )
05_MAQ_CAP_05.indd172
4/19/081:21:28AM