AjLearning
AjLearning 0.1    





Introducción a Java - El gran comando for

Curso Introducción a Java

    Anterior     Siguiente

Y llegamos a uno de los comandos de bucle baluarte del lenguaje C/C++, trasladado al lenguaje Java con alguna modificación. El gran ciclo for (para ...) se presenta como :

for (<inicio>;<expresión booleana>;<repetir al final>) <sentencia> y es completamente equivalente a:
<inicio> while (<expresion>) { <sentencia> <repetir al final> } Es decir, se ejecutan las sentencias de . Luego se evalúa la expresión, y si da verdadera, se ejecuta la sentencia del for, y las sentencias de repetir al final, volviendo a evaluar la expresión. Cuando la expresión se evalúe a falso, se sale interrumpe el ciclo.

Este es un comando usado y abusado por los programadores C/C++, que en general lo usan para recorrer una serie de valores numéricos, como en:
int total=0 ; for (int k=1 ; k<=10 ; k++) total += k ; System.out.printnl(total); que calcula la suma de los primeros diez números aturales. Observemos el uso de declarar la variable entera k dentro del del for : esto es válido, y la variable "vive" sólo en el ámbito del for. Al terminar el mismo, la variable k se destruye. Por eso sería inválido :
for (int total=0, k=1 ; k<=10 ; k++) total += k ; System.out.printnl(total) ; porque la variable total sólo existe mientras se está en el for.

Por supuesto, se puede poner un bloque de sentencias a ejecutar en un for, como en la siguiente función:
public long cuadrado(int valor) { long total =0; for (int k=1; k<=valor; k++) { if ((k%2) ==0) continue; total+=k; } return total; } Esta función suma los valores impares, desde 1 hasta valor inclusive (esto da, curiosamente, el valor elevado al cuadrado). Observamos el uso del comando continue, que hace que se saltee el resto del bloque de sentencias for, y se siga con el próximo ciclo. Al contrario de break, el continue prosigue la ejecución del ciclo, no la corta.
El continue se puede usar en otras construcciones de ciclos, como el while.

El cálculo anterior se podría haber implementado de la siguiente manera:
public long cuadrado(int valor) { long total=0 ; for (int k=1 ; k<=valor ; k+=2) total+=k ; return total ; } Acá se utilizó la expresión k+=2, para incrementar el valor de k de dos unidades.

Cada una de las tres expresiones internas a los paréntesis del for, es opcional. En el caso extremo se puede llegar a un for infinito, como:
for ( ; ; ) porSiempre() ; El ciclo for es muy usado para recorrer elementos de un arreglo, o, como en el siguiente
ejemplo, caracteres de un String :
public void procesaCadena(String texto) { for (int k =0 ; k<texto.length ; k++) procesaCaracter(texto.charAt(k)) ; } Un ejemplo completo, con un for dentro de otro, lo tenemos en el siguiente programa, que calcula los factoriales de 1 a 16:
public class Factorial { public static void main(String [] args) { int k; for (k=1; k<=16; k++) { long factorial = 1; for (int j=1; j<=k; j++) factorial *= j; System.out.println("El factorial de " + k + " es " + factorial); } } }

Definimos dos variables, k y j, de tipo entero, para usar en un cálculo no recursivo de 16 factoriales, que produce al ejecutarlo:
El factorial de 1 es 1 El factorial de 2 es 2 El factorial de 3 es 6 El factorial de 4 es 24 El factorial de 5 es 120 El factorial de 6 es 720 El factorial de 7 es 5040 El factorial de 8 es 40320 El factorial de 9 es 362880 El factorial de 10 es 3628800 El factorial de 11 es 39916800 El factorial de 12 es 479001600 El factorial de 13 es 6227020800 El factorial de 14 es 87178291200 El factorial de 15 es 1307674368000 El factorial de 16 es 20922789888000

Programado por Angel J. Lopez www.ajlopez.com