Cuando hablabamos de algoritmos(Ver tutorial03) deciamos que es una secuencia de pasos, Ordena, Finita que incluye Toma de Descisiones y Repetión de pasos. hablabamos de las estructuras de control.
Estas estructuras son las que determinan que instrucciones o sentencias deben ejecutarse y cuantas veces repetirse. Existen de 2 tipos:
- Alternativas o de selección: If/Else, Switch
- Repetitivas o de iteracción: While, Do/While, For
If
El bloque de selección "If" nos permite evaluar una declaración para tomar una desición. IF del inglés "si (condicional)" actúa arrojando 2 resultados posibles: Verdadero o falso, y dependiendo de esto ejecutará las sentencias dentro del bloque o de lo contrario se saltará por completo el bloque y seguirá con el código.
![](https://imagizer.imageshack.us/v2/419x554q90/745/SAlppO.png)
Para evaluar estas sentencias utilizaremos los operadores "Relacionales" y "Lógicos" (Ver Tutorial05)
- Operadores Relacionales:
- > Mayor que
- < Menor que
- == Igual
- != Distinto
- >= Mayor o igual que
- <= Menor o igual que
- Operadores Lógicos:
- && 'OR' devuelve true si todos operandos son verdaderos.
- || 'AND' devuelve true si alguno de los operandos es verdadero.
- ! 'NOT' Niega el operando que se le pasa.
El siguiente código nos muestra como evaluar un entero, si es "mayor que" y definimos la comparación con un 21 se imprimirá un pequeño texto.
- public class Condicional{
- int edad = 25;
- if(edad > 21){
- }
- }
- }
Y si pensensamos en el caso contrario, por ejemplo 'edad' es 20, entonces el código estará bien construido pero no hará nada, dado que la condición es negativa o falsa y se saltará el bloque if y luego termina nuestro programa.
If/Else
Para solucionar el ejemplo anterior y contemplar los 2 casos del if, tenemos la selección "If/Else"
Donde se seguirá evaluando la condicíon del if pero al resultar falso ejecutará el bloque del else obligatoriamente.
![](https://imagizer.imageshack.us/v2/641x554q50/904/yJhP8O.png)
Para solucionar el problema que se nos presentaba estaba vez sea cual sea la edad nos mostrará un mensaje por pantalla
- public class Condicional{
- int edad = 20;
- if(edad > 21){
- }else
- }
- }
NOTA: Tanto el if y el else pueden ir sin llaves "{}" cuando sólo ejecutan una sola sentencia.
Operador Ternario
El operador ternario funciona de la misma manera que un if/else.
![](https://imagizer.imageshack.us/v2/641x554q50/674/R7Lxap.png)
Por ejemplo simplificamos una estructura if/else poniéndolo dentro del método System.out
- if(genero.equals("hombre"))
- else
If Anidados
Podemos evaluar otras condiciones dentro y fuera de nuestros if/else y hacer tantas combinaciones como deseemos
![](https://imagizer.imageshack.us/v2/331x476q50/540/VQDc9c.png)
![](https://imagizer.imageshack.us/v2/335x476q50/743/vN4UeD.png)
Materializando los 2 diagramas:
- public class Anidados{
- boolean logico = false;
- if(logico){
- System.out.println("En la evaluación de un booleano basta con poner su nombre para saber si es verdadera ejecutará esta linea.");
- }else if(num != 0){
- }else {
- //No hacemos nada aquí.
- }
- }
- }
- public class Anidados{
- float pi = 3.14f;
- double e = 2.718281828;
- long enteroLargo = 12345678987654321L;
- char letra = 'd';
- if(pi >= e){
- if(letra == 'd' && enteroLargo < 0){
- System.out.println("Por cierto utilizamos el operador AND para que ambas condiciones sean ciertas para que esto se ejecute");
- }else {
- //No hacemos nada aquí.
- }
- }else {
- //Podemos omitir los else si estan vacios.
- }
- }
- }
Switch
Existen ciertas ocaciones en que necesitamos dar con un opción y hacerlo con Ifs anidados se vuelve algo engorroso. Por eso tenemos la última seleccíon: Switch
![](https://imagizer.imageshack.us/v2/806x422q90/908/bKm9f5.png)
El switch(Interruptor) evalua una declaración y ejecuta un solo trozo de código dentro del bloque del caso indicado de acuerdo a la evaluación. Incluye 2 palabras reservadas nuevas:
- "case" para indicar si es igual a un valor dado y ejecutar ese segmento.
- "break" para indicar que rompa con el bloque switch y continue fuera de el, de lo contrario ejecutaría los segmentos de los demás casos por debajo hasta el final.
En el siguiente ejemplo evaluamos un entero "notaFinal" y los posibles casos estan "agrupados" para mostrar el mismo resultado, asi 0,1,2 y 3 mostrarán el resultado de "Desaprobado", etc. porque no incluimos el "break" por lo tanto 7 no tiene instrucciones pero sigue ejecutando el caso 8 donde encuentra un break que termina el switch.
- public class Interruptor{
- int notaFinal = 7;
- switch(notaFinal){
- case 0:
- case 1:
- case 2:
- case 3:
- break;
- case 4:
- case 5:
- case 6:
- break;
- case 7:
- case 8:
- break;
- case 9:
- case 10:
- break;
- }
- }
- }
No hay comentarios:
Publicar un comentario