Contenidos
Sentencias de control
Las sentencias de control son no son más que un conjunto de palabras que indican al intérprete cosas como cuál es la próxima sentencia a ejecutar, cuántas veces evaluar una determinada expresión, etc
Sentencias de selección
Sirven para agrupar declaraciones y sentencias en una sentencia compuesta o bloque, que a partir de ese momento se puede considerar sintácticamente equivalente a una simple
if-else
La expresión if-else permite elegir si se ejecutará la siguiente o siguientes sentencias en función de un valor booleano
Tiene la siguiente sintáxis:
Primero se evalúa la expresión booleana y en caso de que su resultado sea igual TRUE se ejecutara el bloque de sentencias a continuación del if
En caso de que su resultado sea igual FALSE se ejecutara el bloque de sentencias a continuación del else
else es opcional y podemos no usarlo, aunque si queremos tener todas las opciones cubiertas, es recomendable usarlo
Dentro de un bloque de sentencias pueden incluirse if-else adicionales, a esta práctica se la conoce como anidamiento y es muy útil para seguir añadiendo condiciones de comprobación al código
En el ejemplo se han comparado los valores de los enteros contenidos en las variables a, b y c, utilizando if-else anidados, mostrando al usuario el valor más alto por pantalla
else-if
La expresión else-if es una mejora a la expresión if-else, su funcionamiento es similar, sin embargo permite disponer de una selección multiple sin recurrir al anidamiento, aunque dentro del bloque de sentencias seguirá siendo posible realizar anidaciones
Tiene la siguiente sintáxis:
else es opcional y podemos no usarlo, aunque si queremos tener todas las opciones cubiertas, es recomendable usarlo
El código de este ejemplo es muy similar al anterior usado con if-else, sintácticamente son equivalentes, pero se ha conseguido reducir un poco el número de líneas de código
switch
Dado que la selección múltiple es una construcción muy habitual, es más recomendable usar el switch
Pero hay que tener en cuenta que sólo funciona con expresiones enteras, no podemos usar cualquier expresión booleana como con if-else o else-if
Tiene la siguiente sintáxis:
Primero se evalúa la expresión entera y se comprueba si es igual al valor contenido en el primer case, en caso de que su resultado sea igual TRUE se ejecutara el bloque de sentencias a continuación de ese case
La ejecución no finalizará hasta encontrar un break, con lo que finalizaría la ejecución de la expresión switch
break puede omitirse y entonces pasaría a comprobar el siguiente case
En caso de que ningún case tenga valor TRUE, entonces funcionaría de forma similiar al else, ejecutándose el bloque de sentencias a continuación del default
En el ejemplo se ha comprobado qué día de la semana es el valor del entero mostrando el nombre del día y en caso de ser sábado o domingo, mostrando que es un día no lectivo y fin de semana
Este ejemplo sólo funcionaría con valores del 1 al 5, ya que si introducimos cualquier otro valor, nos mostraría por pantalla el valor por defecto, es decir, que es fin de semana
Sentencias de salto
En ocasiones necesitamos salir incondicionalmente de alguna expresión y para ello usaremos las sentencias de salto
break
Esta expresión proporciona la opción de salir incondicionalmente de una expresión while, do-while, for, for-each o switch
En caso de que la expresión esté anidada, lo que hará es salir de la expresión más interna
Tiene la siguiente sintáxis:
Aunque sintácticamente es correcta, su uso hace que el código sea difícil de leer, puesto que está añadiendo un punto de salida no controlado por una expresión booleana
continue
Esta expresión es similar a la expresión break, sin embargo, es menos agresiva
Rompe la ejecución del bloque de sentencias pero se vuelve a evaluar la expresión booleana
No puede usarse en un switch, ya que no tendría efecto alguno
En caso de que la expresión esté anidada, lo que hará es salir de la expresión más interna
Tiene la siguiente sintáxis:
Sentencias de iteración
En ocasiones necesitamos ejecutar un bloque de sentencias un determinado o indeterminado número de veces, a estas sentencias se las denomina bucles
while
Esta expresión repite un bloque de sentencias mientras se cumpla una expresión booleana
Tiene la siguiente sintáxis:
Dentro del bloque de sentencias debemos asegurarnos de que se modifica de alguna manera el valor de la expresión booleana, ya que sino podemos caer en un bucle que no termina nunca y que se denomina bucle infinito
Esta situación no es deseable, ya que nuestro programa quedará colgado y es probable que el usuario no sabría qué hacer en esa situación, ya que el programador no se ha molestado en controlarla
En el ejemplo se recorren los números del 1 al 100 y se muestran al usuario por pantalla
Se ha empezado el contador en 0, porque es un convenio que se utilizaba para inicializar variables en C y se sigue utilizando en Java
Igual que utilizar los nombres de variable i, k o j para contadores
do-while
Esta expresión es similar al while, sin embargo siempre se ejecuta el bloque de sentencias al menos una vez y la comprobación de la condición se realiza después de esa ejecución
Tiene la siguiente sintáxis:
Dentro del bloque de sentencias debemos asegurarnos de que se modifica de alguna manera el valor de la expresión booleana, ya que sino podemos caer en un bucle infinito
También admite las expresiones break y continue
En el ejemplo se recorren los números del 1 al 100 y se muestran al usuario por pantalla
Hay que tener en cuenta que la primera vez no se evalúa la expresión booleana, sino fuera por esa situación, sería totalmente equivalente a la expresión while
for
Esta expresión es similar al while, sin embargo permite inicializar la variable que controlará el bucle
Tiene la siguiente sintáxis:
Dentro de la variación de la variable debemos asegurarnos de que se modifica de alguna manera el valor de la expresión booleana, ya que sino podemos caer en un bucle infinito
También admite las expresiones break y continue aunque se desaconseja su uso, ya que se considera que para esta expresión rompen el flujo normal del programa
En el ejemplo se recorren los números del 1 al 100 y se muestran al usuario por pantalla
Es totalmente equivalente a la expresión while, pero ahorra algunas líneas de código al incluir su propia inicialización y en este caso, un incremento de la variable fuera del bloque de expresiones
for-each
Esta expresión es similar al for pero está especializada en recorrer objetos que admitan la clase Iterator
Fue introducido en la versión 5 de Java
Tiene la siguiente sintáxis:
No es necesario asegurarnos de que se modifica de alguna manera el valor de la expresión booleana como en un for, ya que al basarse en la clase Iterator, el bucle terminará cuando no queden más elementos del objeto, impidiendo de esta forma caer en un bucle infinito
También admite las expresiones break y continue aunque se desaconseja su uso, ya que se considera que para esta expresión rompen el flujo normal del programa
En el ejemplo se recorre un array que contiene los números del 1 al 5 y se muestran al usuario por pantalla
En este caso se en ha recorrido un sencillo array, pero podrían recorrerse objetos más especializados (siempre que admitan la clase Iterator) como un ArrayList, un Vector, un Map, etc