• Últimas noticias

    8. Primer programa en Java

    Octava entrega  del curso de Java.

    Ya hemos visto un montón de conceptos teóricos, y dejamos listo todo el entorno para comenzar a programar. Llego la hora de poner manos a la obra y empezar a escribir código.


    índice de este curso


    Versión de este curso en video


    Si querés podés ver el video correspondiente a este curso


    Definiendo el workspace


    El primer paso para comenzar a programar es abrir Eclipse. Al hacer doble clic sobre el icono del programa veremos el logo del mismo y luego aparecerá una ventana solicitando que se ingrese una ruta para el "workspace"


    El "workspace" es el espacio de trabajo en donde se guardaran y se cargaran todos los proyectos que se realicen.  Por defecto aparecerá una ruta predeterminada por Eclipse, la cual se puede cambiar si se desea. Por ejemplo yo he definido como ruta para mi workspace: "D:\Clases". Si se quisiera utilizar  una ruta fijar para el workspace, la cual debemos estar un 99.9% seguros que nunca la necesitaremos cambiar, podemos marcar la casilla "Use this as the default and do not ask again", para que siempre que abramos el eclipse apunte a ese "workspace" y no nos vuelva a mostrar esta ventana. Hacemos clic sobre el botón "Launch" y finalmente abrirá el Eclipse.

    En el caso que hayas hecho clic sobre la casilla "Use this as the default and do not ask again" y en algún momento quieras cambiar de workspace hay dos opciones:

    La primera consiste en ir al menú File luego a Switch Workspace y luego seleccionar un workspace existente o bien hacer clic en la opción Other y seleccionar la ruta deseada.


    La segunda opción es volver a hacer que se muestre la ventana para seleccionar un workspace cada vez que abrimos Eclipse. Para eso debemos ir a la opción Window (del menú de la barra de herramientas), luego hacer clic en Preferences y en la ventana que se abre ir a: General Startup and Shutdown ➜ Workspaces. Una vez ahí debemos marcar la casilla con la leyenda "Prompt for workspace on startup".


    La primera vez que abras Eclipse seguramente veras una pestaña de bienvenida. Si no quieres ver esta pantalla podes desmarcar la casilla que dice "Always show Welcome at start up" y también podes cerrarla haciendo clic sobre la cruz que se encuentra en la pestaña titulada Welcome.


    Creando un nuevo proyecto

    Una vez abierto el IDE de Eclipse, procederemos a crear un nuevo proyecto, para eso hay que dirigirse a la barra de herramientas, seleccionar File ➜ New y finalmente "Java Project".



    En la siguiente ventana pondremos el nombre de proyecto, por ejemplo "HolaMundo", y presionamos el botón "Finish".


    Una vez hecho esto tendremos nuestro proyecto creado. En el caso de que solo se muestre la pantalla de bienvenida de eclipse y no vean su proyecto deberán hacer clic sobre el botón que se muestra a continuación.



    Secciones básicas del IDE de Eclipse

    La primera vez que abramos Eclipse vamos a ver una distribución de las secciones del IDE que están establecidas por defecto. Por el momento vamos a cerrar algunas de estas secciones, ya que para arrancar necesitaremos tener solo lo básico e indispensable. Luego con el tiempo iremos adicionando más de estas secciones.


    Para simplificar entonces el entorno, vamos a cerrar las pestañas Task List, Outline, Javadoc y Declaration, y vamos a abrir la pestaña console. Para abrir esta sección iremos a la barra de menú y a Winwow Show View ➜ Console.




    Ahora sí, contamos con un entorno adecuado como para empezar a programar. Vamos a explicar para que sirven cada una de estas secciones básicas.


    1. En primer lugar tenemos el explorador de proyectos. Aquí se mostrarán todos los proyectos de Java que hayamos creado.

    2. En esta segunda sección es donde escribiremos nuestro código. Cuando creemos una clase para empezar a programar en Java vamos a ver el código en este lugar.

    3. En la consola podremos mostrar mensajes informativos, pedir al usuario que ingrese un valor por teclado y también veremos errores causados en tiempo de ejecución.

    4. En la sección Problems veremos errores y advertencias (warnings) que se produzcan en tiempo de programación,  o sea, antes de compilar y correr el programa.

    5. En la barra de herramientas encontraremos iconos con las funciones que más necesitaremos usar en Eclipse. Por ejemplo podremos encontrar iconos para crear un nuevo proyecto, un nuevo archivo, para depurar nuestro programa, para compilar y ejecutarlo, etc.

    6. En la barra de menú encontraremos todas las funciones disponibles de Eclipse.

    7. Los botones de perspectiva nos serán útiles cuando, por ejemplo, queramos depurar programas y poder cambiar rápidamente de una vista de programación a una vista de depuración. 

    Creando la clase principal de nuestro programa

    Como Java trabaja con el paradigma orientado a objetos, cualquier cosa que se programe, se debe hacerlo sobre algo llamado clase. Por ahora diremos que es como una especie de archivo donde escribiremos código.

    Para crear una clase (y así poder comenzar a escribir código) nos posicionamos sobre la carpeta src,  presionamos el botón derecho del mouse, seleccionamos la opción "New" y seguido de eso seleccionamos la opción "Class".


    Ahora nos aparecerá una ventana donde debemos completar los datos de la clase que se desea crear. Si bien se pueden observar varias opciones, en principio vamos a concentrarnos en solo dos de ellas. En primer lugar el nombre de la clase, y aquí hay que prestar atención en algo.

    Por convención de escritura, las clases se escriben siempre comenzando con la primera letra de cada palabra que contenga en mayúscula. Puede contener letras y números, pero no puede contener caracteres especiales, contener espacios y se debe comenzar sí o sí con una letra. Por ejemplo, nombres de clases bien escritas son:

    MiClase
    Mi1erPrograma
    MiProgramaNumero2

    Nombres de clases mal escritas que producirán error son:

    1er programa
    esto-es-una-clase
    -HolaMundo!

    Nombre de clases que no producirán error pero que no siguen las convenciones de escritura son:

    primerprograma
    miClase
    MiPRIMERPrograma

    Por lo tanto vamos a nombrar a nuestra clase Principal

    Luego otro aspecto importante es marcar la casilla que dice public static void main(String[] args) que sirve para que Eclipse nos cree automáticamente el método (sinónimo de función) main que es el método principal en donde programaremos en principio.



    Por último, hacemos clic sobre el botón Finish y se creará la clase.

    Estructura de un programa en JAVA

    Una vez hecho lo anterior, veremos en el editor de código la clase que acabamos de crear, y sobre la cual programaremos nuestro primer programa.


    1- Pestaña indicando la clase que se esta viendo en este momento en el editor de código. Cuando trabajemos con muchas clases veremos una al lado de la otra y podremos ver el código de cada una de estas clases haciendo clic sobre la pestaña correspondiente. Tenemos la opción de cerrarla haciendo clic sobre la X, y en el caso que se muestre un asterisco (*) es porque no hemos guardado los cambios que hicimos sobre la clase.

    2- Numeración de las líneas de código que se van escribiendo. Nos va a servir en particular cuando tengamos algún error y eclipse nos lo indique diciendo algo como "tenes un error en la línea 493".

    3- Cuerpo de la clase. En la clase que creamos recientemente vamos a poder escribir todos los métodos que queramos y también definir atributos (sinónimo de variable). Cada vez que se crea una clase debe comenzar siempre por la palabra reservada public seguido de la palabra reservada class y seguido del nombre que le hayamos puesto. Luego se abre mediante una llave "{" se escribe todo el código correspondiente a esa clase y se finaliza la misma con otra llave de cierre "}".

    4- Cuerpo del método main. Si algún lector ha programado en lenguajes como por ejemplo c, sabrá de antemano que mi programa tiene que tener si o si, el método main. El método main es el método principal del programa, y este es el primer método en ser ejecutado en todo mi programa. Si el método main no fuera escrito, o no tuviera código, nuestro programa no haría absolutamente nada.
    Si bien aprendimos como hacer para que Eclipse escriba el método main automáticamente, nunca hay que dejar que un IDE haga todo por nosotros, ya que si en algún momento de nuestras vidas no tuvieramos un IDE que nos autocomplete este tipo de código, Y ESE MOMENTO PUEDE SER POR EJEMPLO EN UNA ENTREVISTA LABORAL, como programadores no seríamos competentes, por tanto no viene mal aprenderse la estructura, por lo menos de memoria por el momento. El método main comienza con la palabra reservada public, seguida de la palabra reservada static, seguida del tipo de dato void, seguida del nombre del método que es main y entre parentesis un atributo del tipo de dato String  que en este caso es un array por tener a continuación los corchetes "[]" con el nombre args. Al cerrar paréntesis se abre una llave "{", se escribe todo el código que queramos que nuestro programa realice, y terminamos el método con una llave de cierre "}".

    5- La doble barra // es una de las formas para escribir comentarios en Java. En este caso, comentarios de una sola línea. Esto lo pone Eclipse al escribirnos el código del método main de manera automática Estos comentarios tienen algo particular, y es que al principio llevan la palabra TODO la cual esta coloreada diferente al resto del comentario. Esto es porque TODO (to do en inglés: tarea pendiente) es una palabra reservada de Java y sirve para guardar tareas que quedan por hacer, en una lista que se guarda junto a nuestro programa.

    6- Éste icono indica que en esta línea de código hay una tarea que marcamos para que sea realizada en algún momento.

    Aclaración mucho muy importante

    Para guardar los cambios realizado se puede ir al menú "File" y luego hacer clic en la opción "Save", o bien mediante el atajo "Ctrl+S" (Comand+S en MacOS). Siempre, siempre, siempre guarden cada vez que hacen pequeñas modificaciones. Es una costumbre que todo programador debe adoptar. Por más pequeña que sea la modificación es preferible guardar a que por algún error del sistema se terminen perdiendo los cambios. En mi caso adopte tanto la costumbre que presiono ctrl+s por cada línea nueva de programación que hago.


    Primer programa en JAVA

    Nuestro primer programa, como cualquier otro primer programa en cualquier otro lenguaje, va a ser el de mostrar un mensaje por consola. Para eso borraremos el comentario // TODO Auto-generated method stub y en su lugar escribiremos System.out.println("Hola JAVA");
    Nos quedará algo como esto:
     public class Principal {
     public static void main(String[] args) {
      System.out.println("Hola JAVA");
     }
    }
    
    
    Nota: Java distingue entre mayúsculas y minúsculas, por lo cual no es lo mismo poner "System.out.println("");" que "system.out.println("");", ya que si lo escribimos de la segunda manera Java nos acusará error.

    Para comprobar que funciona podemos ir a la barra de menú hacer clic en Run, y luego en la opción Run, también podemos hacer lo mismo con el atajo "ctrl+F11",  o bien desde la barra de herramientas, sobre el icono de color verde con una flecha blanca apuntando a la derecha.


    Esto lo que hace es compilar el programa, y luego ejecutarlo. Veremos en la consola el resultado.


    Antes de continuar haremos un ejercicio para ver el equivalente de lo que hace Eclipse en este paso. El ejercicio constará en compilar y ejecutar el programa recién escrito mediante la consola de comando del sistema operativo. Por lo tanto abrimos la consola de comando del sistema y nos dirigimos a la ruta donde esta guardado el archivo de clase .java que corresponde al código de nuestro programa. En el caso de contar con windows abrimos la consola de comando escribiendo CMD en inicio y dando a la tecla Enter.

    Una vez en el Símbolo del sistema tengo que navegar hasta la ruta de mi programa que en mi caso lo tengo en D:\Clases\HolaMundo\src


    Partiendo desde la imagen mostrada arriba, escribo:
     D:
    
    
     cd Clases/HolaMundo/src
    
    
    Ahora que ya estoy posicionado en la carpeta donde se encuentra mi archivo Principal.java que es el que contiene el código de mi programa lo voy a compilar escribiendo:
     javac Principal.java
    
    


    Y si vamos a la carpeta donde se encuentra nuestro archivo Principal.java veremos que al compilarlo se generó el archivo Principal.class, que es el archivo que tiene el bytecode de nuestro programa y el que ejecutaremos. Para ejecutar el programa compilado debemos escribir:
     java Principal
    
    
    Al darle Enter veremos en la consola de comando la frase Hola JAVA. 


    Todo este proceso nos sirve para entender que hace Eclipse cuando apretamos sobre el botón Run.

    Hablemos un poco más del println

    Hasta ahora hemos realizado un programa que muestra un mensaje por pantalla sin explicar demasiado la línea del println ya que muchos habrán asumido que si entre paréntesis, y encerrado entre comillas, escribimos cualquier mensaje, éste se mostrará en la consola de Java, y efectivamente no se equivocaron si es lo que asumieron. Pero profundicemos un poco más en esta línea de código, ya que cómo he mencionado varias veces, mi idea es hacer énfasis en el por qué de las cosas, incluso en una línea que parece tan simple como la que acabamos de escribir.

    En primer lugar println viene de print line (imprimir línea). Éste método muestra lo que nosotros le indiquemos que debe mostrar, y luego hace un salto de línea, o sea que, cuando vuelvo a hacer otro println, éste último se mostrará en una línea debajo de la anterior. Para los que conozcan algo del lenguaje C habrán usado la función printf, que viene de print format (imprimir formato), y lo que hace es imprimir por consola una cadena en algún formato que le indiquemos, que también existe en Java, y su uso se detallará más adelante en otra entrega de este curso. Por otro lado también se encuentra el método print (imprimir) que sirve para mostrar un mensaje por consola pero a diferencia del primero no hace un salto de línea al final de lo que se muestra, por si escribo otro print, lo que muestre en este último, se hará a continuación del anterior sin ningún salto de línea.

    En segundo lugar, y como hemos mencionado, println (así también como print y printf) es un método (también conocido como función para los que han programado en otros paradigmas). Si bien no hemos visto métodos diremos que es una rutina de código, que recibe algún tipo de dato, que se le indica entre paréntesis, luego de escribir el nombre del método, y que hace algún tipo de operación con el o los datos que le enviamos. Entonces, si miramos mejor a nuestro método println, quizás ahora sí lo veamos con forma de método:

    println("Hola Java"); traducido a nuestro idioma quiere decir que llamamos a una subrutina de código conocido como método, para llamar a este método se indica el nombre del método que se quiere ejecutar, en este caso el método llamado println, luego entre paréntesis se le pasa algún tipo de dato, en este caso se le pasa una cadena de caracteres, que conforman la frase Hola Java, internamente este método tendrá código de programación para hacer que finalmente el dato que le pase al método, sea mostrado en la consola.

    Así como en este caso le hemos pasado una cadena de caracteres para que muestre por consola, también podríamos pasarle un valor numérico para mostrar e incluso una combinación de ambos.
     System.out.println(1);
     System.out.println("Hola tengo " + 20 + " años de edad");
    
    
    Podemos seguir analizando código y ver que, cuando se pasa un valor numérico se hace sin comillas dobles, mientras que cuando se pasa una cadena de caracteres se hace con comillas dobles. Por lo tanto en Java siempre que se este refiriendo a una cadena de caracteres se hará encerrando a la misma entre comillas dobles. Por otro lado, en el segundo ejemplo, se le pasa una combinación de caracteres y números,  y para hacer esta combinación se usa el operador de concatenación "+".

    Un dato no menor, y al que no mencionamos directamente es que siempre que se termina una instrucción de código se termina con un punto y coma, pero, el programa que hicimos para mostrar un mensaje por pantalla no tenía en todas y cada una de sus líneas un punto y coma al final de cada una de ellas, esto es porque no todas estas líneas son estrictamente instrucciones.

    Instrucciones y estructuras de control

    Una instrucción de código, o sentencia, es una orden que se le da al procesador. La orden puede ser ejecutar un método, realizar una suma, guardar un dato en memoria, etc. En el ejemplo anterior, había líneas de código que no terminaban con punto y coma ";", y esto es básicamente porque no son instrucciones de código sino que son estructuras de control. Una estructura de control determina la secuencia y el orden de ejecución de las instrucciones de código de un programa. Estos, por lo general (hablando particularmente de Java) llevan al final una llave de apertura "{", para indicar el código a ejecutar en el caso de cumplir con la estructura de control, y una llave de cierre "}" para indicar el fin de la estructura. En base a esto podemos ver ahora, a nuestro simple código que muestra un simple mensaje por consola, con otros ojos. 

    Un detalle que no quiero dejar pasar es el de como se escribe un método. Aprovechando que se habló de convenciones de escritura y de métodos, la regla para escribir un método es la siguiente: 

    La primera palabra que conforma al nombre de un método se escribe en su totalidad en minúscula. Si el método contiene dos o más palabras, a partir de la segunda palabra, cada una de estas se escribirá con su primer letra en mayúscula. En otro aspecto sigue las mismas reglas que al escribir el nombre de una clase, el cual debe comenzar con una letra, no puede comenzar con un número, no puede contener espacios y tampoco caracteres especiales. Además de todo esto, ya que un método es una acción a realizar, se debe poner como nombre un verbo que sea descriptivo de la acción que realiza ese método. 

    Por ejemplo, nombres de métodos bien escritos son: 

    mostrarMensaje(); 
    realizarOperacion(); 
    dibujarGrafico(); 

    Nombres de métodos mal escritos que producirán error son: 

    reproducir musica(); 
    CalcularRA!zCuadrada?(); 
    1determinaraltura(); 

    Nombre de métodos que no producirán error pero que no siguen las convenciones de escritura son:

    pedroSanchez(); 
    ajustarcontenido(); 
    RealizarAccion();

    Por último voy a preguntar: ¿han notado que todo este tiempo hablamos de métodos como por ejemplo println, printf y print, pero que en realidad cuando se quiere llamar al método println, por nombrar a uno de ellos se debe anteponer System.out.

    Dejaremos la respuesta para otra entrega del curso ya que por el momento tienen bastante información para procesar después de analizar un montón de cosas por un simple mensaje que se muestra en la consola de Java

    En la próxima entrega veremos como personalizar la apariencia de Eclipse para que empecemos a prepararnos para pasar largas horas programando frente a la pantalla de la computadora.


    ANTERIOR
    7. Instalación de JAVA y Eclipse
    SIGUIENTE
    9. Personalizar el entorno de Eclipse

    Autor: Pablo Jasinski

    Profesor en Escuela Técnica UBA y Escuela Técnica Nº35, especializado en materias de programación, arquitectura de las computadoras y redes. Profesional en el área de programación y desarrollo de videojuegos.

    No hay comentarios