lunes, 19 de agosto de 2013

El uso del If

Bueno hasta ahora me he concentrado en escribir sobre temas de Java Básico y creo que de cierta manera esta bien para poder aclarar dudas desde lo más sencillo a temas avanzados, pero bueno en esta entrada voy a escribir sobre un problema que normalmente algunos principiantes en la programación suelen tener, y es el uso del if.  vs if else .  

:)


bueno veamoslo con un ejemplo sencillo.




public class Escuela {
    
    public static void main(String arg[]){
        Scanner entrada=new Scanner(System.in);
        System.out.println("Introduce tu promedio :)");
        
        int promedio=entrada.nextInt();
        
        
        if(promedio ==100)
            System.out.println("eres un matado");
        if(promedio >=90)
            System.out.println("eres un ñoño");
        
        if(promedio >=80)
            System.out.println("tienes vida social");
        if(promedio >=70)
            System.out.println("estas panzando las materias");
        else
            System.out.println("a que vas a la escuela");
    } 
         
}

bueno como podemos ver, este ejemplo en el segmento de código :

       Scanner entrada=new Scanner(System.in);
        System.out.println("Introduce tu promedio :)");        
        int promedio=entrada.nextInt();

Nos pide una entrada desde el teclado, el cual la va interpretar como un entero al utilizar el método nextInt de nuestro objeto entrada, el cual es un objeto de la clase Scanner :).

ese valor se le asigna a nuestra variable promedio, la cual entra en diferentes condiciones lógicas.
 ok, supongamos que nosotros somos unos matados, y ponemos 100 desde el teclado, que pasara?, bueno pasará lo siguiente.


Introduce tu promedio :)
100
eres un matado
eres un ñoño
tienes vida social
estas panzando las materias

ya que si tu promedio es de 100, se cumplirán todas las condiciones a excepción de la última, ya que tu promedio es igual a 100  por lo tanto eres matado, luego pregunta  en el otro if, si tu promedio es mayor o igual a 90, lo cual también se cumple por lo que también eres un ñoño y así hasta llegar a que tienes vida social.. entonces? esto no es lo que queremos.., a partir de que entra a una condición todas las demás también se cumplen :S . 

Bueno lo que tenemos que hacer es, que las condiciones no sean excluyentes una de la otra, es decir si se cumple la primera, ya no nos interesa que se cumplan las demás, debemos relacionar dichas condiciones, para lograrlo vamos a modificar nuestro código de la siguiente manera.


public class Escuela {
    
    public static void main(String arg[]){
        Scanner entrada=new Scanner(System.in);
        System.out.println("Introduce tu promedio :)");
        
        int promedio=entrada.nextInt();
        
        
        if(promedio ==100)
            System.out.println("eres un matado");
       else  if(promedio >=90)
            System.out.println("eres un ñoño");
        
        else  if(promedio >=80)
            System.out.println("tienes vida social");
        else  if(promedio >=70)
            System.out.println("estas panzando las materias");
        else
            System.out.println("a que vas a la escuela");
    } 
         
}

Ahora si, si la primera condición se cumple, ya no pregunta por las demás ya que las condiciones están ligadas entre sí, si no se cumple sigue con la siguiente, si no se cumple con la siguiente y así hasta terminar en el else.

en pocas palabras solo puede ejecutarse una sola condición ya que las condiciones están relacionadas entre sí. 

suponiendo que elegimos que nuestro promedio es 80, la salida sería "tienes vida social", 

sin embargo ambas soluciones son útiles y tienen su aplicación, así sea de manera excluyente o no. 







No hay comentarios.:

Publicar un comentario