Vous êtes sur la page 1sur 4

Universidad de San Carlos de Guatemala USAC

Escuela de Formacin de Profesores de Enseanza Media EFPEM


Profesorado en Computacin e Informtica

Gua 3 - Condiciones
INTRODUCCION
Cuando deseamos hacer operaciones bsicas suele ser fcil pensar que no tiene mayor
complejidad, pero que pasa si quisiramos realizar una divisin de enteros. Es fcil, ya
sabemos cmo 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 que sea cero. Disponemos de dos
opciones: realizar o no la divisin. Tambin una condicin: el divisor sea distinto de cero.
La estructura de seleccin simple en Java se realiza mediante la sentencia if (si, en ingls). 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 r ealiza 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:

Programacin Cientfica I
Prof. Lusvin de Len

04/02/16

Universidad de San Carlos de Guatemala USAC


Escuela de Formacin de Profesores de Enseanza Media EFPEM
Profesorado en Computacin e Informtica

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 un
cero.

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);
}
}
El programa nos qued ms 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 {
Programacin Cientfica I
Prof. Lusvin de Len

04/02/16

Universidad de San Carlos de Guatemala USAC


Escuela de Formacin de Profesores de Enseanza Media EFPEM
Profesorado en Computacin e Informtica

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.

if ((( ao % 4 == 0 ) && ( ao % 100 != 0 )) || ( ao % 400 == 0 )) {


System.out.println("Es bisiesto");
} else {
System.out.println("No es bisiesto");
}

Programacin Cientfica I
Prof. Lusvin de Len

04/02/16

Universidad de San Carlos de Guatemala USAC


Escuela de Formacin de Profesores de Enseanza Media EFPEM
Profesorado en Computacin e Informtica

Los conectores lgicos nos permiten simplificar la estructura. Sin ellos nos veramos en la
necesidad de anidar las sentencias. Veamos qu ocurre si en el ejemplo 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.
Hoja de trabajo
1. Un programa que lea por teclado tres nmeros distintos y nos muestre el mayor.
2. Un programa que lea por teclado dos nmeros distintos y nos muestre el orden
ascendente de los mismos.
3. Se carga una fecha (da, mes y ao) por teclado. Mostrar un mensaje si corresponde
al primer trimestre del ao (enero, febrero o marzo) Cargar por teclado el valor
numrico del da, mes y ao. Ejemplo: da: 10 mes:1 ao:2010.
4. Realizar un programa que pida cargar una fecha cualquiera, luego verificar si dicha
fecha corresponde a Navidad.
5. De un operario se conoce su sueldo y los aos de antigedad. Se pide confeccionar
un programa que lea los datos de entrada e informe:
a) Si el sueldo es inferior a 500 y su antigedad es igual o superior a 10 aos, otorgarle
un aumento del 20 %, mostrar el sueldo a pagar.
b) Si el sueldo es inferior a 500 pero su antigedad es menor a 10 aos, otorgarle un
aumento de 5 %.
c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en pantalla sin cambios.

Programacin Cientfica I
Prof. Lusvin de Len

04/02/16

Vous aimerez peut-être aussi