====== Las estructuras de control ======

===== Estructura if =====

La sentencia ''if''  permite tomar una decision en base a una condición. Dicha condición puede ser simple (comparar dos expresiones) o bien compleja, pudiéndose comparar múltiples expresiones unidas por cualquier operador lógico. Si el resultado final de la condición es
verdadero (la condición se cumple), se ejecutará el bloque de código asociado a la instrucción \verb if , y a continuación, el programa
seguirá inmediatamente después. En caso contrario, no se ejecutará ese código y el programa seguirá inmediatamente después.

<code java>
if (condicion) {
    sentencias;
}
</code>

<code java>
if (x > 10) {
    System.out.println("x es mayor que 10");
}
</code>

==== Estructura if/else ====

En este caso la instrucción ''if''  viene acompañada de un segundo bloque de instrucciones que se asocia al caso en que la condición de la instrucción no se cumpla. Ahora, cuando la condición asociada al caso \verb if  no se cumpla, se ejecutará el bloque de código asociado al
caso \verb else  antes de continuar inmediatamente después.

<code java>
if (condicion) {
    sentencias_if;
}
else {
    sentencias_else;
}
</code>

<code java>
if (x == 10) {
    System.out.println("x vale 10");
}
else {
    System.out.println("x no vale 10");
}
</code>

==== Estructura if/else if ====

Este es el caso más completo de la sentencia ''if'' . Realmente es posible evaluar tantas condiciones como se deseen y asociar un bloque de código al cumplimiento de cada una de esas condiciones, teniendo en cuenta que, por cada sentencia ''if'' sólo se acabará ejecutando un sólo bloque de instrucciones. Se ejecutará siempre el bloque asociado a la condición que antes se cumpla (en orden de arriba a abajo) o
el bloque asociado al caso \verb else  si no se cumple ninguna condición (siempre que se haya incluido caso ''else''). Asi, es posible que, aún incluyendo una sentencia ''if'', puede que nunca se ejecute ninguna sentencia.

<code java>
if (condicion1) {
    sentencias_1;
}
else if (condicion2) {
    sentencias_2;
}
else if (condicion3) {
    sentencias_3;
}
. . .
. . .
else {
    sentencias_else;
}
</code>

<code java>
if (x > 10) {
    System.out.println("x es mayor que 10");
}
else if (x < 10) {
    System.out.println("x es menor que 10");
}
else {
    System.out.println("x es igual a 10");
}
</code>

===== Operador condicional =====

Los operadores condicionales permiten evaluar varias expresiones como si se trataran de una sola condición

  * Operador ''AND'' Representado por los caracteres ''&&'', se utiliza para combinar varias expresiones y que éstas sean evaluadas como una sola condición verdadera cuando todas ellas lo sean. Si alguna de ellas es falsa, el resultado siempre será falso indepedientemente del valor de todas las demás
  * Operador ''OR'' Representado por los caracteres ''||'', se utiliza para combinar varias expresiones y que éstas sean evaluadas como una sola condición verdadero simplemente con que una de ellas lo sea. Si todas ellas son falsas, el resultado de la condición compuesta será falso
  * Operador ''NOT'' Representado por el caracter ''!'', se utiliza para invertir el resultado de la expresión que queda a su derecha.

<code java>
if ((x > 10) && (x < 20)) {
    System.out.println("El valor de x está entre 10 y 20");
}
</code>

<code java>
if ((x == 10) || (x == 20)) {
    System.out.println("El valor de x es 10 o 20");
}
</code>
    
<code java>
if (!(x == 10)) {
    System.out.println("x es distinto que 10");
}
</code>

===== Estructura switch-case =====

La sentencia ''switch-case''  permite tomar una decisión en base al valor de una variable. A cada posible valor se le asocia un bloque de sentencias que será ejecutado cuando la variable contenga dicho valor. Además, de forma similar a como ocurre con la sentencia ''if'',esta sentencia tiene un caso por defecto, en este caso se llama ''default'', cuyo bloque asociado se ejecutará en caso de que la variable
no tenga ninguno de los valores recogidos en los casos ''case''.

<code java>
switch(condicion) {
    case valor_1:
        sentencias_1;
        break;
    case valor_2:
        sentencias_2;
        break;
    case valor_3:
        sentencias_3;
        break;
    default:
        sentencia_default;
        break;
}
</code>

<code java>
switch(color) {
    case "azul":
        System.out.println("El color es azul");
        break;
    case "rojo":
        System.out.println("El color es rojo");
        break;
    case "negro":
        System.out.println("El color es negro");
        break;
    default:
        System.out.println("No es ninguno de los colores seleccionados");
        break;
}
</code>

----



(c) 2019-{{date>%Y}} Santiago Faci