Aprende Java desde cero - Introducción a la Programación #2

Aprende Java desde cero – Introducción a la Programación #2

En esta primera parte de Aprende Java desde cero vamos a ver como es la estructura y funcionamiento de un programa.También vamos a ver los conceptos básicos de la programación, como es la estructura de los programas y su funcionamiento.

¿Qué es un programa?

Un programa es un conjunto de instrucciones que se le proporcionan a un ordenador que pueda interpretarlas para que realice la tarea determinada con la que se ha desarrollado el programa.

Tipos de lenguajes

  1. Lenguaje de programación. Es un lenguaje artificial que se ha diseñado para indicar las instrucciones que ha de seguir un ordenador. Los lenguajes de programación son artificiales ya que es difícil interpretar acciones precisas con un lenguaje natural (el que utilizamos las personas para comunicarnos).
  2. Lenguaje máquina. Es el lenguaje que el ordenador entiende directamente.
    • Se expresan en código binario.
    • Los datos se referencian a través de la memoria donde se encuentran, es decir, no se utilizan nombres de variables.
    • No se pueden escribir comentarios.
    • Cada procesador tiene su propio programa escrito por lo que no funcionará en otro distinto.
  3. Lenguaje ensamblador. Tiene como finalidad substituir el lenguaje máquina por uno más fácil de entender para nosotros.
  4. Lenguaje de alto nivel. Al igual que el lenguaje ensamblador el de alto nivel es un lenguaje de programación que es más fácil de entender para el ser humano con la característica de que se puede interpretar desde ordenadores con diferentes arquitecturas y que una instrucción en lenguaje de alto nivel puede equivaler a varias de lenguaje máquina.

Tipos de traductores

  1. Compiladores. Traduce completamente un programa fuente (aquel que está escrito en lenguaje de alto nivel) y genera un programa objeto escrito en lenguaje de bajo nivel.
    • El compilador informa al usuario cuando ha habido algún error en el código fuente del programa por lo que el objeto solo se crea si no ha habido ningún error en el proceso.
    • El programa objeto se guarda en un fichero que se podrá ejecutar sin tener que volver a traducirlo (fichero .jar en Java).
  2. Interpretes. Permite que el programa fuente se traduzca mientras se ejecuta sentencia a sentencia. Por ejemplo cuando hacemos una aplicación en Java que pide al usuario que escriba una cadena de texto pero este introduce números.

Proceso de Compilación en Java - Introducción a la Programación

Ciclo de vida

Es el proceso que se sigue des de el planteamiento de un problema hasta que se tiene una solución instalada en el equipo funcionando hasta que sea de utilidad.

  1. Fase de diseño
    • Análisis (especificaciones)
    • Diseño (algoritmo)
    • Implementación (programa)
  2. Fase de instalación
    • Edición (programa fuente)
    • Compilación (programa objeto)
    • Montaje (programa ejecutable)
    • Prueba de ejecución (aplicación)
    • Explotación y mantenimiento

¿Qué es Java?

Es un lenguaje de programación de propósito general por lo que es válido para desarrollar cualquier tipo de aplicación profesional.

Los programas "ejecutables" creados por el compilador son independientes de la arquitectura por lo que se pueden ejecutar en una gran variedad de dispositivos.

Características

  • Es orientado a objetos. Esto quiere decir que Java permite además de usar los objetos que lleva ya incorporados nos permite crear nuestros propios objetos. Por ejemplo: tenemos una Persona que tiene varios atributos como el nombre, apellido, teléfono, etc. Esto permite usar ese objeto (Persona). Más adelante veremos como funcionan.
  • Funciona en red. Esto quiere decir que podemos conectar varios ordenadores mediante Java ya sea usando Sockets Stream o Datagrama o conexiones a bases de datos.
  • Utiliza la mayoría de características de los lenguajes modernos evitando sus inconvenientes como los de C++.
  • Tiene una gran funcionalidad gracias a sus librerías (clases).
  • El programador no tiene que utilizar punteros aunque Java ya lo hace de forma interna.

¿Es compilado o interpretado?

  • Aunque estrictamente hablando es interpretado, necesita un proceso previo de compilación.
  • Una vez compilado se crea un fichero que guarda bytecodes (prácticamente a nivel de lenguaje máquina).
  • Para poder ejecutar ese fichero es necesario utilizar un intérprete que es JVM (Java Virtual Machine).
  • Se puede compilar en un equipo Linux y ejecutar en Windows y viceversa.
  • La JVM se encarga de leer los bytecodes y traducirlos a instrucciones ejecutables directamente en un procesador de la forma más eficiente.

Entorno de desarrollo (JDK)

Es la herramienta básica para comenzar a desarrollar aplicaciones. Consiste en un compilador y un intérprete (JVM) para la línea de comandos.

Contiene:

  • Compilador. javac.exe
  • Depurador. jdb.exe
  • Intérprete. java.exe y javaw.exe
  • Visualizador de applets. appletviewer.exe
  • Generador de documentación. javadoc.exe
  • Desensamblador de clases. javap.exe
  • Generador de archivos fuente y cabecera. javah.exe

Entorno de Desarrollo Integrado

Un IDE (Integrated Development Environment) es una herramienta que integra todo lo necesario para poder generar aplicaciones de forma más fácil.

Algunos ejemplos son:

Estructura de Java

Todos los programas en Java siguen la misma estructura que consiste en un fichero (fichero.java) que contiene el código de programa.

Dentro de este fichero tenemos una clase que puede contener uno o más métodos los cuales estos tienen una serie de sentencias que realizan una función concreta. Por ejemplo: tenemos una clase que se llama Números y ésta a su vez tiene dos métodos; uno llamado sumar y otro restar a los que le pasamos unos números y sus sentencias se encargarán de realizar sus respectivas operaciones.

Estructura de Java - Introducción a la Programación

public class MiClase {
    public static void main(String[] args) {
        System.out.print("Hola mundo!");
    }
}

Aquí va el primer pedazo de código después de un largo tostón de teoría. 😪

Estructura de la Clase

Como podemos ver es una clase public lo que quiere decir que todos puede acceder a ella.

Hay cuatro tipos de acceso a las clases:

  • Public. Todos la pueden ver.
  • Private. Solo se puede acceder desde la misma clase, es decir, si tenemos un método private en una clase no se podrá acceder des de otras clases aunque sean del mismo package.
  • Package Private.  Equivale a no poner nada antes de class. Es similar a private pero con la pequeña diferencia de que si lo pueden ver des de el mismo paquete.
  • Protected. Cuando indicamos que una clase es protected es igual que Package private pero además pueden verlo otras subclases.
Niveles de acceso
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N

Estructura del método

Después tenemos el método public static void main(String[] args) {} que es el método que normalmente hay en la clase principal el cual es el primero en ejecutarse al ejecutar el programa.

El método es un pequeño programa dentro de nuestra clase que realiza una función específica para la cual lo creamos y que se puede reutilizar tantas veces como queramos.

Cuando declaramos un método con uno o varios parámetros entre los paréntesis estamos indicando que ese método cuando lo llamemos (nombreDelMetodo(arg1, arg2)) tendremos que pasarle esos argumentos y que sean del mismo tipo. Por ejemplo:

static void sumar(int numero1, int numero2) {
    numeroTotal = numero1 + numero2;
}

static int sumar(int numero1, int numero2) {
    return numero1 + numero2;
}

//Los dos primeros métodos se llamarían con sumar(5, 6);
//Cuando un método no tiene argumentos usamos sumar();

 Los comentarios (apuntes que podemos poner en el código que no afectan al programa) se pueden escribir con "//" para cada línea o con "/*" que comentará todo hasta llegar a la etiqueta que lo cierra "*/"

Tipos de métodos
  • Void. Como el propio nombre indica es un método "vacío" (no literalmente) lo que quiere decir que este método no tendrá ningún tipo de valor return.
  • Int, String, Objetos... Cuando declaramos un método de este tipo estamos indicando que ese método devolverá un valor de ese tipo como en el segundo método del código anterior que tiene un int. Podemos apreciar que ese método tiene un return que es el resultado que devolverá ese método.
¿Cómo se guardan los resultados de un método con return?
int resultado;

resultado = sumar(5, 3);

Podemos ver que tenemos una variable de tipo int la cual utilizamos para guardar el resultado del método.

Cuando queremos guardar un elemento en una variable usamos la sentencia "=" lo que quiere decir que estamos indicando que en la variable resultado ahora tendremos el resultado del método en este caso.

Int es un tipo de variable para números enteros, String para cadenas de texto, double para número decimales, etc.

¿Cómo se muestran los elementos por pantalla?

Para mostrar cualquier cosa (en formato de texto) se utiliza System.out.print(); el cual nos mostrará en la consola del programa cualquier cosa que le hayamos indicando.

System.out.print("Hola mundo!");
System.out.println("Hola mundo!");
//Cuando utilizamos println estamos indicando que queremos que lo muestre en una línea nueva (salto de línea)

//Para imprimir variables simplemente las indicamos entre los paréntesis
System.out.print("Resultado: "+sumar(5, 3));

//Ejemplo de cadena concatenada
String cadena = "Texto 1";
cadena = cadena + "Texto 2";

//Lo que estamos haciendo en esta sentencia es guardar de nuevo en la variable cadena el texto que ya contiene con ele texto concatenado nuevo por lo que ahora cadena tendrá guardado "Texto 1Texto 2";

 Para concatenar cadenas de texto (String) utilizamos "+" (como si tratásemos de sumar dos cadenas de texto).

Bucles

Utilizamos bucles cuando queremos repetir determinadas veces (o indefinidamente si se desea) algún método o sentencia.

Tipos de bucles

  • For. Uno de los más utilizados. Solemos usar el bucle for cuando queremos repetir algo un número finito de veces (aunque se pueden hacer infinitos).
for(int i = 0; i < 10; i++) {
    System.out.println("Número "+ i);
}

//Tenemos la variable i con valor 0 la cual realizará el bucle mientras sea menor que 10 e irá sumando +1 a la variable i con cada ciclo

Para incrementar los valores de una variable en 1 podemos utilizar nombreDeVariable++ (++ significa +1 del mismo modo que si utilizamos -- sería -1). También se puede utilizar x = x +1;

  • For each. Se suele utilizar para listas de elementos (sobretodo objetos).
ArrayList<String> lista = new ArrayList<String>();

for (String objeto : lista) {
    System.out.println(objeto);
}

//Para cada String que encuentre en a lista lo imprimirá por consola

 No tengáis en cuenta el ArrayList que es un tipo de lista que no tiene un tamaño definido a diferencia de un Array pero todo esto lo veremos más adelante.

  • While. Utilizamos while cuando queremos hacer un bucle finito pero queremos que termine cuando ocurre algún evento.
boolean evento = true;
//boolean es un tipo de variable que solo puede ser true o false (si o no)

while(evento) {
   System.out.println("Hola mundo!");
}

//Estamos indicando que queremos que imprima "Hola mundo!" mientras evento sea false
//También se puede utilizar while(evento == true)
//Para parar el bucle simplemente ponemos el evento a false;

evento = false;
  •  Do while. Es muy similar al while con la pequeña diferencia de que la comprobación se realiza al final del bucle y no al principio.

Más información sobre los bucles while do while aquí

boolean evento = true;

do {
    System.out.println("Hola mundo!");
} while(evento);

//Hará el bucle mientras evento sea verdadero
//do while se suele utilizar para repetir un menu switch case mientras los datos que el usuario introduce no son válidos

Condiciones

Cuando queremos comprobar ciertos eventos utilizamos la sentencia if. Por ejemplo si queremos comprobar que "evento" sea verdadero lo haremos de la siguiente forma:

if(evento) {
    //Aquí escribiremos lo que queremos hacer cuando evento sea verdadero
} else {
    //Aquí pondremos lo que queremos hacer en caso de que no se cumpla la condición
}

//Para hacer condiciones anidadas utilizamos else if

if(evento) {
    //TO DO
} else if(evento2) {
    //En el caso de que la primera condición no se cumpla pero queremos comprobar otra
} else {
   //Cuando ninguna de las condiciones se ha cumplido
}
Publicado en Java, Programación.

Estudiante de programación aficionado a las nuevas tecnologías y amante de los videojuegos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *