jueves, 28 de agosto de 2014

estructuras de control java

Las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
·                    De acuerdo a una condición, ejecutar un grupo u otro de sentencias
                      (If-Then-Else)
·                    De acuerdo al valor de una variable, ejecutar un grupo u otro de                                     sentencias (Select- Case)
·                    Ejecutar un grupo de sentencias mientras se cumpla una condición
                      (Do-While)
·                    Ejecutar un grupo de sentencias hasta que se cumpla una condición 
                     (Do-Until)


·                    Ejecutar un grupo de sentencias un número determinado de veces 
                      (For-Next)

La sentencia if else.

La sentencia if else nos permite ejecutar un bloque de código o no, dependiendo de una condición que se evalúa justo antes de este bloque. Esta condición se evalúa a un valor booleano, es decir, su resultado solo puede tomar dos valores, true o false. A continuación un ejemplo:


1
2
3
4
5
6
int edad = 21;
if(edad >= 18) {
    System.out.println("Eres mayor de edad.");
} else {
    System.out.println("Eres menor de edad.");
}
si la condición es evaluada como true como es el caso, se ejecutará el primer println() mostrando que eres mayor de edad, si la condición fuese false, se ejecutaría el segundo println(). Siempre se ejecuta uno de los bloques si está presente el else, sino se ejecutará un bloque o ninguno.


También podemos añadir un nuevo bloque if en la sentencia else, formando los denominados if encadenados, pudiendo hacer todos los que queramos:


1
2
3
4
5
6
7
8
9
10
int edad = 50;
if(edad <= 14) {
    System.out.println("Eres un niño.");
} else if(edad > 14 && edad < 18){
    System.out.println("Eres adolescente.");
} else if(edad >= 18 && edad < 65) {
    System.out.println("Eres un adulto.");
} else {
    System.out.println("Eres anciano.");
}
En este caso la salida por pantalla será "Eres un adulto.", de esta manera podemos colocar tantos else if como queramos, además como vemos, en la última opción se puede obviar el if, y colocar solo el else, ya que no hay mas posibilidades que tener en cuenta.

También se pueden colocar bloques if else, dentro de otros bloques if else, y encadenar tantos como necesitemos, eso si, teniendo en cuenta que hacer esto muchas veces puede dificultar la lectura de nuestro código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char sexo = 'f';
int edad = 25;
if(edad >= 18) {
    if(sexo == 'm') {
        System.out.println("Eres un hombre mayor de edad.");
    } else {
        System.out.println("Eres una mujer mayor de edad.");
    }
} else {
    if(sexo == 'm') {
        System.out.println("Eres un niño menor de edad.");
    } else {
        System.out.println("Eres una niña menor de edad.");
    }
}



La sentencia switch


Esta sentencia permite elegir múltiples caminos a seguir por el flujo de ejecución de nuestro programa. En este caso, el camino a seguir se selecciona basándose en el valor de una expresión que se evalúa a un valor entero:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int mes = 2;
switch(mes) {
    case 1:
        System.out.println("Es enero");
        break;
    case 2:
        System.out.println("Es febrero");
        break;
    case 3:
        System.out.println("Es marzo");
        break;
    case 4:
        System.out.println("Es abril");
        break;
    default:
        System.out.println("Ninguno de los anteriores");
}

En este caso, la salida sería "Es febrero", podemos poner todos los case que necesitemos y utilizar el default o no, de esta manera si la opción a evaluar no esta contemplada en ninguno de los case el switch no hará nada y la ejecución del 
programa seguiré de largo.

 se utiliza la palabra reservada break, la cual no está muy bien vista y solo se debe utilizar en casos realmente necesarios, pues bien, en la estructura switch es necesario
Sin break, nuestro programa ejecutaría el código del case evaluado como true, en nuestro caso el 2º, y además todos los siguientes hasta algún break, y si no lo hubiera, hasta el final de la estructura switch, ejecutando el código de los case inferiores y también del default.

El caso de no utilizar break, puede ser conveniente en algunos casos como en este ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int mes = 4;
switch(mes) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        System.out.println("El mes tiene 31 dias.");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        System.out.println("El mes tiene 30 dias.");
        break;
    default:
        System.out.println("El mes es febrero.");
}



No hay comentarios: