octubre 31, 2011

switch

switch es otra estructura de control, a diferencia de que esta es una estructura de selección múltiple que trabaja con casos, múltiples opciones que un usuario pueda introducir.

                                                  switch (parámetro a evaluar)
                                                            caso 1
                                                                      sentencia a ejecutar
                                                            caso 2
                                                                      sentencia a ejecutar
                                                            caso 3
                                                                      sentencia a ejecutar
                                                            default
                                                                      sentencia a ejecutar por default

En el algoritmo anterior podemos observar que se escribe la instrucción switch con su respectivo parámetro para ser evaluado, si el parámetro cumple la condición del caso 1, se ejecuta el cuerpo del caso 1; si se cumple la condición del caso 2, se ejecuta el cuerpo del caso 2 y así sucesivamente para tantos casos como puedan existir en la instrucción switch. El parámetro evaluado por switch solo puede ser un valor constante entero (int, char, byte, short)

Vamos a poner manos a la obra en JAVA para entender mejor el funcionamiento de switch. Vamos a enumerar los meses del año del 1 al 12 (Enero - 1, Febrero - 2, Marzo - 3....etc), teniendo en cuenta lo anterior haremos un programa que pida al usuario un numero de mes y que el programa imprima en pantalla el nombre del mes correspondiente al numero que el usuario introdujo. El código:
// Archivo: Switch.java
//Anibal Clavel Mozo.
//anibalclavel@gmail.com
//Ing. en Sistemas Computaciones, ITCH.

import javax.swing.JOptionPane;

public class Switch{

 public static void main(String args[]){
 
  String valor=JOptionPane.showInputDialog("Escribe un numero de mes");
  int mes=Integer.parseInt(valor);
  
  switch(mes){
  
   case 1:
    System.out.println("Enero");
   break;
   
   case 2:
    System.out.println("Febrero");
   break;
   
   case 3:
    System.out.println("Marzo");
   break;
   
   case 4:
    System.out.println("Abril");
   break;
   
   case 5:
    System.out.println("Mayo");
   break;
   
   case 6:
    System.out.println("Junio");
   break;
   
   case 7:
    System.out.println("Julio");
   break;
   
   case 8:
    System.out.println("Agosto");
   break;
   
   case 9:
    System.out.println("Septiembre");
   break;
   
   case 10:
    System.out.println("Octubre");
   break;
   
   case 11:
    System.out.println("Noviembre");
   break;
   
   case 12:
    System.out.println("Diciembre");
   break;
   
   default:
    System.out.println("Mes no valido");
  }
 }
}
Como vamos a pedir datos al usuario, utilizaremos el JOptionPane y por tanto tenemos que importar la librería que lo contiene. En la linea 12 declaramos String valor para que se guarde ahí la respuesta del usuario cuando le pidamos que introduzca un numero de mes; una ves que el usuario ya introdujo el numero y se haya guardado en String valor, lo convertimos a un numero int, ya que como ya mensionamos: switch solo trabaja (o evalúa) numero enteros, la conversión se guardara en la variable int mes, y esa es la variable o parámetro que vamos a evaluar en switch. Se le pide al usuario que introduzca un numero del 1 al 12, supongase que el usuario introdujo el numero 6, entonces nuestra variable int mes valdra 6; Al llegar a la linea 15 la variable mes se evaluara en switch y en el cuerpo de switch ya declaramos 12 posibles casos y un caso por default.

En la linea 17 decimos que para el caso 1, int mes debe valer 1 para que se ejecute ese cuerpo; En la linea 21 decimos que para el caso 2, int mes debe valer 2 para que se ejecute ese cuerpo, y así sucesivamente para los demás casos. En nuestro ejemplo int mes = 6, se pasa por alto el caso 1, caso 2, caso 3... hasta el caso 6 (linea 37), donde int mes vale 6 por tanto entra al caso 6 y se ejecuta el contenido de este caso, se imprime en pantalla la cadena de caracteres: "Junio" (linea 38), y en la linea 39 la instrucción break indica que hasta ahí termina el switch y el programa sale del switch para continuar ejecutando las demás lineas fuera de esta estructura de control.

En la linea 65 establecemos un caso por default que también tiene una instrucción para ejecutar solo si el caso se cumple. Esta instrucción por default se cumple solo cuando no se cumple ninguno de los casos anteriormente declarados. Por ejemplo: en nuestro programa anterior, si el usuario hubiese introducido el numero 20, entonces int mes = 20, así que no hubiese cumplido ninguno de los y por lo tanto se ejecutaría el caso por default, imprimiendo la linea de texto: "Mes no valido".
Loading...