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