noviembre 13, 2011

Calificaciones (Rangos condicionales)

En muchas ocasiones necesitamos establecer un rango condicional para que se evalué un valor, por ejemplo si queremos saber si una persona es mayor de edad o no, es muy fácil saberlo, ya que para que sea mayor de edad debe tener 18 o más, entonces, a pesar de que hay un rango de edad: de 0 a 18 años no es mayor de edad, solo se necesita establecer una sola condición para evaluar lo anterior, por ejemplo:

                                              int edad=14;
                                              if(edad>=18)
                                                   System.out.println("Mayor de edad");
                                              else
                                                   System.out.println("Menor de edad");

Basto con solo una condición (la que esta en letras rojas) para poder validar si es mayor o no, pero no hay un rango condicional (un rango que se sitúe en medio de 2 condiciones) y en ocasiones para algunos otros problemas se necesitan que haya dos condiciones para poder evaluar un valor, para esto Java cuenta con los operadores lógicos. Para entenderlo mejor se plantea el siguiente ejercicio:

Haremos un programa que pida al usuario su promedio final de semestre y que nuestro programa muestre los siguientes mensajes de acuerdo a su calificación (la calificación va desde 1 a 100). Si su promedio es de 100 a 95 debe mostrar "Excelente", si es de 94 a 85 "Muy bien", de 84 a 75 "Bien", de 74 a 70 "Regular" y de 70 a 0 "No acreditado".
// Archivo: Promedio.java

import javax.swing.JOptionPane;

 public class Promedio {
 
  public static void main(String args[]){
  
  String cal="";
  cal=JOptionPane.showInputDialog("Introduce tu calificacion");
  
  if(cal==null)
   System.out.println("Usted ha cancelado la operacion");
  else{
   int calif=Integer.parseInt(cal);
   
   if(calif>=95&&calif<=100)
    System.out.println("Excelente");
   else
    if(calif>=85&&calif<=94)
     System.out.println("Muy Bien");
    else
     if(calif>=75&&calif<=84)
      System.out.println("Bien");
     else
      if(calif>=70&&calif<=74)
       System.out.println("Regular");
      else
       if(calif<70&&calif>=0)
        System.out.println("No Acreditado");
       else
        System.out.println("Esa calificacion no es valida");
  }
 }
}

Para hacer el programa anterior entendimos que para cada mensaje hay un rango de valores (un rango de condición) y los rangos están establecidos en el planteamiento del problema (100-95, 94-85, 84-75, 74-70, y 69-0). Entonces pedimos al usuario que introduzca su calificación y el programa lo guardara en String cal, y empezamos a evaluar con if. Para el primer if vamos a habilitar la opción cancelar de tal modo que si cal==null entonces se cancela la operación y termina el programa, en caso contrario es usuario habrá introducido un numero, así que convertiremos ese numero a un formato entero y se guardara en int calif. Después de esto, entrara a los siguientes if donde se ira evaluando, hasta llegar a la condición donde se cumpla y mostrara el mensaje correspondiente.

A partir del segundo if podemos notar que hay doble condición, estas dos condiciones son unidas por un operador lógico (AND, &&), de tal modo que al tener 2 condiciones, podríamos decir que tenemos un limite inferior y uno superior para cada mensaje. En la linea 17 y 18 decimos que para que el programa muestre el mensaje "Excelente", la calificación del usuario debe ser mayor/igual a 95 y menor/igual a 100. Si la calificación del usuario no esta entre ese rango (95-100), entonces la condición no se cumple y no se muestra ese mensaje, y pasa al siguiente if, y así sucesivamente. Si el usuario introduce una calificación que no este dentro de ninguno de los rangos que hemos establecido (por ejemplo: una calificación mayor a 100 o menor a 0) entonces se pasara hasta el else del ultimo if y mostrara un mensaje: "Esa calificación no es valida".
Loading...