Programando con las Sentencias de Java (Parte II)

Buenas tardes, aqui seguiremos con la programación en java.
En esta parte terminaremos de dar el último COnditional Statement que nos queda, el switch, y empezaremos con las estructuras de iteración, como es el bucle for y el bucle for mejorado.
Dicho esto podemos ponernos manos a la obra.

The switch Conditional Statement

El switch es usado para comparar el valor de un switch con un valor asociado a un case. Una vez comparados el bloque de código asociado al case se ejecuta hasta que la ejecución se encuentra con un break;, y si no existe un break, la ejecución del programa continuará con el siguiente case posterior al que ha ocurrido. El break; es opcional y causa la terminación del switch.

Cuando existen varios case que evalúan un mismo valor, el compilador lanzará un error

El switch debe evaluar byte, short, int o char. Otras clases como Byte, Short, Int y Character son tambien permitidos pero automaticamente se desenvuelven como sus tipos primitivos.

El uso general del switch es el siguiente:

switch(expresion){
  case valueA:
    //Bloque de código
    break;
  case valueB:
    //Bloque de código
    break;
  default:
    //Bloque de codigo
}

Vamos a ver un ejemplo completo del switch. En el siguiente método llamado generateRandomFish, usaremos un generador de numeros que será usado en el switch. El número generado será 0,1,2,3. El switch comparará el número generado con los valores de los case. En el ejemplo, un string con el nombre RandomFish tendrá un valor diferente según el case en el que entre. En el ejemplo, tambien hay un valor posible que no tiene case, el 3, entonces esta condición será manejada por el default. Cuando la ejecución se encuentre con un break, la ejecución saldrá automáticamente del switch.

public String generateRandomFish(){
  String randomFish;
  Random randomObject=new Random();
  int randomNumber=randomObject.nextInt(4);
  switch(randomNumber){
    case 0:
      randomFish="Blue Fish";
      break;
    case 1:
      randomFish="Red Drum";
      break;
    case 2:
      randomFish="Striped Bass";
      break;
    default:
      randomFish="Unknown Fish Type";
      break;
  }
  return randomFish;
}

Los cases pueden estar organizados de cualquier manera. El default se suele poner al final para facilitar la legibilidad del código. Hay que recordar que sin el break, el bloque switch continuará con el case posterior automáticamente.
El siguiente código es un uso válido del switch y usa la enumeración como valores.

public class NewClass {
    private enum ClamBait
    {
        FRESH,SALTED,ARTIFICIAL
    }
    public static void main(String[] args){
        ClamBait bait=ClamBait.SALTED;

        switch (bait){
        default:
            System.out.println("No bait");
            break;
        case FRESH:
            System.out.println("FreshClams");
            break;
        case SALTED:
            System.out.println("Salted Clams");
            break;
        case ARTIFICIAL:
            System.out.println("Artificial Clams");
            break;
        }
    }
}

Tener el conocimiento de lo que puedes hacer o no hacer con el switch puede ayudarnos en el desarrollo.

Iteration Statements

Las iteraciones son usadas cuando hay necesidad de iterar (o repetir) varias trozos de código. En este grupo de iteración se incluyen los bucles for, el bucle while y el bucle do-while.
El break es usado para salir del cuerpo de cualquier iteración.
El continue es usado para terminar con la iteración actual y continúa con la siguiente iteración.

Formal Name Keywords Main expression Components Example
for loop for,
breaak(Optional)
continue(Optional)
Initialization,
expression,
Update mechanism
for(i=0;i<j;i++){}
Enhanced for loop for,
break(Optional)
coninue(Optional)
Elements or array collection for(Fish f : listOfFish){}
while while
break(Optional),
continue(Optional)
Boolean while (value==1){
}
do-while do,while,
break(Optional)
continue(Optional)
Boolean do{
}while(value==1)

The for Loop Iteration Statement

El bucle for fué diseñado para realizar iteraciones delntro del código. Tiene unos elementos o partes principales como la parte de inicialización, la de condicioón y la de iteración.
La parte de inicialización no es necesario declarar una variable, siempre y cuando se declare la variable antes de la sentencia for. Así que, “int x=0;” y “x=0” son ambas correctas en la parte de inicialización.
Hay que tener cuidado, ya que la variable que se declara en la parte de inicialización, no es válida fuera del bucle for y termina cuadno este termina.
La expresión o condición que se evalúa con valor booleano es la condición que se dará que el bucle siga iterando.
La iteración, conocida también como parte de actualización, provee del mecanismo que hará que la iteración ocurra. Una update part básica es representada por “i++”.
El uso general del for:

for (inicialization;expression;iteration){
  //Bloque de código
}

Lo siguiente es un ejemplo básico de un bucle for donde la variable de inicialización está declarada fuera del bucle for.

int m;
for(m=1;m&lt;5;m++){
  System.out.print(&quot;Marker &quot; + m + &quot; &quot;);
}
System.out.println(&quot;Last Marker &quot; + m + &quot;n&quot;);

La salidá será Marker 1 Marker 2 Marker 3 Marker 4 Last Marker 5

El siguiente código es similar, solo que la variable se declara en el bucle for.

for(int mark=1;mark&lt;5;mark++){
  System.out.print(&quot;Marker &quot; + mark + &quot; &quot;);
}

Declarar la variable en el mismo bucle for está permitido y es el uso mas común. SIn embargo no puedes usar la variable fuera del bucle fo. El resultado de este código de ejemplo sería un error de compilación:

for(int mark=1;mark&lt;5;mark++){
  System.out.print(&quot;Marker &quot; + mark + &quot; &quot;);
}
System.out.println(&quot;Last Marker &quot; + mark + &quot;n&quot;);

The Enhanced for loop Statement

El bucle for mejorado es usado para arrays, colecciones, u objetos que implementen interfases iterables. Este bucle también es conocido como bucle for each o por for in. La iteración ocurre para cada elemento en el array o clase iterable. Hay que recordar que el bucle se puede terminar con un break, y con el continue se termina con la iteración actual y continúa con la siguiente.
El uso general del for es:

for(type variable: collection)statement sequence

El siguiente código demuestra el cómo usar fácilmente el bucle for mejorado con el contenido de un array.

int hookSizes[]={1,1,1,2,2,4,5,5,5,6,7,8,8,9};
for (int hook : hookSizes)
  System.out.print(hook + &quot; &quot;);

La salida de este código de ejemplo será: 1 1 1 2 2 4 5 5 5 6 7 8 8 9

El bucle for mejorado es frecuentemente usado para la búsqueda a través de items en una colección. Aquí el bucle itera por cada hook Integer en la colección hookSizeList. Por cada iteración, el hook es imprimido por pantalla. Este ejemplo demeustra el uso de colecciones.

Integer hookSizeList;
ArrayList&lt;Integer&gt; hookSizesList=new ArrayList&lt;Integer&gt;();
hookSizesList.add(1);
hookSizesList.add(4);
hookSizesList.add(5);
for(Integer hook : hookSizesList) System.out.print(hook + &quot; &quot;);

La salida de este código de ejemplo sería: 1 4 5

Hasta aquí esta parte, en la siguiente terminaremos de detallar las otras 2 estructuras de iteración, que son el whiele y do-while.

Cualquier corrección o aporte será bienvenido 😉

Saludos!!