Los bloques de código e indentaciones en Java – Master en desarrollo de apps con Java, Kotlin y Android Studio #8
En este capítulo pasamos a ver lo que son los bloques de código y las indentaciones en Java y en programación general. Un tema totalmente imprescindible para continuar en el próximo capítulo con las estructuras condicionales.
¿Qué es un bloque en programación?
Antes de empezar a hablar de condicionales, tengo que explicar que es un bloque, ya que voy a emplear este término para explicar muchas cosas de ahora en adelante, la primera, serán los condicionales, pero luego vendrán cosas como las clases, los métodos, los bucles, etc.
Bien, cuando hablamos de bloque, en programación, nos referimos a un trozo de código que está delimitado de alguna forma. En Java, son unas llaves { }. Una de apertura al principio y otra de cierre al final. Así, indicamos donde empieza ese bloque de código y dónde acaba.
Analicemos un programa simple como lo que has visto hasta ahora y veamos donde se delimitan estos bloques.
En la primera línea, tienes lo que se conoce como clase (public class Main). Esto ya lo explicaré más adelante, no te preocupes si no sabes lo que es una clase.
Mira lo que hay al final de la línea 1 ( { ). Eso es una llave de apertura. Esta se cierra al final de todo, en la línea 7.
Cuando enseñe lo que son las clases y los métodos, sabrás de sobra que bloques contienen o pueden contener otros bloques dentro.
Las clases pueden contener entre sus llaves, muchas cosas, entre ellas, métodos, que es lo que empieza en la línea 2. Este método llamado main, es el encargado de ejecutar las instrucciones que hay en las líneas 3, 4, y 5.
El método, al igual que pasa con la clase, se abre en la línea donde se declara (línea 2) con una llave de apertura y se cierra cuando acaban las instrucciones que lleva escritas con la llave de cierre (línea 6).
El método es un bloque de código que está dentro de la clase, por este motivo, está envuelto entre las primeras llaves.
Las clases, normalmente llevarán más de un método. De momento, solo utilizamos uno debido a la sencillez de los programas de ejemplo que estoy poniendo.
public class Main { public static void main(String[] args) { int numero1 = 7; int resultado = 10 + numero1; System.out.print(resultado); } }
¿Qué son las instrucciones en programación?
Para quien empieza en programación, puede que no tenga claro de que hablo cuando digo «instrucción».
Sencillamente, una instrucción, es una orden.
Por ejemplo, imagina en la vida real, cuando vas a seguir una receta de cocina. En ella, aparecen todos los pasos a seguir para que salga como se espera. Podríamos definir, más o menos, una receta como un método (conjunto de instrucciones) y la instrucción como cada uno de los pasos a seguir.
Pues así es, al escribir código, le dices a Java, haz esto y luego esto otro.
En el código de arriba, primero (línea 3), le das la orden o instrucción de que inicialice la variable y le asigne un valor. En la línea 4, que inicialice otra variable y le asigne el resultado de sumar 10 + el valor que tenga la variable anterior. Finalmente, en la línea 5, se le pide que imprima el resultado.
Esto son las instrucciones.
Orden jerárquico de bloques en Java
Lo primero que debes saber para tener claro donde se abre y cierra un determinado tipo de bloque, es saber los tipos que hay y cuáles se escriben dentro de otros.
Te dejo el código por si lo quieres probar en tu IDE o editor de texto. Lo importante aquí no es que entiendas su funcionamiento, si no, que te fijes en la estructura de los bloques.
public class Main { public static void main(String[] args) { int numero1 = 7; int resultado = 10 + numero1; if (resultado > 15){ System.out.println("El resultado de la suma es: " + resultado); } for (int x = 0; x <= 10; x++) { System.out.println("El valor es " + x); } } }
Aquí te dejo una imagen para que puedas ver claramente las delimitaciones de cada bloque.
En este ejemplo, la clase empieza en la línea 1 y termina en la 12 (bloque azul). Esta clase será el nivel superior del resto de bloques. Todos ellos deberán estar en una clase.
Después tenemos el método, que empieza en la línea 2 y se cierra en la 11 (bloque verde). Los métodos son como mini programas necesarios para ejecutar instrucciones u otros bloques de código. Estos bloques deben ir siempre dentro de una clase.
Finalmente, contamos con bloques de nivel inferior en esta jerarquía (bloques rojos), lo cuales, deberán ir dentro de un método.
Imagina esta estructura como una matrioska. Tenemos una muñeca grande en exterior que contiene al resto y lo mismo sucede en los siguientes niveles.
Indentación en Java
En lenguajes como Python, la indentación es obligatoria para que el programa funcione, en Java esto no ocurre. Sin embargo, es 100% necesario utilizarla como toca con el fin de que tu programa sea legible y esté muy bien ordenado.
Las indentaciones son las sangrías en programación. Son espacios o tabulaciones que ordenan de una manera en concreto el código en la hoja de texto donde lo escribimos.
A continuación, tienes el mismo programa de antes sin indentar. ¿A que ya no es tan agradable de leer?
Sobre todo, las delimitaciones de los bloques, son más difíciles de identificar. Este programa tiene 4 bloques, pero, ¿y si tuviera 200?
public class Main { public static void main(String[] args) { int numero1 = 7; int resultado = 10 + numero1; if (resultado > 15){ System.out.println("El resultado de la suma es: " + resultado); } for (int x = 0; x <= 10; x++) { System.out.println("El valor es " + x); } } }
¿Cómo sabemos cuantas indentaciones poner?
Es fácil de aprender. Empiezas el primer bloque que es la clase sin indentar:
public class Main { }
¿Le añades un método o más de uno? Pues estos, al estar un nivel por debajo en la jerarquía de bloques que he explicado antes, tendrán una indentación. Cada muñeca matrioska que pongas dentro de otra, deberá ir con una indentación.
Y fíjate en los cierres de bloque. El primero, el de la clase, se cierra sin indentar, a la misma altura que empezamos a escribirla.
El método, al llevar una indentación, debe llevarla también en su llave de cierre. Así se ve fácil, ¿verdad?
public class Main { public static void main(String[] args) { int numero1 = 7; int resultado = 10 + numero1; } }
Por último, tenemos los otros dos bloques. Estos están dos niveles por debajo del bloque de clase en la jerarquía y uno frente al método. Por lo tanto, deberán llevar dos indentaciones. Puesto que son del mismo nivel jerárquico, van indentados al mismo nivel.
public class Main { public static void main(String[] args) { int numero1 = 7; int resultado = 10 + numero1; if (resultado > 15){ System.out.println("El resultado de la suma es: " + resultado); } for (int x = 0; x <= 10; x++) { System.out.println("El valor es " + x); } } }
Después, tenemos cosas como los condicionales o bucles anidados, que añaden más bloques de estos tipos dentro de ellos mismos, pero esto ya es un tema para ver en otro capítulo. No quiero avasallarte con más cosas.
Piensa que si te dejas una llave sin poner, el programa no se va a ejecutar, así que cuando te ocurra un error por llave, revisa los cierres y aperturas de cada bloque.
Acuérdate de esto. Bloque que se abre, bloque que se cierra.
Todo el temario del curso Java aquí.
Ejercicios de Java
Te dejo un par de ejercicios relacionados con el temario. Las soluciones, las encontrarás en el siguiente capítulo.
- ¿Sabrías ordenar este código correctamente? Puedes editarlo directamente aquí, ya que si lo copias en IntelliJ IDEA u otro IDE, puede que te haga el ejercicio automáticamente (piensa que si recargas la página, se pierde lo que edites aquí).
public class Main { public static void main(String[] args) { int numero1 = 7; int resultado = 10 + numero1; if (resultado > 15){ System.out.println("El resultado de la suma es: " + resultado); } for (int x = 0; x <= 10; x++) { System.out.println("El valor es " + x); } } }
- Pon las llaves y puntos y coma que le correspondan a este código.
public class Main public static void main(String[] args) byte numero1 = 10 byte numero2 = 20 boolean comparacion = numero1 != numero2 System.out.print(comparacion)
Soluciones de los ejercicios del capítulo anterior
- false. 10 no es mayor que 10.
- true. 10 es menor que 11.
- Error. El operador de asignación no es válido en Java para comparar igualdad.
- true. 45 es diferente que 100.
- true. 10 es mayor que 5.
- true. 5 es menor que 10.
- false. 65 no es igual que -65.