3.6 KiB
title | localeTitle |
---|---|
Control Flow | Flujo de control |
Flujo de control
Las declaraciones de flujo de control son exactamente lo que significa el término. Son declaraciones que alteran el flujo de ejecución basándose en decisiones, bucles y bifurcaciones para que el programa pueda ejecutar condicionalmente bloques de código.
Principalmente, Java tiene las siguientes construcciones para el control de flujo:
-
if
if( <expression that results in a boolean> ){ //code enters this block if the above expression is 'true' }
-
if...else
if( <expression that results in a boolean> ){ //execute this block if the expression is 'true' } else{ //execute this block if the expression is 'false' }
-
switch
Switch es una alternativa para la construcción if...else
cuando hay varios valores y casos con los que se puede verificar.
switch( <integer / String / Enum > ){
case <int/String/Enum>:
<statements>
break;
case <int/String/Enum>:
<statements>
break;
default:
<statements>
}
Nota: El flujo del programa falls through
del siguiente case
si falta la instrucción break
. por ejemplo, digamos que dices el "Hola" estándar a todos en la oficina, pero eres muy amable con la chica que se sienta a tu lado y le suena gruñón a tu jefe. La forma de representar sería algo como:
switch(person){
case 'boss':
soundGrumpy();
break;
case 'neighbour':
soundExtraNice();
break;
case 'colleague':
soundNormal();
break;
default:
soundNormal();
}
Note: The `default` case runs when none of the `case` matches. Remember that when a case has no `break` statement, it `falls through` to the next case and will continue to the subsequent `cases` till a `break` is encountered. Because of this, make sure that each case has a `break` statement. The `default` case does not require a `break` statement.
nested statements
Cualquiera de los flujos de control anteriores puede ser anidado. Esto significa que puede haber anidado if
, if..else
y switch..case
declaraciones. es decir, puede tener cualquier combinación de estas declaraciones dentro de la otra y no hay limitación en cuanto a la profundidad del nesting
.
Por ejemplo, consideremos el siguiente escenario:
- Si tienes menos de 25 dólares, puedes conseguirte una taza de café.
- Si tienes más de 25 dólares pero menos de 60 dólares, obtienes una comida decente.
- Si tienes más de 60 dólares pero menos de 100, obtienes una comida decente junto con una copa de vino.
- Sin embargo, cuando tienes más de 100 dólares, dependiendo de con quién estés, o bien vas a una cena a la luz de las velas (con tu esposa) o vas a un bar deportivo (con tus amigos).
Una de las formas de representarlo será:
int cash = 150;
String company = "friends";
if( cash < 25 ){
getCoffee();
} else if( cash < 60 ){
getDecentMeal();
} else if( cash < 100 ){
getDecentMeal();
getGlassOfWine();
} else {
switch(company){
case "wife":
candleLitDinner();
break;
case "friends":
meetFriendsAtSportsBar();
break;
default:
getDecentMeal();
}
}
En este ejemplo, se meetFriendsAtSportsBar()
.