170

Capítulo 5 Instrucciones de control: parte 2

Tip para prevenir errores 5.2

Los ciclos infi nitos ocurren cuando la condición de continuación de ciclo en una instrucción de repetición nunca se 
vuelve 

false

. Para evitar esta situación en un ciclo controlado por un contador, debe asegurarse que la variable de 

control se incremente (o decremente) durante cada iteración del ciclo. En un ciclo controlado por centinela, asegúrese 
que el valor centinela se introduzca en algún momento dado.

Las porciones correspondientes a la inicialización, la condición de continuación de ciclo y el incremento de 

una instrucción 

for

 pueden contener expresiones aritméticas. Por ejemplo, suponga que 

x = 2

 y 

y = 10

; si 

x

 y 

y

 no se modifi can en el cuerpo del ciclo, entonces la instrucción

for

 (

int

 j = x;  j <= 

4

 * x * y;  j += y / x )

es equivalente a la instrucción

for

 (

int

 j = 

2

;  j <= 

80

;  j += 

5

 )

El incremento de una instrucción 

for

 también puede ser negativo, en cuyo caso sería un decremento y el ciclo 

contaría en orden descendente.

Si al principio la condición de continuación de ciclo es 

false

, el programa no ejecutará el cuerpo de la ins-

trucción 

for

, sino que la ejecución continuará con la instrucción que siga inmediatamente después del 

for

.

Con frecuencia, los programas muestran en pantalla el valor de la variable de control o lo utilizan en cálculos 

dentro del cuerpo del ciclo, pero este uso no es obligatorio. Por lo general, la variable de control se utiliza para 
controlar la repetición sin que se le mencione dentro del cuerpo del 

for

.

Tip para prevenir errores 5.3

Aunque el valor de la variable de control puede cambiarse en el cuerpo de un ciclo 

for

, evite hacerlo, ya que esta 

práctica puede llevarlo a cometer errores sutiles.

El diagrama de actividad de UML de la instrucción for es similar al de la instrucción while (fi gura 4.4). 

La fi gura 5.4 muestra el diagrama de actividad de la instrucción for de la fi gura 5.2. El diagrama hace evidente que 
la inicialización ocurre sólo una vez antes de evaluar la condición de continuación de ciclo por primera vez, y que el 
incremento ocurre cada vez que se realiza una iteración, después de que se ejecuta la instrucción del cuerpo.

Determina si el ciclo
debe continuar

System.out.printf(

“%d

, contador );

[contador > 10]

[contador <= 10]

int

 contador =

1

contador++

Muestra en pantalla

el valor del contador

Inicializa la

variable de control

Incrementa la

variable de control

Figura 5.4  

|  Diagrama de actividad de UML para la instrucción 

for

 de la fi gura 5.2.

05_MAQ_CAP_05.indd170

4/19/081:21:27AM