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