118

Capítulo 4 Instrucciones de control: parte 1

imprime “Aprobado” si la califi cación del estudiante es mayor o igual a 60, y, “Reprobado” si la califi cación del 
estudiante es menor a 60. En cualquier caso, después de que ocurre la impresión se “ejecuta”, según la secuencia, 
la siguiente instrucción en seudocódigo.

La instrucción anterior 

if...else en seudocódigo puede escribirse en Java como

if

 ( calificacion >= 

60

 )

  

System.out.println( 

"Aprobado"

 );

else

  

System.out.println( 

"Reprobado"

);

Observe que el cuerpo de la instrucción 

else

 también tiene sangría. Cualquiera que sea la convención de sangría 

que usted elija, debe aplicarla consistentemente en todos sus programas. Es difícil leer programas que no obede-
cen las convenciones de espaciado uniformes.

Buena práctica de programación 4.1

Utilice sangría en ambos cuerpos de instrucciones de una estructura 

if...else

.

Buena práctica de programación 4.2

Si hay varios niveles de sangría, en cada nivel debe aplicarse la misma cantidad de espacio adicional.

 La 

fi gura 4.3 muestra el fl ujo de control en la instrucción 

if...else

. Una vez más (además del estado 

inicial, las fl echas de transición y el estado fi nal), los símbolos en el diagrama de actividad de UML representan 
estados de acción y decisiones. Nosotros seguimos enfatizando este modelo de computación acción/decisión. Ima-
gine de nuevo un cajón profundo que contiene tantas instrucciones 

if...else

 vacías como sea necesario para 

crear cualquier programa en Java. Su trabajo es ensamblar estas instrucciones 

if...else

 (apilando o anidando) 

con cualquier otra estructura de control requerida por el algoritmo. Usted debe llenar los estados de acción y los 
símbolos de decisión con expresiones de acción y condiciones de guardia que sean apropiadas para el algoritmo 
que esté desarrollando.

Operador condicional (

?:

)

Java cuenta con el 

operador condicional

 (

?:

), que en ocasiones puede utilizarse en lugar de una instrucción 

if...else

. Éste es el único 

operador ternario

 en Java; es decir, que utiliza tres operandos. En conjunto, los 

operandos y el símbolo 

?:

 forman una 

expresión condicional

. El primer operando (a la izquierda del 

?

) es una 

expresión

booleana

 (es decir, una condición que se evalúa a un valor 

booleano

:

true

 o 

false

), el segundo 

operando (entre el 

?

 y 

:

) es el valor de la expresión condicional si la expresión 

booleana

 es verdadera, y el ter-

cer operando (a la derecha de 

:

) es el valor de la expresión condicional si la expresión 

booleana

 se evalúa como 

false

. Por ejemplo, la instrucción

 

System.out.println( calificacionEstudiante >= 

60

 ? 

"Aprobado"

 : 

"Reprobado"

 );

imprime el valor del argumento de 

println

, que es una expresión condicional. La expresión condicional en esta 

instrucción produce como resultado la cadena 

"Aprobado"

 si la expresión 

booleana calificacionEstudiante

>= 60

 es verdadera, o produce como resultado la cadena 

"Reprobado"

 si la expresión 

booleana

 es falsa. Por lo 

tanto, esta instrucción con el operador condicional realiza en esencia la misma función que la instrucción 

if...

else

que se mostró anteriormente, en esta sección. La precedencia del operador condicional es baja, por lo que 

toda la expresión condicional se coloca normalmente entre paréntesis. Pronto veremos que las expresiones condi-
cionales pueden usarse en algunas situaciones en las que no se pueden utilizar instrucciones 

if...else

.

Buena práctica de programación 4.3

Las expresiones condicionales son más difíciles de leer que las instrucciones 

if...else

, por lo cual deben usarse para 

reemplazar sólo a las instrucciones 

if...else

 simples que seleccionan uno de dos valores.

Instrucciones 

if...else

 anidadas

Un programa puede evaluar varios casos colocando instrucciones 

if...else

 dentro de otras instrucciones 

if...

else

, para crear 

instrucciones

if...else

anidadas

. Por ejemplo, el siguiente seudocódigo representa una ins-

04_MAQ_CAP_04.indd118

4/19/081:20:36AM