Sunteți pe pagina 1din 5

Estructuras de repeticin

Una estructura cclica es la sentencia de control que permite ejecutar una o ms instrucciones un nmero predeterminado de veces, mientras o hasta que se cumpla una determinada condicin. Las tres sentencias de repeticin de Java son:

Ciclos condicionados al inicio (while) Ciclos condicionados al final (do-while) Ciclos controlados por contador (for) Repetir MIENTRAS (WHILE)
La sentencia while se utiliza en ciclos condicionados al inicio, es decir, aquellos en los que se evala una condicin antes de entrar al ciclo y solo se entra a l en caso de que el resultado de la condicin sea verdadero, mantenindose dentro del ciclo mientras la condicin se siga cumpliendo. Formato general de la sentencia while:
while (< expresin booleana> ) < sentencias >;

Donde < expresin booleana > es cualquier condicin simple o compleja cuyo valor puede ser falso o verdadero, y < sentencias> puede ser una sentencia nica o una sentencia compuesta, lo cual obliga a utilizar llaves para delimitar el cuerpo o mbito de la estructura cclica. Ejemplo: Suponga que se quiere calcular la suma de los primeros 100 nmeros enteros positivos 1, 2..100. A continuacin se muestra un fragmento del programa que permite realizar dicha suma utilizando una sentencia while:
int suma = 0, numero = 1; while ( numero < = 100 ) { suma = suma + numero; numero = numero + 1; }

Repetir hasta (do-while).

En el ejemplo anterior, se estarn acumulando (sumando) los valores de la variable numero mientras su valor sea menor o igual a 100, es decir, cuando numero sea igual a 101 el ciclo terminar porque la condicin que se est probando ser falsa.

La sentencia do-while se condiciona al final del ciclo y por ello se ejecuta al menos una vez el bloque de instrucciones correspondientes al ciclo, mantenindose ah hasta que la condicin evaluada sea falsa. El formato general de la sentencia do-while es:
do < sentencias >; while ( < expresin booleana > );

Ejemplo: Suponga que se desea hacer lo mismo que en el ejemplo anterior, el fragmento del programa quedara de la siguiente manera.
int suma = 0, numero = 1; do { suma += numero; numero + +; } while ( numero < = 100 );

Es importante hacer notar que las sentencias que se encuentran en el cuerpo de una estructura dowhile se podran repetir desde 1 hasta n veces. Es decir, al menos se ejecutarn una vez, antes de que se evale la expresin booleana y se decida si se contina dentro del ciclo o si termina su ejecucin y pasa el control a la siguiente sentencia del programa. En contraste, la estructura while presentada en la seccin 7.1 permite la repeticin de las sentencias que la componen desde 0 hasta n veces. Es decir, dado que lo primero que sucede es la evaluacin de la expresin booleana, pudiera ocurrir que esta fuera falsa desde la primera vez, por lo que el ciclo nunca se efectuara y se pasara automticamente el control a la siguiente sentencia que se encuentre en el programa, ignorando las sentencias escritas en el bloque del ciclo. Ejemplo:
int x=5; while (x<5) { System.out.println(x); x++; } int x=5; do { System.out.println(x); x++; } while (x<5);

En este ejemplo el ciclo nunca efecta las En este ejemplo se mostrara en pantalla el instrucciones que contiene. No despliega el nmero 5, se incrementa la variable x y valor ni incrementa la variable. termina el ciclo.

Repetir desde (for).


La sentencia for es especialmente adecuada para ciclos controlados por contador. Aqu se emplea una variable numrica denominada variable de control(contador), cuya funcin es contar las veces que habr de ejecutarse el ciclo, esta variable se inicializa con un valor e inmediatamente se evala la expresin booleana, si el resultado de la evaluacin es verdadera, se ejecutan las sentencias del ciclo, en cualquier otro caso, la sentencia del for termina y el flujo de control se mueve a la sentencia que se encuentre inmediatamente despus del ciclo for. Cada vez que se ejecute el ciclo se incrementar automticamente el valor de la variable de control y se evala de nuevo la expresin booleana, hasta terminar el ciclo cuando la condicin sea falsa. Formato general de la sentencia for : for ( < inicio >; < expresin booleana >; <incremento> ) < sentencia >; El componente < inicio > se emplea para inicializar la variable de control, tambin puede incluir la declaracin de la misma, es decir se puede hacer algo como lo siguiente:
for ( int i = 0; i < 10; i + + )

en lugar de:
int i; for ( i = 0; i < 10; i + + ) Nota:

En el componente inicio la variable de control se puede inicializar con cualquier valor, aunque casi siempre suele ser 0 o 1.

El componente < expresin booleana > se refiere a la condicin que habr de cumplirse para poder entrar al ciclo y permanecer en el. Para el ejemplo anterior la expresin sera la siguiente: i< 10 El ltimo componente es el del < incremento > que sirve para modificar el valor de la variable de control de tal modo que al cabo de algn tiempo no se cumpla la condicin que mantiene la ejecucin del ciclo provocando el final del mismo. En el 3

ejemplo anterior se incrementa la variable de control en uno, pero se puede incrementar con valores distintos a uno, incluyendo valores negativos. Ejemplo: Suponga que se desea hacer lo mismo que en los ejemplos anteriores, el fragmento del programa quedara de la siguiente manera. int suma = 0, numero; for ( numero = 0; numero<=100; numero ++ ) { suma + = numero; } Donde la variable de control en este ejemplo ser la variable numero, que se inicializa con un valor de cero e inmediatamente despus se evala la expresin booleana, que ser verdadera mientras que numero tenga un valor menor o igual a 100 y saldr del ciclo hasta que numero tome un valor de 101 en cuyo caso el resultado de la evaluacin no se cumplir, provocando con esto que la sentencia for termine su ejecucin. Ejercicio de autoestudio #1: Teclea lo siguiente en un programa de Java y escribe el resultado que observes en pantalla. Recuerda que cuando el ciclo ejecuta una sola lnea (como en este ejemplo, que solo va ha ejecutar un c.println), las llaves que abren y cierran son opcionales. Cuando son ms de una instruccin son obligatorias. for ( int i = 0; i < 10; i + + ) { System.out.println(i); } Observa que se declara e inicializa la variable i en 0 (cero), despus se compara si su valor (el de i) es menor que 10, como el resultado de la condicin es verdadera (true), entra al cuerpo del ciclo a efectuar el c.println(i). Despus regresa e incrementa AUTOMTICAMENTE el valor de la variable en 1 (por eso dice i++ en el ltimo componente del ciclo), vuelve a checar si la condicin se cumple (es decir, si la variable sigue siendo menor que 10), y cada vez que esto sea cierto entra a realizar el c.println(i). Continuando de esta manera hasta que la variable tome un valor de 10 (como 10 no es menor que 10 el ciclo termina). Realice los siguientes cambios, ejectelo nuevamente y analice el efecto de cada uno de estos cambios en la ejecucin del ejemplo. Despus de cada ejecucin djelo nuevamente en su forma original para probar el siguiente cambio: Cambie el valor final (10) por un valor de 20, ejectelo nuevamente y analice lo que pasa.

Cambie el valor inicial (0) por un que pasa. Cambie el valor inicial (0) por un que pasa. Cambie el valor del incremento (i Cambie el valor del incremento (i

5, ejectelo nuevamente y analice lo 5, ejectelo nuevamente y analice lo + +) por un incremento de (i + =2). + +) por un decremento de (i --).

Ejercicio de autoestudio #2: Teclea cada una de las siguientes sentencias y anota el resultado que aparece en pantalla para cada una: for (int i=1 ; i<=5 ; i++) for (int j=1; j<=20; j=j+2) for (int j=20; j>0; j=j-2) System.out.println(i+ System.out.println(j + System.out.println( j + ); ); );

Ejercicio de autoestudio #3: Teclea cada una de las siguientes sentencias y estudia el resultado que aparece en pantalla para cada una:
double precio, total=0; int num, posi=0, neg=0; for (int i=1 ; i<=5 ; i++) for (int j=1; j<10; j=j+1) { { System.out.println (Da el precio del System.out.println ( Dame un nmero producto # + i +: ); entero diferente de cero: ); precio=c.readDouble( ); num=c.readInt( ); total=total+precio; if (num>0) } posi ++; System.out.println (la suma de todos los else precios es + total); neg ++; System.out.println (el promedio de los } precios es + total/5); System.out.println (Tecleaste + posi + nmeros positivos); System.out.println (Tecleaste + neg + nmeros negativos);

S-ar putea să vă placă și