lunes, 21 de marzo de 2016

Estructuras de repetición en JAVA - 2 de 3



Estructura do-while

La estructura de repetición do-while ejecuta el bloque de sentencias al menos una vez. Después comprueba la condición y repite el bloque de sentencias mientras la condición es verdadera. 

El diagrama de flujo de una estructura do-while muestra que la condición se verifica al final, después de ejecutar el bloque de sentencias la primera vez.



Un do-while tiene la siguiente sintaxis:

inicialización;
do {
bloque-de-sentencias;
actualizacion;
} while (condición);

Esta es la sintaxis general. La condición del do-while se escribe obligatoriamente entre paréntesis. 

Un do-while no necesariamente utiliza una variable de control. En ese caso solo es necesario incluir la condición y el bloque de sentencias: 

do {
bloque-de-sentencias;
} while (condición);

Cuando el programa ejecuta un do-while, lo primero que hace es ejecutar el bloque de sentencias y luego evalúa la condición. Si es verdadera, ejecuta de nuevo el bloque de sentencias, si es falsa finaliza el do-while. 

En cada iteración, cuando finaliza la ejecución del bloque de sentencias se vuelve a evaluar la condición. De nuevo, si es verdadera ejecuta una vez más el bloque de sentencias, si es falsa finaliza el do-while. Cuando esto se produce, el flujo del programa continúa en la sentencia inmediatamente posterior al do-while.

Programa que calcula la función factorial de un número utilizando la estructura do-while.

public class FactorialDoWhile {
public static void main(String[] args) {
int n = 5; // n se inicializa a 5 para calcular 5!
int factorial = 1 // factorial se inicializa a 1
int i = 1; // el valor inicial de i es 1
do {
factorial = factorial * i;
i++;
} while (i <= n);
System.out.println("El factorial de " + n + " es " +
factorial);
}
}


Estructura for

La estructura de repetición for repite el bloque de sentencias mientras la condición del for es verdadera. Un for es un caso particular de la estructura while. Solo se debe utilizar cuando se sabe el número de veces que se debe repetir el bloque de sentencias. 

El diagrama de flujo de una estructura for es igual que el de un while. Un for verifica la condición justo después de inicializar la variable de control. 
Si el resultado de evaluar la condición por primera es falso, entonces no se ejecuta el bloque de sentencias.


Un for tiene la siguiente sintaxis:

for (inicialización; condición; actualización) {
bloque-de-sentencias;
}

Cuando el programa ejecuta un for, lo primero que hace es evaluar la condición. Si es verdadera ejecuta el bloque de sentencias, si es falsa finaliza el for.

En cada iteración, cuando finaliza la ejecución del bloque de sentencias se vuelve a evaluar la condición. De nuevo, si es verdadera ejecuta una vez más el bloque de sentencias, si es falsa finaliza el for. Cuando esto se produce, el flujo del programa continúa en la sentencia inmediatamente posterior al for.

Programa que calcula la función factorial de un número utilizando la estructura for.

public class FactorialFor {
public static void main(String[] args) {
int n = 5; // n se inicializa a 5 para calcular 5!
int factorial = 1 // factorial se inicializa a 1
for (int i=1; i <= n; i++) {
factorial = factorial * i;
}
System.out.println("El factorial de " + n + " es " +
factorial);
}
}

Normalmente la variable de control se declara y se inicializa en la sección de inicialización de la variable. En este ejemplo se hace int i= 1, es decir se declara una variable i de tipo int y se inicializa a 1. La condición del for es i <= n, la misma que se ha utilizado en el while y el do-while. Por último, la variable i se incrementa en 1 en cada iteración. En el for, el while y el do-while el incremento de i se realiza con el operador ++.
Es posible combinar estructuras de selección y estructuras de iteración. Si se define una estructura de repetición dentro de otra, entonces se tiene una estructura de repetición anidada.

El siguiente ejemplo utiliza tres for anidados. ¿Cuántas veces se muestra por la consola el mensaje “Hola Mundo”?

public class ForAnidado {
public static void main(String[] args) {
for (int i=1; i <= 5; i++)
for (int j=2; j <= 4; j++)
for (int k=3; k <= 6; k++)
System.out.println("Hola Mundo");
}
}

Para saber cuántas veces se imprime el mensaje es necesario saber cuántas veces se repite cada for. El for de i se repite 5 veces, el for de j se repite 3 veces y el for de k se repite 4 veces. Como el for de k está dentro del for de j y éste dentro del for de i, el mensaje se imprime 5x3x4 veces, un total de 60 veces.


Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario en la entrada