Operador ternario

Así como hay operadores unarios, que solo requieren un operando: negativo, positivo, complemento y negación; operadores binarios, que requieren dos operandos: asignación, suma, resta, multiplicación, and, or, xor, corrimientos, etc. Java utiliza un operador que lleva tres operando: una expresión booleana, un valor si la expresión es verdadera, y una segunda expresión si el resultado es falso. Estos dos últimos valores deben ser del mismo tipo.

Recuerda que un operando puede ser un valor constante, el valor que contiene una variable, el resultado de una función (llamada a un método que regresa un valor) o una expresión más compleja. Por su parte, los operadores son aritméticos, lógicos y relacionales.

La estructura condicional se utiliza para tomar decisiones, es una estructura secuencial donde se toma una decisión para ejecutar entre dos alternativas de código que siempre se encuentran hacia adelante del flujo de ejecución del programa partiendo de la «condicional doble o compuesta»:

Diagrama de flujo

Si (if) la «expresión booleana» es true, se asignará a variable la «expresiónV», en caso contrario (else) y se asigna a variable la «expresiónF».

Diagrama de flujo

Es equivalente a “evalúa la «Expresión booleana», si es cierta asigna la «ExpresiónV» y si no asigna la «ExpresiónF»":

Diagrama de flujo

Diagrama sintáctico

1. Operador ternario.

Se evalúa una «expresión booleana», después se coloca el operador ternario ? seguido de la «expresiónV» que se asignará a una variable si el resultado es true, se separa con dos puntos : y se termina con una «expresiónF» que se asignaría a la variable si la expresión booleana resulta false.

Diagrama de flujo

2. Equivalencia con if-else

Si (if) la «expresión booleana» es true, se asignará a variable la «expresiónV», en caso contrario (else) y se asigna a variable la «expresiónF».

Diagrama de flujo

Codificación en Java

( expresión_booleana ? expresión_V : expresión_F ) // Como un valor

variable = ( expresión_booleana ? expresión_V : expresión_F ); // Asignación de variable

return ( expresión_booleana ? expresión_V : expresión_F ); // En una sentencia return

Si el sistema de unidades es METRICO, entonces el método regresa las siglas de “kilogramos” y si no, las de “libras”.

public String getUnidades() {

return (sistema = Sistema.METRICO) ? "Kg" : "Lb";

}

Si se desea asignar un valor positivo, tomarlo tal cual, sino cambiarle el signo:

base = (valor>=0) ? valor : -valor;

Si la calificación del alumno es mayor o igual a seis, se indica que está “aprobado” y si no está “reprobado”:

situacion = (calificacion>=6) ? "aprobado" : "reprobado";

Ejemplo de diagrama sintáctico:

Después de una partida muy intensa en un videojuego con dos participantes, cuando uno supera los 1000 puntos se declara un ganador. El ganador será quien tenga más puntos entre jugador1 y jugador2 y se almacenará en la variable ganador.

Al llegar a la estructura se evalúa una expresión booleana. Si se cumple la condición se procede a obtener el valor de la primera expresión (valor nulo, constante, variable o resultado de una expresión), en caso contrario se obtiene el valor generado por la segunda expresión.

Ejercicios

Observa el ejemplo y completa los ejercicios.

Ejemplo

Se comparan los puntos de dos jugadores, si el primero tiene mas puntos se declara ganador, el caso contrario el segundo jugador es el ganador.

Asignación siempre positiva

Escribe los elementos para completar el diagrama de flujo de acuerdo con el bloque de código propuesto.

El siguiente diagrama revisa si la variable value es positivo entonces asignará este valor a base, en caso contrario se asignará cambiando el signo para la base siempre sea positiva después de la asignación:

esquema
esquema
esquema

Tipo de raíces

Completa los espacios en blanco para que el siguiente diagrama de flujo corresponda con la codificación en Java.

Se analiza el discriminante de una función de segundo grado, si el resultado es positivo las raices son reales y en caso contrario son raices complejas.

esquema

discr = b*b - 4*a*c;

return( discr>=0 ? "raíces reales" : "raíces complejas" );

Estatura correcta

Completa los espacios en blanco para que el siguiente diagrama de flujo corresponda con la codificación en Java.

La estatura de una persona adulta debe estar en metros para poder calcular su indice de masa corporal. Se considera que normalmente las estaturas se ubican entre 1.20 y 2.20 metros, sin embargo, los capturistas suelen introducir la cantidad en centímetros así que en el método getter se decidió hacer una corrección si se detecta que los datos vienen en centímetros. En caso contrario asignar el valor proporcionado.

public void setEstatura(double value) {

estatura = ( (120 <= value) && (value <= 220) )

? value / 100; // convertir de centímetros a metros

: value; // se asume que el valor es correcto

this.calcularIMC();

}

Cuidado de la salud

Escribe el código en Java que corresponde al siguiente diagrama de flujo:

Si el índice de masa corporal de una persona adulta no se ubica entre 20 y 25, el programa debe indicarle que consulte a su médico, en caso contrario, se sugiere que continue igual.

System.out.println( "Su indice de masa corporal es: " + persona.getIMC() );

System.out.println( "Su IMC se interpreta como: " + persona.geInterpretación IMC() );

System.out.println( ( persona.getIMC()>=20 && persona.getIMC()<=25 )

? "Continua cuidando tu salud"

: "Consulta a tu médico" ;