Aprende Java Fácil. Capítulo 2. La desaparición de Chani / Mostrar datos en consola

Capítulo 2. La desaparición de Chani / Mostrar datos en consola

¿Recuerdas que dije que iba a dar una fiesta en mi casa? Pues fue un gran éxito. No sé cuántas personas podría haber allí, pero no paraba de aparecer más y más gente. No conocía ni a la mitad, pero eso no me preocupaba. Se trataba de pasarlo bien.

Antes de traer invitados a casa, nos gusta ser precavidos, así que tenemos una costumbre. Horas antes de que empiecen a llegar los asistentes, dejamos todas las cosas de valor en un armario situado dentro de la habitación de Chani. Ese armario se cierra con un candado y solo Chani tiene la llave. De esta forma, nos sentimos más seguros en caso de que se descontrole la situación. Al día siguiente, despertamos a Chani, abre el armario y recuperamos nuestras preciadas pertenencias. Luego comemos algo y nos pasamos casi toda la tarde tumbados en el sofá viendo alguna serie. Es una gran parte de nuestra rutina estudiantil.

El problema es que esta vez todo fue distinto. A la mañana siguiente después de la fiesta, todo era un caos. Estaba mucho más desordenado de lo habitual y había restos de bebida por todas partes. Por no hablar de la increíble cantidad de botellas y vasos desperdigados por todas las habitaciones.

Yo me desperté alrededor de las dos de la tarde, bastante hambriento. Me acerqué a la cocina y abrí el frigorífico. Descubrí que, desgraciadamente, no había nada de comer, y eso afectó mucho a mi estado de ánimo. Entonces empecé a plantearme mis opciones. Salir a la calle a comprar estaba totalmente descartado. Me encontraba muy cansado y no me apetecía moverme. Pedir comida parecía lo más sensato, pero no sabía exactamente qué quería.

Mientras lo decidía, me tumbé en el sofá y escribí a mis compañeros. No quería comer solo y, además, pensé que probablemente ellos también tendrían hambre al despertar. A los pocos minutos, Rich salió de la habitación. Había leído el mensaje y quería comer pizza. Chani no respondió, pero, aun así, pedimos también para él.

Las pizzas acabaron llegando sobre las tres y media de la tarde. Chani no daba señales de vida, así que no le despertamos. Comimos nuestra pizza y charlamos un rato. Aunque no teníamos nada que hacer, no nos apetecía ponernos a limpiar.

Tampoco nos apetecía dormir más. Empezábamos a estar un poco aburridos y queríamos nuestros ordenadores portátiles. La única pega era que estaban en el armario de Chani. No esperamos mucho más hasta que decidimos despertarle. Tocamos a su puerta varias veces, pero no obtuvimos ninguna respuesta. A los pocos minutos, decidimos entrar.

Al cruzar la puerta, nos miramos sorprendidos. Chani no estaba, pero lo más extraño es que su habitación estaba totalmente recogida. Era muy curioso porque desentonaba con el resto de la casa, que parecía un estercolero. Estábamos muy confusos, así que tratamos de llamarle, pero no obtuvimos respuesta.

No le dimos mucha más importancia. Suponíamos que se encontraba bien; el único fastidio era que no teníamos los ordenadores y no sabíamos qué hacer. Nos sentamos en el sofá y, al cabo de unos minutos, Rich empezó a hablar. Me preguntó por mi aprendizaje de Java. Le contesté que no había progresado nada desde la última lección, así que se ofreció a continuar con las clases en ese mismo momento.

Mostrar datos en nuestra consola

Antes de seguir avanzando, necesitas entender las etapas involucradas en el desarrollo de un programa o aplicación en Java. Desde que se comienza a escribir el código hasta la finalización del proyecto.

  1. Escribir el código fuente: El proceso empieza cuando el programador escribe el código en lenguaje Java. Esto se hace usando un editor de texto o un entorno de desarrollo integrado (IDE) como IntelliJ IDEA o Eclipse. El código fuente sigue una estructura y una “gramática” específica.
  • Guardar el archivo fuente: Cuando el código está listo, se guarda en un archivo con la extensión «.java». Este archivo incluye todas las instrucciones necesarias para que el programa funcione de manera correcta.
  • Compilación del código: El siguiente paso es compilar el código fuente mediante un compilador de Java. Este, toma el archivo «.java» y lo convierte en un código llamado «bytecode». Este archivo es ejecutable en cualquier sistema que tenga instalada la Máquina Virtual de Java (JVM).
  • Generación de archivos .class: Tras la compilación, se generan uno o varios archivos con la extensión «.class», que contienen el bytecode. Estos archivos serán los que se ejecutarán en la JVM.
  • Ejecución del programa: Finalmente, con los archivos de bytecode generados, se puede ejecutar el programa utilizando la JVM. La JVM interpreta el bytecode y lleva a cabo las operaciones definidas en el código que se escribió manualmente por el programador.

En estos momentos no es necesario que aprendas esos pasos de memoria. Nuestro IDE se va a encargar de realizar todos esos pasos excepto el primero. El de escribir el código. Pero es interesante conocer el proceso completo. Además, nos ha servido para introducir los siguientes dos términos:

  • Un IDE, o Entorno de Desarrollo Integrado: IDE es la abreviatura de Integrated Development Environment. Esta es una herramienta de software que contiene todo lo necesario para el desarrollo de aplicaciones de software. Se puede decir que es un «centro de operaciones» para los programadores, que contiene diversas herramientas y características útiles en un solo lugar.
  • Compilador de Java: es una herramienta que permite traducir el código fuente legible por humanos, (El código que hemos escrito) a un formato entendido por la máquina. Esto permite que el código Java sea portable y pueda ejecutarse en diferentes plataformas sin necesidad de modificarlo. Sin el compilador, no podríamos transformar nuestras ideas en aplicaciones funcionales.

Mostrando texto y variables en la consola

Importancia de la Salida de Datos

En el proceso de programación en general, la salida de datos es totalmente necesaria ya que es la principal forma en la que el programa puede comunicarnos los resultados y el estado actualizado del programa. Si no tuviésemos una salida visual, no podríamos saber lo que está pasando, si el programa está cumpliendo nuestras órdenes al pie de la letra o si algo no sale como debe. La mayoría de las veces los programadores trabajan basándose en prueba y error, es por eso que ver los resultados constantemente es vital. Para un programador novato es incluso más importante ya que ver cuál es el resultado de las líneas que escribimos va a ayudarnos a aprender y ver lo que sucede cuando escribimos nuestra sintaxis.

Usos Comunes de la Salida en la Consola

1.       Interacción con el Usuario

La consola permite interactuar con el usuario pidiendo información y mostrando resultados. Esta interacción es fundamental en programas básicos y es una excelente manera de enseñar conceptos de entrada y salida.

2.       Mostrar Resultados de Cálculos

Presentar los resultados de operaciones matemáticas, algoritmos o procesos lógicos es una de las funciones básicas de cualquier programa.

3.       Feedback en Procesos Largos

Durante la ejecución de procesos que toman tiempo, proporcionar retroalimentación en la consola ayuda al usuario a entender que el programa sigue funcionando.

4.        Depuración de Código

Imprimir valores y estados de variables ayuda a los programadores a entender cómo está funcionando el programa y a identificar posibles errores.

5.       Demostraciones y Ejemplos Educativos

Los ejemplos que imprimen resultados en la consola son esenciales para enseñar conceptos básicos de programación de una manera visible y tangible.

Uso de System.out.println y System.out.print

Vamos a ver cómo utilizar una línea de código que nos permite mostrar datos en la consola de nuestro IDE. Para ello podremos utilizar dos comandos: println y print.

Si ya tienes algo de experiencia programando o has buscado material didáctico en cualquier otra parte, seguramente te hayas encontrado con el ejercicio más conocido de toda la programación. Consiste en que muestres la frase «hola mundo» en nuestra consola. La respuesta es la siguiente:

System.out.println("Hola mundo");

Siempre sigue la misma estructura, System.out.println();

En este caso en concreto utilizamos las comillas dobles ya que se trata de una línea de texto. También podemos mostrar variables que hayamos declarado y a las que hayamos asignado un valor anteriormente. Veamos un ejemplo. Hemos creado una variable tipo int llamada total y ya le hemos asignado un valor, en este caso 9. Podemos imprimirla en la pantalla de la siguiente forma:

int total = 9; 

System.out.println(total);

Al principio hemos mencionado que podemos utilizar tanto print como println pero hay una gran diferencia entre ambas:

  • System.out.println agrega una línea nueva después de imprimir lo que le indiques. Es como dar un salto de línea después de mostrar algo.
  • System.out.print simplemente imprime lo que le digas sin agregar un salto de línea al final. Es como escribir en una línea continua.

Concatenación de Cadenas

Podremos mostrar operaciones de variables e incluso combinarlas con texto. Imagínate que hemos declarado las variables tipo int a y b. Respectivamente les hemos asignado los valores 5 y 7.

int a = 5; 

int b = 7;

Después pedimos que se muestre el siguiente texto: “El resultado de la multiplicación entre a y b es =”. Por último, el resultado de dicha multiplicación.

System.out.println("El resultado de la multiplicación entre a y b es = " + a * b);

Como puedes apreciar después de mostrar el texto hemos utilizado el símbolo + para unirlo. («texto » + resultado).

Podríamos haberlo hecho de la siguiente manera que puede resultar algo más sencillo de comprender:

System.out.println("El resultado de la multiplicación entre a y b es = " + (a * b));

Justo después del símbolo = hemos dejado un espacio para que, al mostrarse en la consola, quede un hueco. Aunque podríamos haberlo hecho de la siguiente manera.

System.out.println("El resultado de la multiplicación entre a y b es =" + " " + (a * b)); 

He utilizado + » » + para crear un espacio.

Cuando combinamos texto y datos numéricos no es muy útil, pero si queremos mostrar dos variables numéricas y necesitamos que estén separadas, recurriremos a este truco.

Veamos un ejemplo más, pero en esta ocasión con sumas.

Si queremos sumar las variables a y b del ejercicio anterior, simplemente lo haremos de la siguiente forma:

System.out.println(a+b);

Pero es posible que necesitemos simplemente que ambas se muestren en la consola por separado. Una detrás de otra. En ese caso lo haremos así:

System.out.println(a+ " " +b);

Por supuesto también podemos usar los símbolos de restar y dividir (- y /) dependiendo de lo que necesitemos.

Cambiando el color de la fuente

Es posible que en algún momento necesitemos que el color que aparezca en nuestra consola sea distinto al blanco que suele venir por defecto. Esto lo vamos a conseguir de manera muy sencilla. Simplemente debemos insertar en nuestra línea un código de color de los que se muestran en la siguiente tabla:

BLACK => «\033[30m», RED  => «\033[31m»,
GREEN => «\033[32m»,
YELLOW => «\033[33m»,
BLUE => «\033[34m»,
PURPLE => «\033[35m»,
CYAN => «\033[36m»,
WHITE => «\033[37m»,

Para ello lo haremos de la siguiente manera:

System.out.println("\033[31m" + "El resultado de la multiplicación entre a y b es =" + " " + (a * b));

Insertamos el código justo delante de la parte que necesitamos que cambie de color. Desde ahí y hasta el final de la línea se mostrará con el nuevo color. Si necesitamos dos colores o más, insertaremos los códigos correspondientes justo delante de las partes que se deben mostrar con esa tonalidad en concreto.

System.out.println("\033[31m" + "El resultado de la multiplicación entre a y b es =" + " " + "\033[34m" + (a * b));

Anotaciones en nuestro código que no se imprimen

Las dobles barras «//» se utilizan en Java para indicar un comentario de una sola línea. Esto significa que cualquier texto que esté después de las dobles barras en esa línea será ignorado por el compilador de Java y no afectará la ejecución del programa.

// Este es un comentario de una sola línea

int edad = 25; // Esta línea declara una variable llamada edad y le asigna el valor 25

En este caso, los comentarios sirven para hacer anotaciones en el código que ayudan a entender qué hace cada parte del programa. También son útiles para desactivar temporalmente una línea de código sin tener que borrarla por completo.

Limitando la salida de datos a dos decimales

De momento, en ningún ejercicio te va a hacer falta que limites el número de decimales. Es más, si eres nuevo en Java deberías saltarte este apartado. La razón por la que lo pongo aquí es porque es posible que haya gente que le resulte útil y no quieran que en las operaciones salga una larga fila de decimales.

No obstante, y aunque ahora no te sirva, acuérdate de que tienes la información aquí y puedes volver a ella cuando lo necesites. Por otro lado, si tienes la confianza suficiente, puedes tratar de limitar los datos en tus ejercicios.

Formas de limitar los decimales

–      En Java, puedes usar la clase DecimalFormat para limitar los decimales de un número a dos de manera sencilla. Aquí tienes un ejemplo:

import java.text.DecimalFormat;

public class Main {

        public static void main(String[] args) { 

                double numero = 3.14159;

                DecimalFormat formato = new DecimalFormat("#.00");

                System.out.println("Número con dos decimales: " + formato.format(numero));

          // Output: 3.14

         }

}

Otra forma de limitar los decimales a dos en Java es usando la función printf() o String.format().

  • Ejemplo con printf():
public class Main {

        public static void main(String[] args) { 

              double numero = 3.14159;

              System.out.printf("Número con dos decimales: %.2f", numero); 

          // Output: 3.14

         }
}
  • Ejemplo con String.format():
public class Main {

        public static void main(String[] args) { 

                double numero = 3.14159;

                String resultado = String.format("%.2f", numero);

                System.out.println("Número con dos decimales: " + resultado); 

          // Output: 3.14

          }
}

Cuando analicemos el tema de números aleatorios, te enseñaré otra forma distinta, que para mí es la más sencilla y la que siempre utilizo.

Resumen de lo aprendido

En Java, para mostrar información en la consola, usamos los comandos System.out.println y System.out.print. Ambos muestran datos en la pantalla, pero hay una diferencia importante: System.out.println agrega automáticamente un salto de línea después de imprimir, mientras que System.out.print no lo hace, manteniendo la siguiente salida en la misma línea.

Por ejemplo, si queremos mostrar un texto como «Hola mundo» en la consola, escribimos:

System.out.println(«Hola mundo»);

Si queremos mostrar una variable, como total, que tiene un valor de 9, escribimos:

int total = 9; System.out.println(total);

También podemos realizar operaciones y combinar texto con variables. Por ejemplo, si tenemos dos variables a y b con valores 5 y 7 respectivamente, y queremos mostrar el resultado de su multiplicación junto con un texto, lo hacemos así:

int a = 5; 

int b = 7;

System.out.println("El resultado de la multiplicación entre a y b es = " + (a * b));

Además, podemos cambiar el color del texto en la consola agregando códigos de color antes del texto que queremos cambiar. Por ejemplo, para mostrar el texto en rojo, escribimos:

System.out.println("\033[31m" + "Este texto será rojo");

Finalmente, para hacer anotaciones en nuestro código que no se imprimirán en la consola y que solo sirven para nosotros o para otros programadores que lean el código, usamos dobles barras «//» para indicar un comentario de una sola línea.