La programación se sustenta en su orden y estructura, cada solución computable consiste en una serie de pasos que permiten organizar los datos que se tienen y generar así nueva información.
Las estructuras de control te permitirán dar orden a cualquier programa y con esto potenciar las posibilidades y alternativas para solucionar problemas.
Tendrás una mejor comprensión de los diferentes estándares para la correcta redacción de programas, lo que dará un sentido más pragmático a tus soluciones.
La estructura brinda un mayor grado de mantenibilidad a una aplicación. Entre más simple sea su lectura mayor será su tiempo de vida útil pues una mayor cantidad de personas podrán aportar sus ideas al programa y es por eso por lo que se vuelve de especial relevancia el no solo comprender como funcionan las estructuras de control, sino cuál es su utilidad y en qué escenarios se pueden utilizar.
Como menciona Boyarsky (2020), el uso de operadores para transformar los datos y generar expresiones complejas es una herramienta muy poderosa, pero al mismo tiempo limitada al momento de controlar el flujo de un programa en función de los datos de entrada de este y de ciertas condiciones que no se pueden evaluar antes de que el programa se encuentre en ejecución.
Para ampliar tu panorama debes comprender en primer lugar lo que es una sentencia en Java, según Boyarsky (2020), se trata de la unidad mínima de ejecución de un programa y se encuentra delimitada por un ‘;’ (punto y coma).
System.out.println("Hola mundo!"); |
Tabla 1. Ejemplo de sentencia en Java.
Así mismo, es importante que comprendas el concepto de bloque de código, que nos permite agrupar un conjunto de sentencias y se encuentra delimitado por ‘{‘ y ‘}’ (llaves).
{ |
Tabla 2. Ejemplo de bloque de código en Java.
A partir de esto puedes construir bloques de código que se ejecuten en función de la evaluación de una expresión.
Estructuras de control (if / else)
A la primera estructura de decisión se le conoce por su nombre en inglés if statement.
Imagen 1. Estructura if en Java.
Mediante esta sentencia puedes controlar si un bloque de código debe ejecutarse o no, solo se requiere que la expresión usada como condición cubra el criterio deseado.
int hora = 12; if(hora < 12) { if (hora >= 12){ |
Tabla 3. Ejemplo de uso de estructura if.
En ocasiones te encontrarás con que tu código debe tomar uno de dos posibles caminos, cuando esto ocurra puedes cambiar la sintaxis de tu sentencia if e incluir la sección opcional else. Esta se coloca justo después de una sentencia if y crea una dicotomía, de manera que bastará con que definas una condición que, al evaluar verdadera, represente la sección de if, y cuando evalúe falsa, represente la sección de else.
Imagen 2. Estructura if/else en Java.
int hora = 12; if(hora < 12) { |
Tabla 4. Ejemplo de sentencia if, else en Java.
Esta sentencia resulta ser muy versátil ya que ofrece una tercera opción que te permite encadenar más de una condición para cuando existan más de 2 posibles caminos.
En este caso se pueden encadenar mediante la sentencia else if que permite evaluar una condición más en caso de que la anterior se haya evaluado como falsa.
Se pueden agregar tantas sentencias else if como se requieran y terminar con una sentencia else que cubra todos los casos restantes.
int hora = 12; if(hora < 12) { |
Tabla 5. Ejemplo de sentencia if, else if, else en Java.
Estructura de selección (switch/ case)
Existe otra sentencia que te permite realizar una única evaluación y definir una serie de caminos posibles para valores concretos que puedan resultar de dicha evaluación, se trata de la sentencia switch.
Imagen 3. Estructura switch en Java.
int diaDeLaSemana = 1; switch (diaDeLaSemana) { case 1: case 2: } |
Tabla 6. Ejemplo de sentencia switch en Java.
La sentencia switch puede definir caminos diferentes mediante la sentencia case, cuya sintaxis consiste en la palabra reservada case seguida por un valor de cualquiera de los siguientes tipos de dato, byte, short, int, char, String y enum. Es importante destacar que todos los casos deben indicar opciones de un mismo tipo de dato, sea cual sea.
La sentencia break se utiliza para indicar el término de la ejecución del bloque completo. Es importante destacar que esta sentencia es opcional y que, en caso de no utilizarse, la ejecución continuará automáticamente en el siguiente caso aun cuando este escenario no se hubiera cumplido y continuará con los siguientes hasta encontrar una sentencia break o la llave que cierra el bloque de código.
Finalmente, para todos los escenarios no cubiertos puedes hacer uso de la sentencia default que será elegida para todos los valores no descritos en casos.
Estructuras iterativas
Otro tipo de estructura esencial para el control del flujo de la ejecución de tu programa es la estructura iterativa que te permite repetir un bloque tantas veces como lo indique la condición que se utilice.
En Java todas las estructuras iterativas trabajan con evaluaciones verdaderas (Sierra, 2021), es decir, que mientras la condición establecida se evalué como verdadera, el código ubicado en el cuerpo de la estructura se seguirá ejecutando.
La primera estructura iterativa que debes conocer es la sentencia while, que se utiliza cuando se desconoce el número de iteraciones totales que se deben ejecutar. En este caso se define una expresión booleana y mientras esta se evalúe como verdadera el código dentro del bloque while se seguirá ejecutando. Una vez que la expresión evalúe como falsa la iteración se ve terminada.
Según Cosmina (2018), la sentencia while, debido a su versatilidad, es especialmente útil en escenarios en los que se esté realizando búsquedas o prestando servicios de manera indefinida. Sin embargo, recuerda que debes asegurarte de tener una condición de término o de lo contrario terminaras generando un ciclo infinito que causará que tu programa se quede ejecutando interminablemente y no pueda continuar operando.
Imagen 4. Estructura while en Java.
int[] numeros = { 1, 2, 3, 4, 5, 6 }; |
Tabla 7. Ejemplo de sentencia while.
En el ejemplo anterior puedes observar un escenario típico para el uso del ciclo while, en el cual se muestra una búsqueda de un número dentro de una colección de números.
Observa que hay dos posibles maneras de salir de ese ciclo: una es mediante la condición escrita, una vez que esta se deje de cumplir el ciclo terminará inmediatamente, la otra es mediante la sentencia break que le indica al programa que debe terminar el ciclo independientemente de que la condición se pueda seguir cumpliendo, esta sentencia permite que el ciclo termine de una manera controlada una vez cumplida una condición dada.
Finalmente, puedes hacer uso de ciclos automáticos mediante la sentencia for, esta sentencia es adecuada cuando se conoce el número exacto de iteraciones que habrán de realizarse.
La sentencia for cuenta con tres secciones separadas por un signo de punto y coma ‘;‘ todas ellas son opcionales aunque se recomienda definirlas.
La primera sección es la inicialización en la cual debes definir una variable de control que tendrá incrementos o decrementos automáticos. Ejemplo: int i = 0;
Le sigue una expresión booleana que debe incluir la variable de control para que esta pueda marcar el fin de las iteraciones una vez que dicha expresión deje de cumplirse. Ejemplo: i<10.
Finalmente, la sección de actualización, en la cual se define la expresión aritmética que modificará la variable de control de manera automática hasta que la condición sea rebasada. Ejemplo: i++.
Imagen 5. Estructura for en Java.
for(int i = 0;i<10;i++){ |
Tabla 8. Ejemplo de sentencia for clásica.
Existe un uso extra para la sentencia for para poder recorrer de manera automática una colección de valores.
int[] numeros = { 1, 2, 3, 4, 5, 6 }; for (int i : numeros) { |
Tabla 9. ejemplo de sentencia for each.
Esta alternativa tiene únicamente dos secciones en su definición, primeramente, la sección de declaración en la cual se especifica una variable del mismo tiempo de los valores de la colección de valores, seguido por el signo de ‘:’ (dos puntos) y finalmente el identificador que hace referencia a la colección de valores. Con esto no debes preocuparte por el número de iteraciones, el programa recorrerá todos y cada uno de los elementos de la colección y terminará automáticamente sin mayor contratiempo.
for(int i = 0;i<10;i++){ |
Tabla 10. Ejemplo de sentencia for anidada.
Finalmente, es importante destacar que todos los bloques de código estudiados hasta el momento pueden anidarse uno dentro de otro creando un mundo de posibilidades con sus combinaciones, no importa qué sentencia sea, puede contener cualquiera.
Así, podemos anidar estructuras iterativas, condicionales, o combinaciones entre estas.
Las estructuras que acabas de aprender son solo la primera parte y corresponden con un estilo de programación que toma su nombre de estas, y aunque son solo algunas notarás a medida que avanzas en tu aprendizaje que son muy poderosas, te permitirán no solo iniciar en la programación sino escribir programas más limpios, claros y mantenibles.
Las estructuras de control son la pieza medular de cualquier programa y se encuentran inmersas en la mayoría de los estilos de programación, su valor no hace más que crecer a medida que se amplían los escenarios en los que han de ser usadas.
Ten en cuenta que los lenguajes de programación agregan aquellas que consideran más útiles y es posible encontrar otras más con sintaxis y usos similares.
¿Te imaginas estructuras que te permitan organizar escenarios alternativos para aquellos posibles errores que podrían ocurrir en tu programa? Piénsalo.
Asegúrate de: