jueves, 22 de octubre de 2015

SENTENCIA DE CONTROL switch

En Java, switch es una sentencia que se utiliza para elegir una de entre múltiples opciones; es especialmente útil cuando la selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector; el valor de dicha expresión puede ser de tipo int o char pero no de tipo double.
Sintaxis
switch (selector)
{
  case etiqueta1 : sentencias1 ;
    break;
  case etiqueta2 : sentencias2 ;
    break;
  .
  .
  .
  case etiquetan : sentenciasn ;
    break;
  default: sentenciasd ; // opcional
}
La expresión de control o selector se evalúa y compara con cada una de las etiquetas de case; además, debe ser un tipo ordinal, por ejemplo, int, char, bool pero no float o string; cada etiqueta es un valor único, constante y debe tener un valor diferente de los otros. Si el valor de la expresión es igual a una de las etiquetas case,  por ejemplo etiqueta1, entonces la ejecución comenzará con la primera sentencia de sentencias1 y continuará hasta encontrar break o el final de switch. El tipo de cada etiqueta debe ser el mismo que la expresión de selector; las expresiones están permitidas como etiquetas pero sólo si cada operando de la expresión es por sí misma una constante; por ejemplo, 4, +8 o m*15, siempre que m hubiera sido definido anteriormente como constante nombrada. Si el valor del selector no está listado en ninguna etiqueta case no se ejecutará ninguna de las opciones a menos que se especifique una acción predeterminada. La omisión de una etiqueta default puede crear un error lógico difícil de prever; aunque ésta es opcional, se recomienda su uso, a menos de estar absolutamente seguro de que todos los valores de selector están incluidos en las etiquetas case.
Sentencia break

Para alterar el flujo de control de una sentencia de selección múltiple o de los bucles, existe la sentencia break la cual termina el bucle.
Sintaxis

break;
break etiqueta;

Una sentencia break consta de la misma palabra reservada seguida por un punto y coma; cuando la computadora ejecuta las sentencias siguientes a una etiqueta case, continúa hasta que se alcanza una sentencia break; al hacerlo, la computadora termina la sentencia switch. Si se omiten las sentencias break después de ejecutar el código case, la computadora ejecutará el código siguiente hasta el próximo case.
Ejemplo 1
switch (opcion)
{
  case 0:
    System.out.println("Cero!");
    break;
  case 1:
    System.out.println("Uno!");
    break;
  case 2:
    System.out.println("Dos!");
    break;
  default:
    System.out.println("Fuera de rango!");
}
Ejemplo 2
switch (opcion)
{
  case 0:
  case 1:
  case 2:
    System.out.println("Menor que 3!");
    break;
  case 3:
    System.out.println("Igual a 3!");
    break;
  default:
    System.out.println("Mayor que 3!");
}

Nota:
ECAUCIÓN
Si se olvida break en una sentencia switch, el compilador no emitirá mensaje de error pues se habrá escrito una sentencia switch correcta en cuanto a sintaxis, pero no realizará las tareas asignadas.

Sentencia break en bucles
La sentencia break a veces se utiliza para realizar una terminación anormal del bucle o antes de lo previsto; su sintaxis es:
break;
La sentencia break se utiliza para la salida de un bucle while, do-while o for, aunque su uso más frecuente es dentro de una sentencia switch.
while (condición1)
{
  if (condición2)
    break;
  // sentencias
}

Sentencia continue
Esta sentencia se utiliza en el contexto de un bucle y hace que la ejecución prosiga con la siguiente iteración saltando las sentencias que están a continuación; en bucles while/dowhile, la ejecución prosigue con la condición de control del bucle, mientras que en bucles for, la ejecución prosigue con la expresión de incremento. Su sintaxis es la siguiente:
continue;
continue etiqueta;

Ejemplo:
for (cuenta = 1; cuenta <= 100; cuenta++)
{
  System.out.print ("Introduzca un número, -1, Salir: ");
  n = en.nextIn( );
  if (n < 0) continue;
  suma += n: // no se ejecuta si n < 0
}
En este caso, la sentencia continue salta a la sentencia cuenta++ de la expresión
del bucle for.



No hay comentarios:

Publicar un comentario