Mostrando entradas con la etiqueta academy. Mostrar todas las entradas
Mostrando entradas con la etiqueta academy. Mostrar todas las entradas

lunes, 2 de febrero de 2015

4- PrintStream y manejo de cadenas

Bienvenidos a la cuarta entrega de tutoriales en Java, en la última entrega habíamos dejado algunas cosas en continuará, por lo tanto vamos a seguir con lo que veníamos viendo.


Estas leyendo la serie de tutoriales de Java. Lee más acerca de esta serie.


La clase PrintStream

Casi al final de la última entrega habíamos hablado de una clase PrintStream, seguramente se seguirán preguntando que es una clase, y nuevamente diré que más adelante lo veremos. Por el momento vamos a decir, aunque no sea así, pero para que tengan una idea, que una clase es como un archivito que contiene métodos (y atributos), que podemos utilizar.

Uno de los métodos que nos brinda PrintStream es "println();" y por ahora debemos saber que para usar métodos de esta clase lo podemos hacer mediante "System.out." seguido del método que queramos.

El método print

El método print muestra por pantalla lo que le pasemos por parámetro sin salto de línea, esto quiere decir que si hacemos lo siguiente:

System.out.print("Hola ");
System.out.print("Mundo");
Por consola veremos "Hola Mundo", en una sola línea. Si queremos usar el método print y mostrar mensajes en varias líneas tenemos que usar la secuencia de escape "\n", al igual que se hace en el lenguaje C.

System.out.print("Hola \n");
System.out.print("Mundo");
Si vamos a la documentación de Oracle sobre la librería PrintStream, y buscamos el método print, podemos ver lo siguiente:



Vamos a interpretar esto. A la izquierda tenemos lo que devuelve el método print, que en todos los casos es void, por lo cual no devuelve ningún tipo de dato, y a la derecha tenemos el método en sí, con los parámetros que admite el mismo, y abajo una descripción de lo que hace.

¿Porqué esta escrita tantas veces la función?. Bueno esta escrita tantas veces porque admite distintos valores como parámetros de entrada, y esto tiene que ver con la sobrecarga de métodos, cosa que veremos en otra entrega. Lo que quiere decir esto es que a la función print admite como parámetros valores booleanos, caracteres, de coma flotante, enteros, de tipo Object, y cadenas.

Por lo cual podemos hacer

int entero = 9;

System.out.print("Hola mundo esto es una cadena\n");
System.out.print(5);
System.out.print("\nHola estoy combinando una cadena con un entero cuyo valor es " + entero); 

Si ejecutamos el código veremos por consola lo siguiente:



Y de esta manera, podemos escribir cadenas, enteros, como también la combinación de estos tipos de datos.

Concatenación de cadenas

Ya que estamos de paso, vamos a explicar la concatenación de cadenas en Java. Como se puede apreciar en el ejemplo anterior se puede concatenar tipos de datos con el operador "+", para los que hayan programado en C o C++ quizás recuerden que para mostrar un entero luego de una cadena tenían que hacer algo como lo siguiente:

int numero = 5;
printf("El numero que quiero mostrar es: %d", numero);

Y si queriamos concatenar cadenas teníamos que recurrir a funciones como strcat

int main(int argc, char *argv[])
{
   
   char src[50], dest[50];

   strcpy(src,  "Esta es la cadena original");
   strcpy(dest, "Esta es la cadena destino");

   strcat(dest, src);
   
   printf("Cadena final : |%s|\n\n", dest);

  system("PAUSE"); 
  return 0;
  
}


Con el ejemplo anterior visualizamos por consola algo como esto:



En el caso de java se puede hacer con el operador "+" como se mostró anteriormente, veamos unos ejemplos:

String cadena1, cadena2;
cadena1 = "Esta es mi primer cadena";
cadena2 = "Esta es mi segunda cadena";
int numero = 10;

System.out.print(cadena1 + cadena2 + "\n");
String cadena3 = cadena1 + cadena2;
System.out.println(cadena3);
System.out.println("Hola esta es la cadena1" + cadena1 + " y esto es un nuúmero " + numero);
String nombre = "Diego";
String apellido = "García";
String mensaje = "Hola ";
mensaje += nombre + " " + apellido;
System.out.println(mensaje);

En este caso si ejecutamos el código veremos por consola lo siguiente:




Otra cosa que podrán observar es que las cadenas las definimos como tipo "String" y para asignarle algún valor simplemente lo hacemos con el operador "=", en el ejemplo anterior se detallaron varios casos para que quede claro.

El método println

Volviendo al tema anterior, hemos visto que el método "print" sirve para mostrar valores por consola siempre en la misma línea, excepto que usemos "\n". Otro método que nos ofrece la clase PrintStream es el método "println", el cual imprime valores en la consola y cada vez que se llama a este método produce un salto de línea. Si vamos a la documentación de Oracle al igual como hicimos para el método print podremos encontrar el método println y se verá algo así:



Como podemos ver es casi idéntico al método print, con la salvedad de que println admite que no se le pase ningún parámetro y esto producirá un salto de línea.

El método printf

Finalmente para los nostálgicos del C y C++ PrintStream incluye el tan amado método por algunos, el método "printf", en donde la f refiere a "formato", esto quiere decir que podemos mostrar valores por la consola con el formato que le indiquemos. 

Para escribir algo con formato lo podemos hacer de la siguiente manera:

int numero = 5;
double decimal = 2.4;
String cadena = "cadena";

System.out.printf("Esto es una %s que contiene el número entero %d y el decimal %f",cadena,numero,decimal);

Lo que mostrará por consola lo siguiente:




Generalmente este método se usa cuando queremos mostrar un número del tipo float o double, con determinada cantidad de decimales, ya que si utilizamos print o printf, Java lo mostrará con un formato por defecto.

Si java muestra un error con el texto  "The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, int, double)", no se alarmen, en la siguiente entrega veremos como solucionarlo.

Otra manera para no escribir System.out

Aclaración: Al igual que la aclaración que se hizo en la entrega anterior, esta parte puede que no todos la entiendan ya que tiene conceptos de objetos, cosa que todavía no explicamos, por lo que, si el lector no lo entiende, no se preocupe, no es algo relevante, y más adelante cuando se vea objetos, podrá volver a esta parte y verá como se entiende. 

A raíz de la entrega anterior en donde hablamos diferentes maneras de simplificar trabajo cuando teníamos que escribir System.out.println(); y aprovechando que abordamos el tema de la clase PrintStream, vamos a mostrar otra manera para acortar o facilitar la manera de escribir esto.

Para ello debemos crear una variable del tipo PrintStream, inicializarla el método main o constructor de nuestra clase principal, y una vez hecho esto podremos acceder a las funciones para mostrar valores por consola.

import java.io.PrintStream;

public class main {
 
 private static PrintStream ps;

 public static void main(String[] args) {  

   ps = new PrintStream(System.out);
   
   ps.println("Hola Mundo");  
  
 }
}

Tip: Atajos en Eclipse

Muchas veces Java nos marcará error porque nos falta importar alguna librería, para visualizar esto, vamos a borrar la linea import java.io.PrintStream; y veremos como nos subraya en rojo la palabra PrintStream.




Esto es porque para trabajar con esta clase debemos importarla, y la realidad es que no nos vamos a acordar todas las librerías que necesitemos importar, por lo tanto si no nos acordamos de que en el principio del programa hay que escribir import java.io.PrintStream; podemos recurrir a dos técnicas o métodos.

El primer método consiste en posicionar el puntero del mouse sobre la palabra PrintStream y veremos como nos sale una lista de sugerencias.


Hacemos click en "Import 'PrintStream' (java.io)" y Java se encargara de importar la librería para que podamos trabajar. 

El segundo método es todavía más fácil, consiste en ubicar el cursor en la palabra PrintStream, y presionar la combinación de teclas Ctrl + Shift + O, veremos como automáticamente Java importa la librería necesaria para que podamos trabajar.

Si quieres puedes descargar el código de ésta entrega haciendo clic acá:


Por hoy es suficiente, la próxima entrega veremos más detalladamente el tema de texto con formato y las secuencias de escape de Java.




4
5
Entrega siguiente

domingo, 11 de enero de 2015

1. Introducción a LibGDX

Bienvenidos a esta serie de tutoriales de LibGDX. A partir de este punto se irá desarrollando una serie de tutoriales bien detallados para poder aprender a programar juegos en Java sobre LibGDX.

Si estas interesado en el video tutorial de esta entrega podes hacer clic acá.


Estas leyendo la serie de tutoriales de LibGDX. Lee más acerca de esta serie.

El motivo de ésta página y de éste tutorial en particular es compartir el conocimiento a todas aquellas personas que tengan ganas de aprender. Ya que LibGDX es una librería relativamente nueva, no hay mucha documentación en internet y al actualizar rápidamente versiones de la librería la poca documentación que hay queda en parte obsoleta. 
Por otra parte, y como pasa siempre en este mundo de la programación, gran parte de esa información está en ingles, lenguaje que hoy en día es indispensable saber, pero que no todos saben, por lo cual es otro factor que sigue achicando el rango de opciones que tiene el usuario, y si bien hay libros, estos también están en ingles y son pagos.

Por esas razones vamos a ir abarcando todos los aspectos que sean posibles gratuitamente y en español. 

¿Qué es LibGDX?


LibGDX es un framework o librería de código abierto que esta hecha para el desarrollo de juegos multi-plataforma. Que sea multi-plataforma, quiere decir que con el mismo código podremos compilar la aplicación para Windows, Mac, Linux, Android y HTML. 


¿Porqué LibGDX?


Utilizaremos LibGDX por ser un framework multi-plataforma y por ser muy eficaz. Los creadores de ésta librería se esmeraron para hacer una API que maneja cuidadosa y efectivamente el recolector de basura de Java, ademas LibGDX enlaza muchas librerías para el manejo de gráficos, audio, renderizado de fuentes, motores de física, etc, como OpenGL, Nothings, FreeType, mpg123, Xiph, SoundTouch,  Box2D, LWJGL, OpenAL, KissFFT

El uso y la combinación de estas librerías en un framework cuidadosamente construido orientado a la programación de juegos, hace de esta librería una excelente opción, óptima y eficaz, con una gran libertad a la hora de programar, ya que se puede pasar fácilmente del alto nivel al bajo nivel de programación en la medida que se desee, pudiendo acceder a archivos de sistema, dispositivos de entradas, dispositivos de audio y acceso a la interfaz OpenGL 2.0 y 3.0. 


Integración de Gradle 

Gradle es una herramienta muy poderosa y sumamente útil, la cual se encarga de automatizar la construcción de los proyectos que vayamos a crear, se encarga de tareas de compilación, testing, publicación y distribución, entre otros, de paquetes de software. Tiene soporte para multi-proyectos y es de código abierto por lo cual viene como anillo al dedo para proyectos que utilicen LibGdx.
LibGdx ya viene por defecto con Gradle instalado y configurado, por lo cual no hay que preocuparse por estos detalles. 

A nosotros nos interesa saber que existe y punto, no vamos a entrar en detalles con Gradle, ya que no es el objetivo de estos tutoriales, para más información puede visitar la página oficial de Gradle: https://www.gradle.org/ .


Requisitos para la serie de tutoriales de LibGDX


Para poder seguir esta serie de tutoriales se requieren conocimientos sólidos de Java, por lo cual antes de continuar con el mismo, recomendamos, y yo diría que más que una recomendación es una obligación aprender Java. En el blog estamos desarrollando paralelamente un tutorial sobre el lenguaje Java, si necesita aprender el lenguaje o reforzar conocimientos recomiendo que pasen por acá: Tutorial de Java Reactive Academy.


En el próximo capitulo veremos todas las herramientas necesarias para tener LibGDX funcionando bajo un IDE.


Entrega anterior
1
2
3
4
5