Sentencia IF¶
Este apartado analiza cómo los programas del ordenador toman decisiones utilizando la sentencia if. Esta sentencia es uno de los bloques de construcción fundamentales de la programación.
Veamos cómo funciona.
Los limpiaparabrisas se controlan con un interruptor de encendido y apagado. El diagrama de flujo de la derecha muestra cómo se toma esta decisión.
Comience en la parte superior del gráfico y luego siga la línea hasta la pregunta:
¿esta lloviendo? La respuesta es verdadera o falsa.
Si la respuesta es verdadera,
- siga la línea etiquetada como Verdadero,
- siga las instrucciones en el cuadro "Activo limpiaparabrisas ,
- siga la línea para "Continuar".
Si la respuesta es falsa,
- siga la línea etiquetada como Falso,
- siga las instrucciones en el cuadro "limpiaparabrisas desactivados",
- siga la línea para "Continuar".
public static void main(String[] args) {
Scanner scan = new Scanner( System.in );
String respuesta;
System.out.print("¿Está lloviendo? (Y or N): ");
respuesta = scan.nextLine();
if (respuesta.equals("Y")) {
System.out.println("Activa limpiaparabrisas");
} else {
System.out.println("Desactiva limpiaparabrisas");
}
}
Sentencia simple condicional if¶
La declaración if es la más básica de todas las declaraciones de flujo de control. Le dice a su programa que ejecute una determinada sección de código solo si una prueba en particular se evalúa como verdadera. La sentencia simple condicional if tiene la siguiente estructura:
if (*condición*) {
//sentencias
}
Condición es una expresión booleana. Recuerde que una expresión es una combinación de literales, operadores, nombres de variables y paréntesis que se utilizan para calcular un valor, o incluso una llamada a un método.
Una expresión booleana es una expresión que se evalúa como verdadera o falsa.
Dada esta descripción de la sintaxis de la sentencia if, los siguientes son ejemplos de sentencias if válidas:
if (true) {
System.out.println("expresión if");
}
int num = 6;
if (num > 0) {
System.out.println("El número es positivo.");
}
Sentencia condicional compuesta if-else¶
Una segunda versión de la sentencia if incorpora una cláusula else en la estructura. Esto nos permite ejecutar cualquiera de dos declaraciones separadas (simple o compuesta) como resultado de un booleano expresión.
if (*condición*) {
//sentencias 1
} else {
//sentencias 2
}
Ejemplo:
int numJugadores = 2;
if (numJugadores == 1) {
System.out.println("Single player");
} else {
System.out.println("Multiplayer");
}
Sentencia condicional if-else múltiple¶
Lo que se ejecuta dentro de los if or else, es decir las sentencias pueden ser a su vez sentencias if-else. En otras palabras, es posible incrustar una o más sentencias if-else dentro de otra sentencia if-else, creando así una estructura de control anidada. Como ocurre con la mayoría de las cosas, hacer una estructura de control demasiado compleja no es una buena idea, pero existe una estructura de control estándar anidada ifelse que es muy útil. Se conoce como selección de múltiples vías.
if (*condición*) {
//sentencias 1
} else if (*condición*) {
//sentencias 2
} else if (*condición*) {
...
} else {
//sentencias
}
Ejemplo:
if (numJugadores == 1) {
System.out.println("Single player");
} else if (numJugadores == 2) {
System.out.println("Two player");
} else if (numJugadores == 3) {
System.out.println("Multiplayer");
} else {
System.out.println("Not possible, too many players");
}
Operador ternario (?:)¶
Ternario es una versión abreviada de la sentencia if-else. Tiene tres operandos y de ahí el nombre ternario. El formato general es:
La declaración anterior significa que si la condición se evalúa como verdadera, entonces ejecuta las instrucciones después del ‘?‘ de lo contrario, ejecuta las instrucciones después de ‘:‘.
int nota = 7;
String notaFinal = (nota >= 5) ? "Aprobado" : "Suspendido";
System.out.println(notaFinal); //muestra Aprobado
int nota = 7;
String notaFinal;
if(nota >= 5){
notaFinal="Aprobado";
}
else{
notaFinal="Suspendido";
}
System.out.println(notaFinal); //muestra Aprobado
Tip
Cuando las expresiones sean simples, es preferible utilizar el operador ternario en lugar de if-else, por economía y legibilidad