Está en la página 1de 7

24/4/2014

ENI Training - Libro online

Las estructuras de control


Las estructuras de control permiten modificar el orden de ejecucin de las instrucciones en nuestro cdigo. Java dispone de dos tipos de estructuras: Las estructuras de decisin: orientarn la ejecucin del cdigo en funcin de los valores que pueda tomar una expresin de evaluacin. Las estructuras de bucle: harn ejecutar una porcin de cdigo cierto nmero de veces, hasta que o mientras una condicin se cumpla.

1. Estructuras de decisin
Dos soluciones son posibles.

a. Estructura If
Se pueden usar hasta cuatro sintaxis para la instruccin I f . i f( c o n d i c i n ) i n s t r u c c i n ; Si la condicin es verdadera, la instruccin se ejecuta. La condicin debe ser una expresin que, una vez evaluada, debe dar un b o o l e a nt r u eo f a l s e . Con esta sintaxis, slo la instruccin situada despus del i f ser ejecutada si la condicin es verdadera. Para poder hacer ejecutar varias instrucciones en funcin de una condicin debemos utilizar la sintaxis siguiente.

i f( c o n d i c i n ) { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; } En este caso, se ejecutar el grupo de instrucciones situado entre las llaves si la condicin es verdadera. Tambin podemos especificar una o varias instrucciones que se ejecutarn si la condicin es falsa.

i f( c o n d i c i n ) { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; } e l s e { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; } Tambin podemos imbricar las condiciones en la sintaxis. En este caso, se prueba la primera condicin. Si es verdadera, se ejecuta el bloque de cdigo
http://www.eni-training.com/client_net/mediabook.aspx?idR=65880 1/7

24/4/2014

ENI Training - Libro online

i f( c o n d i c i n 1 ) { I n s t r u c c i n1 . . . I n s t r u c c i nn } e l s ei f( c o n d i c i n 2 ) { I n s t r u c c i n1 . . . I n s t r u c c i nn } e l s ei f( c o n d i c i n 3 ) { I n s t r u c c i n1 . . . I n s t r u c c i nn } e l s e { I n s t r u c c i n1 . . . I n s t r u c c i nn } correspondiente, y si no, se prueba la siguiente y as sucesivamente. Si no se verifica ninguna condicin, se ejecutar el bloque de cdigo del e l s e . La instruccin e l s eno es obligatoria en esta estructura. Por ello es posible que no se llegue a ejecutar instruccin alguna si ninguna de las condiciones es verdadera. Tambin existe un operador condicional que permite efectuar un i f . . . e l s e en una sla instruccin. c o n d i c i n ? e x p r e s i n : e x p r e s i n 2 ; Esta sintaxis equivale a la siguiente:

I f( c o n d i c i n ) e x p r e s i n 1 ; e l s e e x p r e s i n 2 ;

b. Estructura switch
La estructura s w i t c h permite un funcionamiento equivalente pero ofrece una mejor legibilidad del cdigo. La sintaxis es la siguiente:

s w i t c h( e x p r e s i n ) { c a s ev a l o r 1 : I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; b r e a k ; c a s ev a l o r 2 : I n s t r u c c i n1 ; . . . I n s t r u c c i nn ;
http://www.eni-training.com/client_net/mediabook.aspx?idR=65880 2/7

24/4/2014

ENI Training - Libro online

b r e a k ; d e f a u l t : I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; } El valor de la expresin se evala al principio de la estructura (por el s w i t c h ) luego se compara el valor obtenido con el valor especificado en el primer c a s e . Si los dos valores son iguales, entonces el bloque de cdigo 1 se ejecuta. Si no, se compara el valor obtenido con el valor del c a s e siguiente y, si hay correspondencia, se ejecuta el bloque de cdigo y as sucesivamente hasta el ltimo c a s e . Si no se encuentra ningn valor concordante en los diferentes c a s ese ejecuta el bloque de cdigo especificado en el d e f a u l t . Cada uno de los bloques de cdigo debe ser finalizado por la instruccin b r e a k . Si no es el caso, la ejecucin continuar por el bloque de cdigo siguiente hasta encontrar una instruccin b r e a ko hasta el fin de la estructura s w i t c h . Esta solucin se puede utilizar para poder ejecutar un mismo bloque de cdigo para diferentes valores probados. El valor que se debe probar puede estar contenido en una variable pero tambin puede ser el resultado de un clculo. En tal caso, slo se ejecuta el clculo una nica vez al principio dels w i t c h . El tipo del valor probado puede ser numrico entero, carcter, cadena de caracteres o enumeracin. Por supuesto, es necesario que el tipo de la variable probada corresponda al tipo de los valores en los diferentes c a s e . Si la expresin es de tipo cadena de caracteres, se utiliza el mtodo e q u a l spara verificar si es igual a los valores de los distintos c a s e . La comparacin hace por tanto distincin entre maysculas y minsculas.

B u f f e r e d R e a d e rb r ; b r=n e wB u f f e r e d R e a d e r( n e wI n p u t S t r e a m R e a d e r( S y s t e m i n ) ) ; S t r i n gr e s p u e s t a=" " ; r e s p u e s t a=b r . r e a d L i n e ( ) ; s w i t c h( r e s p u e s t a ) { c a s e s : c a s e S : S y s t e m . o u t . p r i n t l n ( " r e s p u e s t ap o s i t i v a " ) ; b r e a k ; c a s e n : c a s e N : S y s t e m . o u t . p r i n t l n ( " r e s p u e s t an e g a t i v a " ) ; b r e a k ; d e f a u l t : S y s t e m . o u t . p r i n t l n ( " r e s p u e s t ae r r n e a " ) ; }

2. Las estructuras de bucle


Disponemos de tres estructuras:

w h i l e( c o n d i c i n ) d o. . .w h i l e( c o n d i c i n ) f o r

http://www.eni-training.com/client_net/mediabook.aspx?idR=65880

3/7

24/4/2014

ENI Training - Libro online

Todas tienen por meta hacer ejecutar un bloque de cdigo un determinado nmero de veces en funcin de una condicin.

a. Estructura while
Esta estructura ejecuta un bloque de manera repetitiva mientras la condicin sea t r u e .

w h i l e( c o n d i c i n ) { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; } La condicin se evala antes del primer ciclo. Si es f a l s een este momento, el bloque de cdigo no se ejecuta. Despus de cada ejecucin del bloque de cdigo la condicin vuelve a ser evaluada para comprobar si se hace necesario volver a ejecutar el bloque de cdigo. Se recomienda que la ejecucin del bloque de cdigo contenga una o varias instrucciones capaces de hacer evolucionar la condicin. Si no es el caso, el bucle se ejecutar sin fin. Bajo ningn concepto se debe poner el carcter ; despus del w h i l eporque en este caso, el bloque de cdigo dejar de asociarse con el bucle.

i n ti = 0 ; w h i l e( i < 1 0 ) { S y s t e m . o u t . p r i n t l n ( i ) ; i + + ; }

b. Estructura do ... while


d o { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; } w h i l e( c o n d i c i n ) ; Esta estructura tiene un funcionamiento idntico a la anterior excepto que la condicin se examina despus de la ejecucin del bloque de cdigo. Nos permite garantizar que el bloque de cdigo se ejecutar al menos una vez ya que la condicin se probar por primera vez despus de la primera ejecucin del bloque de cdigo. Si la condicin es t r u e , el bloque se ejecuta de nuevo hasta que la condicin sea f a l s e . Debemos tener cuidado en no olvidar el punto y coma despus del w h i l esi no el compilador detectar un error de sintaxis.

d o { S y s t e m . o u t . p r i n t l n ( i ) ; i + + ; } w h i l e ( i < 1 0 ) ;

c. Estructura for

http://www.eni-training.com/client_net/mediabook.aspx?idR=65880

4/7

24/4/2014

ENI Training - Libro online

Cuando sabemos el nmero de iteraciones que se deben realizar en un bucle, es preferible utilizar la estructura f o r . Para poder utilizar esta instruccin, se debe declarar una variable de contador. Se puede declarar esta variable en la estructura f o r o en el exterior, y en tal caso se debe declarar antes de la estructura f o r . La sintaxis general es la siguiente:

f o r ( i n i c i a l i z a c i n ; c o n d i c i n ; i n s t r u c c i nd ei t e r a c i n ) { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ;

} La inicializacin se ejecuta una nica vez durante la entrada en el bucle. La condicin se evala en el momento de la entrada en bucle y luego a cada iteracin. El resultado de la evaluacin de la condicin determina si el bloque de cdigo se ejecuta: para esto, hace falta evaluar la condicin como t r u e . Despus de la ejecucin del bloque de cdigo procede la de la iteracin. A continuacin se comprueba de nuevo la condicin y as sucesivamente mientras la condicin sea evaluada como t r u e . El ejemplo muestra dos bucles f o ren accin para visualizar una tabla de multiplicar.

i n tk ; f o r ( k = 1 ; k < 1 0 ; k + + ) { f o r( i n tl=1 ;l<1 0 ;l + + ) { S y s t e m . o u t . p r i n t ( k*l+" \ t " ) ; } S y s t e m . o u t . p r i n t l n ( ) ; } Obtenemos el resultado siguiente:

1 2 3 4 5 6 7 8 9

2 4 6 8 1 0 1 2 1 4 1 6 1 8

3 6 9 1 2 1 5 1 8 2 1 2 4 2 7

4 8 1 2 1 6 2 0 2 4 2 8 3 2 3 6

5 1 0 1 5 2 0 2 5 3 0 3 5 4 0 4 5

6 1 2 1 8 2 4 3 0 3 6 4 2 4 8 5 4

7 1 4 2 1 2 8 3 5 4 2 4 9 5 6 6 3

8 1 6 2 4 3 2 4 0 4 8 5 6 6 4 7 2

9 1 8 2 7 3 6 4 5 5 4 6 3 7 2 8 1

Otra sintaxis del bucle f o rpermite hacer ejecutar un bloque de cdigo para cada elemento contenido en un array o en una instancia de clase al implementar la interfaz I t e r a b l e . La sintaxis general de esta instruccin es la siguiente:

f o r (t i p ov a r i a b l e :a r r a y ) { I n s t r u c c i n1 ; . . . I n s t r u c c i nn ; }
http://www.eni-training.com/client_net/mediabook.aspx?idR=65880 5/7

24/4/2014

ENI Training - Libro online

No hay nocin de contador en esta estructura ya que efecta por s misma las iteraciones en todos los elementos presentes en el array o coleccin. La variable declarada en la estructura sirve para extraer uno a uno los elementos del array o de la coleccin para que el bloque de cdigo pueda manipularlos. Por supuesto hace falta que el tipo de la variable sea compatible con el tipo de los elementos almacenados en el array o la coleccin. Se debe declarar la variable obligatoriamente en la estructura f o ry no en el exterior. Slo se podr utilizar en el interior de la estructura. Por lo contrario, no tenemos que preocuparnos del nmero de elementos porque la estructura es capaz de gestionar por s misma el desplazamiento en el array o la coleccin. Aqu est un pequeo ejemplo para aclarar la situacin! Con un bucle clsico:

S t r i n g [ ]a r r a y = { " r o j o " , " v e r d e " , " a z u l " , " b l a n c o " } ; i n tc p t ; f o r( c p t=0 ;c p t<a r r a y . l e n g t h ;c p t + + ) { S y s t e m . o u t . p r i n t l n ( a r r a y [ c p t ] ) ; } Con el bucle f o rde iteracin:

S t r i n g [ ]a r r a y = { " r o j o " , " v e r d e " , " a z u l " , " b l a n c o " } ; f o r( S t r i n gs :a r r a y ) { S y s t e m . o u t . p r i n t l n ( s ) ; }

d. Interrupcin de una estructura de bucle


Tres instrucciones pueden modificar el funcionamiento normal de las estructuras de bucle.

break
Si se ubica esta instruccin en el interior del bloque de cdigo de una estructura de bucle, provoca la salida inmediata de este bloque. La ejecucin contina por la instruccin situada despus de este bloque. La instruccin b r e a k suele ser ejecutada de modo condicional porque de lo contrario, las instrucciones posteriores dentro del bucle, no llegarin nunca a ser procesadas.

continue
Esta instruccin permite interrumpir la ejecucin de la iteracin actual de un bucle y proseguir con la ejecucin de la iteracin siguiente despus de haber comprobado la condicin de salida. Como en el caso de la instruccin b r e a kse debe ejecutar c o n t i n u ede manera condicional. Aqu hay un ejemplo de cdigo que utiliza un bucle sin fin y sus dos instrucciones para mostrar los nmeros impares hasta que el usuario teclee un retorno de carro.

i m p o r tj a v a . i o . I O E x c e p c i n ; p u b l i cc l a s sT e s t E s t r u c t u r a s{ s t a t i cb o o l e a ns t o p ; p u b l i cs t a t i cv o i dm a i n ( S t r i n g [ ]a r g s ) { n e wT h r e a d ( ) {
http://www.eni-training.com/client_net/mediabook.aspx?idR=65880 6/7

24/4/2014

ENI Training - Libro online

p u b l i cv o i dr u n ( ) { i n tc ; t r y { c = S y s t e m . i n . r e a d ( ) ; s t o p = t r u e ; } c a t c h( I O E x c e p c i ne ) { e . p r i n t S t a c k T r a c e ( ) ; } } } . s t a r t ( ) ; l o n gc o n t a d o r = 0 ; w h i l e ( t r u e ) { c o n t a d o r + + ; i f( c o n t a d o r % 2 = = 0 ) c o n t i n u e ; i f( s t o p ) b r e a k ; S y s t e m . o u t . p r i n t l n ( c o n t a d o r ) ; } } }

return
La instruccin r e t u r n se utiliza para salir inmediatamente del mtodo en curso de ejecucin y proseguir la ejecucin por la instruccin siguiente a la que llam este mtodo. Si est situada en una estructura de bucle, provoca en primer lugar la interrupcin inmediata del bucle y en segundo lugar la salida del mtodo en el cual se encuentra el bucle. La utilizacin de esta instruccin en una funcin cuyo tipo de retorno es diferente a v o i d obliga a proporcionar a la instruccin r e t u r n un valor compatible con el tipo de retorno de la funcin.

http://www.eni-training.com/client_net/mediabook.aspx?idR=65880

7/7

También podría gustarte