Programación en Java/Sentencia for

De Wikilibros, la colección de libros de texto de contenido libre.

Trabajamos con casos de interacción en donde a priori no conocíamos la cantidad de ciclos que se ejecutaban hasta cumplir con una condición. Para esto utilizamos la sentencia while. Pero ahora estudiaremos con más detalle aquellos casos en donde se sabe de antemano cuantos ciclos se deben cumplir para terminar la ejecución.

Imprimiremos una tabla de multiplicar hasta el factor noveno. Si no utilizamos ninguna estructura de interacción, deberíamos imprimir nueve líneas de código secuencial.

System.out.println("3 x 1 = 3");
System.out.println("3 x 2 = 6");
System.out.println("3 x 3 = 9");
System.out.println("3 x 4 = 12");
System.out.println("3 x 5 = 15");
System.out.println("3 x 6 = 18");
System.out.println("3 x 7 = 21");
System.out.println("3 x 8 = 24");
System.out.println("3 x 9 = 27");

Pero ya conocemos las estructuras que nos ahorran el esfuerzo de escribir tanto código. Utilizaremos una sentencia que ya conocemos: el while

int factor = 1;
     while ( factor <= 9 ) {
        System.out.println("3 x " + factor + " = " + 3*factor );
        factor++;
     }

Utilizamos la variable factor para contar la cantidad de líneas que imprimimos. Primeramente la inicializamos en uno. Cuando se ejecuta la interacción se controla que no supere su valor de 9. Si el valor es menor o igual que nueve, imprime una línea de la tabla e incrementa a uno el valor de factor. Cualquier caso de interacción que se complete en una cantidad prefijada de ciclos, necesitamos una variable de control. Si utilizamos la sentencia while, esta variable se debe definir e inicializar antes del bucle y contar con una instrucción que modifique su valor dentro del bucle.

Veremos como este código cambia ligeramente si en lugar de while presentamos una nueva sentencia denominada for

for ( int factor = 1; factor <= 9; factor ++ ) {
      System.out.println("3 x " + factor + " = " + 3*factor );
}

la sentencia for me permite repetir un ciclo n veces, en donde se debe determinar el valor inicial y cuantas veces se repetira.

sintaxis

for({valor inicial};{condición de termino};{factor de incremento del valor inicial}){
  //acá va lo que se repetirá n veces de acuerdo a la condición de termino
}


Bucle infinito: no hay control, entonces no se detiene

 for ( ;;){}

Operador coma :

 for ( int k=1, j=10 ;k < j ;k++ ,j-- ){
                 System.out.println(k + " " + j);
             }

for mejorado[editar]

Supongamos que tenemos un arreglo de enteros que deseamos presentar en pantalla, usando la orden for tradicional (en cuyo caso solo se realizará la primera linea de códigos que tengamos debajo de la sentencia), el código, podría quedar así:

 int[] laiEnteros = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 for (int i = 0; i < 10; i ++)
     System.out.println (laiEnteros[i]);

Java ofrece una funcionalidad extra para la orden for, mediante la que se puede simplificar notablemente el codigo anterior, quedando así:

 int[] laiEnteros = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 for (int liElemento : laiEnteros)
     System.out.println (liElemento);

En este caso, liElemento toma el valor de cada uno de los elementos de laiEnteros, permitiendo una navegación más simple, puesto que se evitan posibles errores derivados del uso de los arreglos en forma directa. También se puede usar esta forma, para estructuras más complejas como objetos de la clase Collection

 public void Presenta (Collection <Integer> poConjunto){
    for (Iterator <Integer> loElemento : poConjunto)
        System.out.println (loElemento)
 }