Está en la página 1de 5

Programacin en Java/Sentencia if-else

Programacin en Java/Sentencia if-else


Queremos realizar una divisin de enteros. Es fcil, ya sabemos como hacerlo, utilizando variables y operadores. Pero nos queda un mal recuerdo con la divisin por cero. Podemos establecer una condicin que permita la divisin para todos los nmeros y que rechace cualquier divisor con cara de cero. Disponemos de dos opciones : realizar o no la divisin. Tambin una condicin: el divisor sea distinto de cero. Esto se parece mucho a una seleccin simple. La estructura de seleccin simple en Java se realiza mediante la sentencia if (si, en ingles). La sintaxis es la siguiente : if (condicin) sentencia; La condicin es una expresin booleana. La sentencia se ejecuta solamente si la expresin booleana es verdadera. Retomando el problema de la divisin, incorporamos una estructura de seleccin para realizar la operacin libre de ceros. public class DivisionSegura { public static void main(String args[]){ int x = 12; int y = 0; int z = 0; if( y !=0 ) z = x / y; System.out.println("El resultado es : " + z); } } En el programa, la variable x tiene el valor del dividendo, la y el divisor y la z el cociente. La condicin es una expresin que arroja un valor booleano. En este caso se utiliza un operador relacional que verifica si y es distinto de 0. Si esta condicin se cumple realiza la divisin. En caso contrario se saltea la divisin y solo imprime el valor de z, que hemos inicializado convenientemente antes de la operacin. Qu ocurre si la condicin no se cumple? En este caso nada. Podemos agregar una serie de instrucciones que se ejecutarn solo si la condicin no se cumple. Para esto tendremos que agregar la sentencia else. La estructura de seleccin quedar as: if (condicin) sentencia 1; else sentencia 2; Si la condicin es verdadera se ejecuta la sentencia 1 en caso contrario se ejecuta la sentencia 2. Ambas sentencias nunca se ejecutarn al mismo tiempo, son excluyentes. Ahora ampliemos el programa para mostrar una advertencia en el caso que se encuentre cara a cara con un cero siniestro. public class DivisionSegura { public static void main(String args[]){ int x = 12; int y = 0; int z = 0; if( y !=0 ) z = x / y; else System.out.println("Atencin! se pretende dividir por 0"); System.out.println("El resultado es : " + z);

Programacin en Java/Sentencia if-else } } El programa nos qued mas completo. Con la clusula else incluimos otra alternativa de accin. Pero algo anda suelto. Este programa siempre muestra un resultado, se cumpla o no la condicin. El mensaje por pantalla no est incluido en la estructura de seleccin. Tendremos que colocarlo dentro del sector de sentencias que se ejecutarn cuando la condicin sea verdadera. Para agrupar las sentencias se utilizan las llaves ( { } ) Indicarn el inicio y el fin de un bloque de sentencias. Probemos como queda con un bloque public class DivisionSegura { public static void main(String args[]){ int x = 12; int y = 2; int z = 0; if( y !=0 ) { z = x / y; System.out.println("El resultado es : " + z); } else { System.out.println("Atencin! se pretende dividir por 0"); } } } Las buenas prcticas en defensa de un cdigo mantenible han dictaminado que utilicemos las llaves en todo momento, an en el caso que utilicemos una sola sentencia. if (condicin) { sentencia; } else { sentencia; } Lamentablemente no siempre nos encontraremos con condiciones tan sencillas. Muchas veces tendremos que recurrir a proposiciones compuestas para formar una condicin. Para ello podemos recurrir a operadores relacionales o lgicos. Recuerden que siempre debe dar como resultado un valor booleano. Supongamos que deseamos saber si un ao es bisiesto. Sabemos que debe ser mltiplo de 4. Para esto tendremos que verificar si el mdulo es igual a cero. ao % 4 == 0 Pero no debe ser mltiplo de 100. ( ao % 4 == 0 ) && ( ao % 100 != 0 ) A menos que sea mltiplo de 400. ((( ao % 4 == 0 ) && ( ao % 100 != 0 )) || ( ao % 400 == 0 )) Formamos una proposicin compuesta con conectores lgicos. Ahora vamos a incorporarlo en una estructura se seleccin.

Programacin en Java/Sentencia if-else if ((( ao % 4 == 0 ) && ( ao % 100 != 0 )) || ( ao % 400 == 0 )) { System.out.println("Es bisiesto"); } else { System.out.println("No es bisiesto"); } Los conectores lgicos nos permiten simplificar la estructura. Sin ellos nos veramos en la necesidad de anidar las sentencias. Veamos que ocurre si en elejemplo anterior descartamos el AND y el OR. if ( x % 4 == 0 ) { if ( x % 100 == 0 ) { if ( x % 400 == 0 ) { System.out.println("Es bisiesto"); } else { System.out.println("No es bisiesto"); } } else { System.out.println("Es bisiesto"); } } else { System.out.println("No es bisiesto"); } Parece complicado, pero nos demuestra muchas cosas. En primer lugar observamos que se pueden anidar las sentencias if-else. Cada resultado de una condicin puede caer en una nueva comprobacin para formar una estructura compleja de seleccin. Tambin vemos que hay cierta relacin entre conectores lgicos y la estructura.
Conjuncin if (condicin1 && condicin2){ sentecia1; } else { sentencia2; } if ( condicin1 ) { if ( condicin2 ) { sentencia1; } else { sentencia2; } } else { sentencia2; }

Disyuncin if ( condicin1 || condicin2 ) { sentencia1; } else { sentencia2; } if ( condicin1 ){ sentencia1; } else { if ( condicin2 ) { sentencia1; } else { sentencia2; } }

Negacin

Programacin en Java/Sentencia if-else

4
if ( condicin1) { sentencia2; } else { sentencia1; }

if ( ! condicin1) { sentencia1; } else { sentencia2; }

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Programacin en Java/Sentencia if-else Fuente: http://es.wikibooks.org/w/index.php?oldid=160046 Contribuyentes: MarcoAurelio, Pirenne, 2 ediciones annimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/